SuperAPI AI Directory

opik

Agents & models

View repository

Updated 10-15 20:14

About this skill

Opik SDK Reference

Opik is an open-source LLM observability platform. This skill covers the SDK: tracing, integrations, span types, and how to instrument code.

Core Concepts

Traces and Spans

A trace is a complete execution path (one user request → one response). Spans are individual operations within a trace, forming a hierarchy.

Span Types

Type Use For Example
general Custom operations, orchestration Data processing, agent entry point
llm LLM API calls OpenAI completion, Anthropic message
tool Tool/function execution, data retrieval Web search, vector DB query, calculator
guardrail Safety/validation checks PII detection, content moderation

These are the ONLY valid span types. Do NOT use retrieval or any other type.

Python Quick Start

import opik

@opik.track(name="my_agent", type="general")
def agent(query: str) -> str:
    context = retrieve(query)
    return generate(query, context)

@opik.track(type="tool")
def retrieve(query: str) -> list:
    return search_db(query)

@opik.track(type="llm")
def generate(query: str, context: list) -> str:
    return llm_call(query, context)

# Nested calls automatically create child spans
result = agent("What is ML?")
opik.flush_tracker()  # Flush for scripts

TypeScript Quick Start

import { Opik } from "opik";

const client = new Opik({ projectName: "my-project" });

const trace = client.trace({ name: "my-agent", input: { query: "Hello" } });
const span = trace.span({ name: "llm-call", type: "llm" });
// ... LLM call
span.end({ output: { response: "Hi!" } });
trace.end({ output: { response: "Hi!" } });

await client.flush();

Framework Integrations

Use framework-specific integrations instead of manual @opik.track when available — they capture more detail (tokens, model, cost) automatically.

For the full list of integrations with code snippets, see references/integrations.md.

Common Patterns

Wrap-the-client (OpenAI, Anthropic, Bedrock, Gemini, etc.):

from opik.integrations.openai import track_openai
client = track_openai(OpenAI())
# All calls now traced automatically

Global enable (CrewAI, DSPy, etc.):

from opik.integrations.crewai import track_crewai
track_crewai(project_name="my-project", crew=crew)  # crew= required for v1.0.0+

Callback-based (DSPy):

from opik.integrations.dspy import OpikCallback
dspy.configure(callbacks=[OpikCallback()])

Callback/tracer (LangChain, LangGraph, LlamaIndex):

from opik.integrations.langchain import OpikTracer
tracer = OpikTracer()
result = chain.invoke(input, config={"callbacks": [tracer]})

Agent-specific (Google ADK):

from opik.integrations.adk import OpikTracer, track_adk_agent_recursive
opik_tracer = OpikTracer()
track_adk_agent_recursive(agent, opik_tracer)

Detailed References

Topic Reference File
Python SDK (decorators, context, async, distributed tracing, configuration) references/tracing-python.md
TypeScript SDK (client, decorators, framework integrations) references/tracing-typescript.md
REST API (HTTP endpoints, authentication) references/tracing-rest-api.md
All integrations with code snippets references/integrations.md
Core concepts (traces, spans, threads, metadata, feedback) references/observability.md