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
157 lines
6.0 KiB
Plaintext
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
|