H Habla Agente docs

Use the platform

Playground

The Playground at /app/agents/{id}/playground is a full sandbox for testing your agent before publishing. Conversations here are flagged is_playground and never count toward your billing meter, conversation analytics, or the Inbox.

What you can test

  • Site type — switch between ecommerce, saas, documentation, help_center, marketing, internal_kb, or generic without mutating the agent's persisted column. Useful for "what would my agent say if treated as ecommerce vs documentation?".
  • Page context — paste a URL and metadata (title, description, og tags, JSON-LD, h1/h2, visible body text) so the agent answers as if the visitor were on a specific page. Six ready-made templates (Shopify product, SaaS pricing, Docusaurus docs, help-center article, marketing landing, blank) cover the common shapes.
  • Reply language — override the reply language for a playground turn. Production agents pin replies to one of nine codes (en, nl, es, fr, de, pt, ja, ar, zh). The playground picker may list additional UI chrome locales for testing; prefer the nine production reply languages when validating launch behavior.
  • Sample prompts — buyer-realistic test prompts per vertical (5–6 chips per site type) so you can fire a typical question with one click.
  • Compare mode — toggle to split the chat into two columns and run the same question against two different site types side-by-side. The differentiator for picking the right vertical.

Right-pane tabs

Scenario

Site type override + reply language + sample prompts. The capability badges below the site-type select show which rich blocks (product_card, pricing_card, case_study_card, escalation_button) the selected vertical can emit.

Note: not every capability has a widget renderer yet. Today the widget's RENDERABLE set in resources/widget/src/core/capabilities.ts only whitelists ticket_escalation (the escalation_button block). Other blocks (product_card, pricing_card, case_study_card) are emitted by the server when the LLM asks for them, but the public widget will silently drop them until their renderer is added to the RENDERABLE set + a Preact component in ui/blocks.tsx. The Playground previews them because it ships every renderer for design purposes — what you see in Playground may be richer than what your visitors see in the live widget.

Page context

Form-driven editor for the page_context the visitor would send. Use the Use template dropdown to drop in a realistic Shopify product page or Stripe pricing page, then tweak the URL / title / og fields. JSON-LD accepts pasted JSON.

Diagnostics

Read-only inspection of the last turn:

  • Latency — first-token and total time.
  • Confidence — the strongest grounding signal (retrieval similarity OR page-context baseline 0.85).
  • Retrieved sources — top-k chunks with both ANN and rerank scores plus a snippet, ordered as the LLM saw them.
  • Tool calls — every server-side tool fired during the turn, with arguments.
  • Inline blocks — count and types of rich blocks the LLM emitted (e.g. product_card).
  • System prompt — the full system message used, including the vertical fragment and any custom system prompt. Click to expand.

Endpoints

All three are session-authenticated and scoped by AgentPolicy::update:

  • GET /app/agents/{agent}/playground — Inertia render with the verticals preview map keyed by slug.
  • POST /app/agents/{agent}/playground/stream — SSE stream. Body: {message, conversation_id?, site_type_override?, language_override?, page_context?}. Emits start, retrieval, prompt, token, block, tool_call, done events.
  • POST /app/agents/{agent}/playground/reset — clears the cached conversation history. Body: {conversation_id}.

Notes

  • Playground turns reuse the same Redis history key as production widget conversations. Reset is the explicit way to start from an empty context — closing the tab leaves history in place for two hours.
  • Site-type and language overrides do not mutate the agent's persisted columns. Once you've found the combination that works, head to Site type in the agent's settings to save it.
  • Page-context payloads are sanitized server-side identically to the visitor widget — same key allow-list, same 8 KB cap, same canonical-URL collapse.