Build
Agent Chat
The playground at /playground is where you talk to agents directly. It looks like a chat app; the difference is that every message produces a trace you can inspect, and the agent runs with its full saved configuration — same tools, same guardrails, same memory as anywhere else on the platform.
Chatting with an agent#
Pick an agent from the selector and the conversation runs against its saved configuration: provider, model, system prompt, knowledge bases, skills, tools, guardrails, and memory. Conversations are persisted, so you can leave and pick a thread back up later.
- Attachments — drop images (sent to vision-capable models as image input) or documents (parsed and added to the conversation context) directly into a message.
- Citations — when the agent answers from a knowledge base, the message carries the source chunks it used, so grounded answers are visibly grounded.
- Memory chip — when long-term memory is enabled, each reply shows how many memory items were recalled (with a preview), so you can see exactly what the agent "remembered" rather than guessing.
- Fallback override — if the primary model fails, the playground offers a fallback model picker; your choice sticks for the rest of the session and is shown explicitly.
The trace behind every message#
Every response carries a trace ID, and the inspector panel opens the full execution record for any message: the resolved prompt, tool calls with their arguments and results, tokens, cost, and latency. This is the playground's real purpose — the fastest loop from "I changed something in my agent" to "I can see exactly what that change did". The same traces are queryable later from Logs & traces.
Skill-sample agents#
The first time you open the playground, a small set of sample agents built around skills is seeded into your workspace, with a short tour overlay that demonstrates how attached skills change an agent's behaviour. They are ordinary agents in your library afterwards — edit or delete them freely.
Composer controls — every button#
| Control | What it does |
|---|---|
| Attach | Attach images or documents to the turn. Text is extracted and included in the prompt; a summary is saved with the message so the history stays readable. |
| Visual BI | Generate charts from your connected tables alongside the text answer. Seeded from the agent's tools.biVisuals setting and toggleable per session. Ask for more than one — “show me 3 charts of sales”, “a couple of visuals”, “charts for revenue, cost and headcount” — and the question is split into one analytical question per visual (up to 4). A plain request still produces one chart and costs exactly what it did before. |
| PPT / Word / Excel | Generate a real, editable Office file from a prompt. See below. |
| Sample / Full data | How much data is pulled in — applies to Excel generation and the Visual BI row snapshot. |
| Model override | Swap the model for this session only. The fastest A/B test on the platform. |
| Stop generating | Cancels the in-flight turn. |
| Regenerate | Re-runs the last turn. |
| Edit & resend | Rewrite your message and rerun from that point. |
| Inspector | Live thinking, tool calls, and the full request/response for the last turn. A tool call shows its arguments and a result preview; the ML tools show their result as a person reads it — a prediction table (key columns first, model and version, keys not found, where the features came from) or the model list — and an error as the error. |
Sources under an answer#
Every answer lists what it actually drew on, grouped by kind — web links, knowledge base documents, the tables a query read, an MCP tool, or any other tool. Several kinds appear together when the answer genuinely used several.
Why it works this way
Generating documents#
| Phase | What is happening |
|---|---|
| gathering | Collecting knowledge excerpts, table schemas and samples, the recent conversation, and — if the prompt points at the internet — live web research. |
| planning | An LLM produces a typed plan for the document. |
| building | The plan is filled with real numbers and rendered into a file. |
Browser vs Deep#
| Browser · fast | Deep · slow | |
|---|---|---|
| Renders | In your browser | Server-side, native Office toolchains |
| Deck size | 16–22 slides | 24–30 slides |
| Diagram variety | ≥8 kinds | All 14 kinds, none more than twice |
| Extras | — | Contents page; render-verify pass |
| Needs | Nothing | The docgen service running — see Install & deploy |
Deep greys out when it cannot run
The finished file appears as a preview card with a thumbnail and a Download button, and is stored in a private bucket so Download still works after a reload — until the agent's chat retention window purges it.
Answering in Slack#
An agent can answer where the question is already being asked. Both ways in are configured under Integrations → Slack, and both run the agent as the workspace's owner — its prompt, tools, knowledge and guardrails, the owner's model rules and budgets, and a trace and an audit row per turn, exactly as in the app.
- Slash commands, routed per command. Point
/askat an AI Analyst and/supportat an agent; the request URL is/api/slack/command. A command with no route falls back to the workspace's analyst, which is what every installation had before routing existed. - @mentions and direct messages, answered in thread. Subscribe Event Subscriptions to
app_mentionandmessage.imat/api/slack/events, add thechat:writescope, and paste the Bot User OAuth Token into the workspace. An event carries no reply URL, so the answer goes back over Slack's Web API — which is the only reason a token is needed at all.
Why the answer is not instant, and why that is fine
Image Playground#
Experiment → Image Playground is the same idea for images: generate, edit or blend them with whatever image models your connected providers expose. Pick a provider, pick a model, write a prompt. Uploads for editing are capped at 8 MB, and results download straight from the result card.
Every run is independent
The models offered come from your own provider connections, so the list reflects what you have set up in Integrations — an empty picker means no connected provider exposes an image model, not that the feature is unavailable. Runs bill to that provider and appear in Analytics like any other model call.