UNPKG

opik

Version:

Opik TypeScript and JavaScript SDK

153 lines (115 loc) 4.12 kB
<h1 align="center" style="border-bottom: none"> <div> <a href="https://www.comet.com/site/products/opik/?from=llm&utm_source=opik&utm_medium=github&utm_content=header_img&utm_campaign=opik"><picture> <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/comet-ml/opik/refs/heads/main/apps/opik-documentation/documentation/static/img/logo-dark-mode.svg"> <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/comet-ml/opik/refs/heads/main/apps/opik-documentation/documentation/static/img/opik-logo.svg"> <img alt="Comet Opik logo" src="https://raw.githubusercontent.com/comet-ml/opik/refs/heads/main/apps/opik-documentation/documentation/static/img/opik-logo.svg" width="200" /> </picture></a> <br> Opik </div> Open source LLM evaluation framework<br> </h1> ## Installation You can install the `opik` package using your favorite package manager. ```bash npm install opik ``` ## Opik Configuration You can configure the Opik client using environment variables. `.env` file: ```bash OPIK_API_KEY="your-api-key" OPIK_URL_OVERRIDE="https://www.comet.com/opik/api" OPIK_PROJECT_NAME="your-project-name" OPIK_WORKSPACE_NAME="your-workspace-name" ``` Or you can pass the configuration to the Opik client constructor. ```typescript 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>", }); ``` ## Usage ```typescript 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(); ``` ## Vercel AI SDK Integration Opik provides seamless integration with the Vercel AI SDK through OpenTelemetry instrumentation. ### Installation Install the required dependencies: ```bash npm install opik ai @opentelemetry/sdk-node @opentelemetry/auto-instrumentations-node ``` ### Usage ```typescript import { openai } from "@ai-sdk/openai"; import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node"; import { NodeSDK } from "@opentelemetry/sdk-node"; import { generateText } from "ai"; import { OpikExporter } from "opik/vercel"; const sdk = new NodeSDK({ traceExporter: new OpikExporter(), instrumentations: [getNodeAutoInstrumentations()], }); sdk.start(); const { text } = await generateText({ model: openai("gpt-4o-mini"), prompt: "What is love? Describe it in 10 words or less.", experimental_telemetry: OpikExporter.getSettings({ name: "ai-sdk-integration", }), }); await sdk.shutdown(); ``` This integration automatically captures: - Input prompts and messages - Model responses - Token usage statistics - Tool calls and their results - Timing information - Error states All this telemetry data is automatically sent to your Opik project for analysis and monitoring. ## Contributing Contributions are welcome! If you have any suggestions or improvements, please feel free to open an [issue](https://github.com/comet-ml/opik/issues) or submit a [pull request](https://github.com/comet-ml/opik/pulls). ## License This project is licensed under the [Apache License 2.0](https://github.com/comet-ml/opik/blob/main/LICENSE).