Files
comet-ml--opik/apps/opik-documentation/documentation/fern/docs-v2/observability/agent_sandbox.mdx
T
wehub-resource-sync 5a558eb09e
TypeScript SDK Compatibility V1.x E2E Tests / Select Node version matrix (push) Has been cancelled
TypeScript SDK Compatibility V1.x E2E Tests / TypeScript SDK Compatibility V1.x E2E Tests Node ${{matrix.node_version}} (push) Has been cancelled
TypeScript SDK E2E Tests / TypeScript SDK E2E Tests Node ${{matrix.node_version}} (push) Has been cancelled
Opik Optimizer - E2E Tests / build-opik (push) Has been cancelled
TypeScript SDK Compatibility V1.x E2E Tests / build-opik (push) Has been cancelled
Python SDK E2E Tests / Select Python version matrix (push) Has been cancelled
Python SDK E2E Tests / Python SDK E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Python SDK E2E Tests / build-opik (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / Select Python version matrix (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / Python SDK Compatibility V1.x E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Python SDK Compatibility V1.x E2E Tests / build-opik (push) Has been cancelled
TypeScript SDK E2E Tests / Select Node version matrix (push) Has been cancelled
TypeScript SDK E2E Tests / build-opik (push) Has been cancelled
Opik Optimizer - E2E Tests / Opik Optimizer E2E Tests Python ${{matrix.python_version}} (push) Has been cancelled
Opik Optimizer - E2E Tests / Opik Optimizer Integration Smoke Tests (push) Has been cancelled
🐙 Code Quality / detect (push) Has been cancelled
🐙 Code Quality / lint (${{ matrix.leg.name }}) (push) Has been cancelled
🐙 Code Quality / summary (push) Has been cancelled
TypeScript SDK Library Integration Tests / Check Secrets (push) Has been cancelled
TypeScript SDK Library Integration Tests / opik-vercel (Vercel AI SDK / eve) (push) Has been cancelled
SDK Library Integration Tests Runner / Check Secrets (push) Has been cancelled
SDK Library Integration Tests Runner / Missed OpenAI API Key Warning (push) Has been cancelled
SDK Library Integration Tests Runner / Build (push) Has been cancelled
SDK Library Integration Tests Runner / openai_tests (push) Has been cancelled
SDK Library Integration Tests Runner / langchain_tests (push) Has been cancelled
SDK Library Integration Tests Runner / langchain_legacy_tests (push) Has been cancelled
SDK Library Integration Tests Runner / llama_index_tests (push) Has been cancelled
SDK Library Integration Tests Runner / anthropic_tests (push) Has been cancelled
SDK Library Integration Tests Runner / mistral_tests (push) Has been cancelled
SDK Library Integration Tests Runner / groq_tests (push) Has been cancelled
SDK Library Integration Tests Runner / aisuite_tests (push) Has been cancelled
SDK Library Integration Tests Runner / haystack_tests (push) Has been cancelled
SDK Library Integration Tests Runner / dspy_tests (push) Has been cancelled
SDK Library Integration Tests Runner / crewai_v0_tests (push) Has been cancelled
SDK Library Integration Tests Runner / crewai_v1_tests (push) Has been cancelled
SDK Library Integration Tests Runner / genai_tests (push) Has been cancelled
SDK Library Integration Tests Runner / adk_tests (push) Has been cancelled
SDK Library Integration Tests Runner / adk_legacy_1_3_0_tests (push) Has been cancelled
SDK Library Integration Tests Runner / evaluation_metrics_tests (push) Has been cancelled
SDK Library Integration Tests Runner / bedrock_tests (push) Has been cancelled
SDK Library Integration Tests Runner / litellm_tests (push) Has been cancelled
SDK Library Integration Tests Runner / harbor_tests (push) Has been cancelled
SDK Library Integration Tests Runner / Slack Notification (push) Has been cancelled
Lint Opik Helm Chart / render-equality (push) Has been cancelled
Opik Optimizer - Unit Tests / Opik Optimizer Unit Tests Python ${{matrix.python_version}} (push) Has been cancelled
Python BE E2E Tests / Python BE E2E (push) Has been cancelled
Python Backend Tests / run-python-backend-tests (push) Has been cancelled
Python SDK Unit Tests / Python SDK Unit Tests ${{matrix.python_version}} (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
SDK E2E Libraries Integration Tests / Check Secrets (push) Has been cancelled
SDK E2E Libraries Integration Tests / Missed OpenAI API Key Warning (push) Has been cancelled
SDK E2E Libraries Integration Tests / build-opik (push) Has been cancelled
SDK E2E Libraries Integration Tests / E2E Lib Integration Python ${{matrix.python_version}} (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-gemini) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-langchain) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-openai) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-otel) (push) Has been cancelled
TypeScript SDK Integration Build & Publish / build-and-publish (opik-vercel) (push) Has been cancelled
TypeScript SDK Build & Publish / build-and-publish (push) Has been cancelled
TypeScript SDK Unit Tests / Test on Node ${{ matrix.node-version }} (push) Has been cancelled
Backend Tests / discover-tests (push) Has been cancelled
Backend Tests / ${{ matrix.name }} (push) Has been cancelled
Build and Publish SDK / build-and-publish (push) Has been cancelled
Build Opik Docker Images / set-version (push) Has been cancelled
Build Opik Docker Images / build-backend (push) Has been cancelled
Build Opik Docker Images / build-sandbox-executor-python (push) Has been cancelled
Build Opik Docker Images / build-python-backend (push) Has been cancelled
Build Opik Docker Images / build-frontend (push) Has been cancelled
Build Opik Docker Images / create-git-tag (push) Has been cancelled
ClickHouse Migration Cluster Check / validate-clickhouse-migrations (push) Has been cancelled
Docs - Publish / run (push) Has been cancelled
E2E Tests - Post Merge (v2) / 🧪 E2E v2 Tests (${{ github.event.inputs.tier || 't1' }}) (push) Has been cancelled
E2E Tests - Post Merge (v2) / 📢 Slack Notification (push) Has been cancelled
Frontend Unit Tests / Test on Node 20 (push) Has been cancelled
Guardrails E2E Tests / Select Python version matrix (push) Has been cancelled
Guardrails E2E Tests / Guardrails E2E Tests ${{matrix.python_version}} (push) Has been cancelled
Guardrails E2E Tests / 📢 Slack Notification (push) Has been cancelled
Guardrails Backend Unit Tests / Guardrails Backend Unit Tests (push) Has been cancelled
Guardrails Backend Unit Tests / 📢 Slack Notification (push) Has been cancelled
Lint Opik Helm Chart / lint-helm-chart (Helm v3.21.0) (push) Has been cancelled
Lint Opik Helm Chart / lint-helm-chart (Helm v4.2.0) (push) Has been cancelled
Lint Opik Helm Chart / unittest-helm-chart (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:25:44 +08:00

157 lines
6.0 KiB
Plaintext

---
headline: Agent Playground | Opik Documentation
og:description: Run agents locally while connected to Opik for full tracing, debugging,
and observability
og:site_name: Opik Documentation
og:title: Agent Playground — Opik
title: Agent playground
---
The Agent Playground lets you run agents on your local machine while connected to Opik. Every agent
execution is fully traced — you get LLM calls, latencies, token usage, and the complete execution
graph, all visible in the Opik UI.
Beyond running your agent, the playground lets you tweak prompts and parameters from the
[Prompt Library](/development/prompt-library/overview) without changing your code. Once
you're happy with the results, save the new configuration and your agent picks it up automatically.
<video
src="/img/v2/observability/agent-sandbox-demo.mp4"
width="854"
height="480"
autoPlay
muted
loop
playsInline
preload="auto"
/>
## Getting started
<Steps>
<Step title="Mark your agent as an entrypoint">
Mark your agent's main function as an entrypoint. Opik automatically detects the function
signature and registers it as a runnable agent.
<CodeBlocks>
```python title="Python"
import opik
@opik.track(entrypoint=True, project_name="my-agent")
def my_agent(query: str, max_results: int = 5) -> str:
# Your agent logic here
return result
```
```ts title="TypeScript"
import { track } from "opik";
const myAgent = track(
{
entrypoint: true,
name: "my-agent",
params: [
{ name: "query", type: "string" },
{ name: "maxResults", type: "number" },
],
},
async (query: string, maxResults: number = 5): Promise<string> => {
// Your agent logic here
return result;
}
);
```
</CodeBlocks>
Parameter types are displayed as input fields in the UI. In Python they are inferred from
type hints; in TypeScript, provide them explicitly via the `params` option.
</Step>
<Step title="Start the playground">
```bash
opik endpoint --project my-agent -- python3 my_agent.py
```
The CLI validates that an entrypoint exists, opens a browser-based pairing flow, registers
your agents, and begins polling for jobs.
<Tip>
The `opik` CLI is distributed as a Python package. Install it with `pip install opik` —
this is required even if your agent is written in TypeScript.
</Tip>
</Step>
<Step title="Talk to your agent">
Once connected, the UI shows your runner and its registered agents. Select an agent, fill in
the input parameters, and click **Run**. The agent executes locally on your machine, and the
results — along with the full trace — appear in the UI.
</Step>
<Step title="Iterate on prompts and parameters">
Switch to the **Configuration** tab in the Agent Playground page to adjust prompts, model
parameters, or tool definitions — without leaving the playground and without changing your code.
Your changes aren't saved yet. Run your agent again and the playground uses the unsaved
configuration, so you can see the impact immediately. Try different prompts, compare results
across runs, and only save the configuration once you're satisfied. Your agent picks up the
new settings automatically.
</Step>
</Steps>
## What happens in the playground
<Frame>
<img src="/img/v2/observability/agent-sandbox.png" alt="Agent Playground UI showing a connected runner with input fields and execution results" />
</Frame>
Every run in the playground produces a full trace — every LLM call, tool invocation, and sub-step is
captured as spans with inputs, outputs, latencies, and token costs. Logs from your running agent
stream to the UI in real time, so you can watch execution as it happens.
The playground monitors your runner with a heartbeat and updates its status automatically if it
disconnects. When `--watch` is enabled, file changes are detected and your agents are
re-registered without restarting the process. For CI or programmatic setups, use `--headless` to
skip the browser pairing flow entirely.
## Troubleshooting
**"No entrypoint found" error**
Make sure at least one function is decorated with `@opik.track(entrypoint=True)` in Python or
`track({ entrypoint: true }, fn)` in TypeScript. The entrypoint must be discoverable from the
current working directory.
**Pairing times out**
The browser pairing session expires after 5 minutes. Re-run the command to generate a new session.
Make sure your Opik environment variables are set correctly — see
[Getting started with Observability](/tracing/getting-started) for configuration details.
**Runner disconnects**
Opik uses heartbeat monitoring to detect disconnects. If your runner shows as disconnected in the
UI, check that the process is still running locally and that your network connection is stable.
## FAQ
<AccordionGroup>
<Accordion title="What is the difference between opik connect and opik endpoint?">
They serve different purposes:
- **`opik connect`** starts a lightweight bridge daemon that gives [Ollie](/ollie)
remote access to your repository. Ollie can then read your source files, propose code
changes, and rerun your agent — all from the Opik UI. It does not run your agent process
itself.
- **`opik endpoint`** runs your agent process and connects it to the Agent Playground. You can
submit inputs from the UI, see results with full traces, and iterate on your
[Prompt Library](/development/prompt-library/overview) without changing code.
You can use both at the same time: `opik endpoint` to run and test your agent in the playground,
and `opik connect` to let Ollie inspect and edit your code.
</Accordion>
</AccordionGroup>
## Next steps
- [Ollie](/ollie) — Use Ollie with `opik connect` to debug and improve your agent's code
- [Debugging agents with Ollie](/tracing/debug-agents) — The debug-fix-verify workflow
- [Getting started with Observability](/tracing/getting-started) — Configure your Opik environment