Opik TypeScript SDK
The Opik TypeScript SDK provides a powerful and easy-to-use interface for tracing, monitoring, and debugging your JavaScript and TypeScript applications. It offers comprehensive observability for LLM applications, agent workflows, and AI-powered systems.
Integrations
Section titled “Integrations”Opik provides seamless integrations with popular JavaScript/TypeScript frameworks and libraries:
Frameworks:
- Agno - Trace and monitor your Agno AI agent applications
- BeeAI - Trace and monitor your BeeAI agent applications
- LangChain - Trace and monitor your LangChain applications, including chains, agents, tools, and retrievers
- Mastra - Trace and monitor your Mastra AI applications
- Vercel AI SDK - Integrate Opik with Vercel AI SDK for monitoring AI-powered applications
Model Providers:
- Cloudflare Workers AI - Trace and monitor your Cloudflare Workers AI applications
- Gemini - Trace and monitor your applications using the Google Generative AI Node.js SDK
- OpenAI - Trace and monitor your applications using the official OpenAI Node.js SDK
For a complete list of TypeScript/JavaScript integrations and other language integrations, see the Integrations Overview.
Installation
Section titled “Installation”Option 1: Using the Opik TS (Recommended)
Section titled “Option 1: Using the Opik TS (Recommended)”The fastest way to get started is using the Opik TS, an interactive CLI tool that sets up Opik automatically in your project:
npx opik-ts configureThe CLI will:
- Detect your project setup
- Install Opik SDK and integration packages
- Configure environment variables
- Set up Opik client for your LLM integrations
Option 2: Manual Installation
Section titled “Option 2: Manual Installation”You can also install the opik package manually using your favorite package manager:
npm install opikOpik Configuration
Section titled “Opik Configuration”You can configure the Opik client using environment variables.
export OPIK_API_KEY="your-api-key"
# If running on Opik Cloud
export OPIK_URL_OVERRIDE="https://www.comet.com/opik/api"
# If running locally
export OPIK_URL_OVERRIDE="http://localhost:5173/api"
export OPIK_PROJECT_NAME="your-project-name"
export OPIK_WORKSPACE="your-workspace-name"Or you can pass the configuration to the Opik client constructor.
import { Opik } from "opik";
const client = new Opik({
apiKey: "<your-api-key>",
apiUrl: "https://www.comet.com/opik/api",
projectName: "<your-project-name>",
workspaceName: "<your-workspace-name>",
});import { Opik } from "opik";
// Create a new Opik client with your configuration
const client = new Opik();
// Log 10 traces
for (let i = 0; i < 10; i++) {
const someTrace = client.trace({
name: `Trace ${i}`,
input: {
prompt: `Hello, world! ${i}`,
},
output: {
response: `Hello, world! ${i}`,
},
});
// For each trace, log 10 spans
for (let j = 0; j < 10; j++) {
const someSpan = someTrace.span({
name: `Span ${i}-${j}`,
type: "llm",
input: {
prompt: `Hello, world! ${i}:${j}`,
},
output: {
response: `Hello, world! ${i}:${j}`,
},
});
// Some LLM work
await new Promise((resolve) => setTimeout(resolve, 100));
// Mark the span as ended
someSpan.end();
}
// Mark the trace as ended
someTrace.end();
}
// Flush the client to send all traces and spans
await client.flush();