Files
comet-ml--opik/apps/opik-documentation/documentation/fern/docs/tracing/sdk_configuration.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

547 lines
18 KiB
Plaintext

---
headline: SDK configuration | Opik Documentation
og:description: Configure Python and TypeScript SDKs effectively. Set up your API
key and instance URL for seamless routing and authentication.
og:site_name: Opik Documentation
og:title: SDK Configuration Guide - Opik
title: SDK configuration
canonical-url: https://www.comet.com/docs/opik/tracing/advanced/sdk_configuration
---
# SDK Configuration
This guide covers configuration for both Python and TypeScript SDKs, including basic setup, advanced options, and debugging capabilities.
## Getting Started
### Python SDK
The recommended approach to configuring the Python SDK is to use the `opik configure` command. This will prompt you to set up your API key and Opik instance URL (if applicable) to ensure proper routing and authentication. All details will be saved to a configuration file.
<Tabs>
<Tab value="Opik Cloud" title="Opik Cloud">
If you are using the Cloud version of the platform, you can configure the SDK by running:
```python
import opik
opik.configure(use_local=False)
```
You can also configure the SDK by calling [`configure`](https://www.comet.com/docs/opik/python-sdk-reference/cli.html) from the Command line:
```bash
opik configure
```
</Tab>
<Tab value="Self-hosting" title="Self-hosting">
If you are self-hosting the platform, you can configure the SDK by running:
```python
import opik
opik.configure(use_local=True)
```
or from the Command line:
```bash
opik configure --use_local
```
</Tab>
</Tabs>
The `configure` methods will prompt you for the necessary information and save it to a configuration file (`~/.opik.config`). When using the command line version, you can use the `-y` or `--yes` flag to automatically approve any confirmation prompts:
```bash
opik configure --yes
```
### TypeScript SDK
For the TypeScript SDK, configuration is done through environment variables, constructor options, or configuration files.
**Installation:**
```bash
npm install opik
```
**Basic Configuration:**
You can configure the Opik client using environment variables in a `.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="your-workspace-name"
```
Or pass configuration directly to the 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>",
});
```
## Configuration Methods
Both SDKs support multiple configuration approaches with different precedence orders.
### Configuration Precedence
**Python SDK:** Constructor options → Environment variables → Configuration file → Defaults
**TypeScript SDK:** Constructor options → Environment variables → Configuration file (`~/.opik.config`) → Defaults
### Environment Variables
Both SDKs support environment variables for configuration. Here's a comparison of available options:
| Configuration | Python Env Variable | TypeScript Env Variable | Description |
| ------------------- | ---------------------------- | ----------------------- | ---------------------------------------------- |
| API Key | `OPIK_API_KEY` | `OPIK_API_KEY` | API key for Opik Cloud |
| URL Override | `OPIK_URL_OVERRIDE` | `OPIK_URL_OVERRIDE` | Opik server URL |
| Project Name | `OPIK_PROJECT_NAME` | `OPIK_PROJECT_NAME` | Project name |
| Workspace | `OPIK_WORKSPACE` | `OPIK_WORKSPACE` | Workspace name |
| Config Path | `OPIK_CONFIG_PATH` | `OPIK_CONFIG_PATH` | Custom config file location |
| Default LLM | `OPIK_DEFAULT_LLM` | N/A | Default model used by Python evaluation/simulation helpers |
| Track Disable | `OPIK_TRACK_DISABLE` | `OPIK_TRACK_DISABLE` | Disable tracing of traces and spans |
| Flush Timeout | `OPIK_DEFAULT_FLUSH_TIMEOUT` | N/A | Default flush timeout (Python only) |
| TLS Certificate | `OPIK_CHECK_TLS_CERTIFICATE` | N/A | Check TLS certificates (Python only) |
| Batch Delay | N/A | `OPIK_BATCH_DELAY_MS` | Batching delay in ms (TypeScript only) |
| Hold Until Flush | N/A | `OPIK_HOLD_UNTIL_FLUSH` | Hold data until manual flush (TypeScript only) |
| Console Log Level | `OPIK_CONSOLE_LOGGING_LEVEL` | N/A | Console log level (Python only) |
| File Log Level | `OPIK_FILE_LOGGING_LEVEL` | N/A | File log level (Python only) |
| Optimizer Log Level | `OPIK_OPTIMIZER_LOG_LEVEL` | N/A | Opik Optimizer SDK log level (Python only) |
| Log Level | N/A | `OPIK_LOG_LEVEL` | Logging level (TypeScript only) |
### Using .env Files
Both SDKs support `.env` files for managing environment variables. This is a good practice to avoid hardcoding secrets and to make your configuration more portable.
**For Python projects**, install `python-dotenv`:
```shell
pip install python-dotenv
```
**For TypeScript projects**, `dotenv` is automatically loaded by the SDK.
Create a `.env` file in your project's root directory:
```dotenv
# Opik Configuration
OPIK_API_KEY="YOUR_OPIK_API_KEY"
OPIK_URL_OVERRIDE="https://www.comet.com/opik/api"
OPIK_PROJECT_NAME="your-project-name"
OPIK_WORKSPACE="your-workspace-name"
OPIK_DEFAULT_LLM="openai/gpt-5-nano"
# LLM Provider API Keys (if needed)
OPENAI_API_KEY="YOUR_OPENAI_API_KEY"
# Logging Configuration (see Debug Mode and Logging section below)
OPIK_CONSOLE_LOGGING_LEVEL="WARNING" # Python: Control console output (DEBUG, INFO, WARNING, ERROR, CRITICAL)
OPIK_FILE_LOGGING_LEVEL="DEBUG" # Python: Enable file logging
OPIK_LOG_LEVEL="DEBUG" # TypeScript: Control log level
```
**Python usage with .env file:**
```python
from dotenv import load_dotenv
load_dotenv() # Load before importing opik
import opik
# Your Opik code here
```
**TypeScript usage with .env file:**
The TypeScript SDK automatically loads `.env` files, so no additional setup is required:
```typescript
import { Opik } from "opik";
// Configuration is automatically loaded from .env
const client = new Opik();
```
### Using Configuration Files
Both SDKs support configuration files for persistent settings.
#### Python SDK Configuration File
The Python SDK uses the [TOML](https://github.com/toml-lang/toml) format. The `configure` method creates this file automatically, but you can also create it manually:
<Tabs>
<Tab value="Opik Cloud" title="Opik Cloud">
```toml
[opik]
url_override = https://www.comet.com/opik/api
api_key = <API Key>
workspace = <Workspace name>
project_name = <Project Name>
```
</Tab>
<Tab value="Self-hosting" title="Self-hosting">
```toml
[opik]
url_override = http://localhost:5173/api
workspace = default
project_name = <Project Name>
```
</Tab>
</Tabs>
#### TypeScript SDK Configuration File
The TypeScript SDK also supports the same `~/.opik.config` file format as the Python SDK. The configuration file uses INI format internally but shares the same structure:
<Tabs>
<Tab value="Opik Cloud" title="Opik Cloud">
```ini
[opik]
url_override = https://www.comet.com/opik/api
api_key = <API Key>
workspace = <Workspace name>
project_name = <Project Name>
```
</Tab>
<Tab value="Self-hosting" title="Self-hosting">
```ini
[opik]
url_override = http://localhost:5173/api
workspace = default
project_name = <Project Name>
```
</Tab>
</Tabs>
<Tip>
By default, both SDKs look for the configuration file in your home directory (`~/.opik.config`). You can specify a
different location by setting the `OPIK_CONFIG_PATH` environment variable.
</Tip>
## Debug Mode and Logging
Both SDKs provide debug capabilities for troubleshooting integration issues.
### Python SDK Logging
The Python SDK provides two separate logging channels that can be configured independently:
- **Console Logging**: Controls log output to the console (stdout/stderr)
- **File Logging**: Controls log output to a file
Both channels support the following log levels: `DEBUG`, `INFO` (default), `WARNING`, `ERROR`, `CRITICAL`
#### Controlling Console Logging
To control the console log level, set the `OPIK_CONSOLE_LOGGING_LEVEL` environment variable _before_ importing `opik`:
```shell
# Reduce console output to warnings and errors only
export OPIK_CONSOLE_LOGGING_LEVEL="WARNING"
```
**Available log levels for console:**
- `DEBUG`: Show all debug information
- `INFO`: Show informational messages (default)
- `WARNING`: Show only warnings and errors
- `ERROR`: Show only errors and critical messages
- `CRITICAL`: Show only critical errors
**Using with .env file:**
```dotenv
# Console Logging (reduce noise)
OPIK_CONSOLE_LOGGING_LEVEL="WARNING"
```
<Note>
The Opik SDK manages its own logging configuration. Setting log levels through Python's standard `logging.getLogger("opik").setLevel()` will not work. Always use the `OPIK_CONSOLE_LOGGING_LEVEL` environment variable to control console output.
</Note>
#### Enabling File Logging for Debug
To enable debug mode with file logging, set these environment variables _before_ importing `opik`:
```shell
export OPIK_FILE_LOGGING_LEVEL="DEBUG"
export OPIK_LOGGING_FILE=".tmp/opik-debug-$(date +%Y%m%d).log"
```
**Using with .env file:**
```dotenv
# File Logging (for debug)
OPIK_FILE_LOGGING_LEVEL="DEBUG"
OPIK_LOGGING_FILE=".tmp/opik-debug.log"
```
**Example combining both console and file logging:**
```dotenv
# Opik Logging Configuration
# Console: Show only warnings and errors
OPIK_CONSOLE_LOGGING_LEVEL="WARNING"
# File: Log everything for debugging
OPIK_FILE_LOGGING_LEVEL="DEBUG"
OPIK_LOGGING_FILE=".tmp/opik-debug.log"
```
Then in your Python script:
```python
from dotenv import load_dotenv
load_dotenv() # Load before importing opik
import opik
# Your Opik code here - console will be quiet, debug logs go to file
```
### TypeScript SDK Debug Mode
The TypeScript SDK uses structured logging with configurable levels:
**Available log levels:** `SILLY`, `TRACE`, `DEBUG`, `INFO` (default), `WARN`, `ERROR`, `FATAL`
**Enable debug logging:**
```bash
export OPIK_LOG_LEVEL="DEBUG"
```
**Or in .env file:**
```dotenv
OPIK_LOG_LEVEL="DEBUG"
```
**Programmatic control:**
```typescript
import { setLoggerLevel, disableLogger } from "opik";
// Set log level
setLoggerLevel("DEBUG");
// Disable logging entirely
disableLogger();
```
## Advanced Configuration
### Python SDK Advanced Options
#### HTTP Client Configuration
The Opik Python SDK uses the [httpx](https://www.python-httpx.org/) library to make HTTP requests.
The default configuration applied to the HTTP client is suitable for most use cases, but you can customize
it by registering a custom httpx client hook as in following example:
```python
import opik.hooks
def custom_auth_client_hook(client: httpx.Client) -> None:
client.auth = CustomAuth()
hook = opik.hooks.HttpxClientHook(
client_init_arguments={"trust_env": False},
client_modifier=custom_auth_client_hook,
)
opik.hooks.add_httpx_client_hook(hook)
# Use the Opik SDK as usual
```
<Icon icon="warning" color="#DB0030" /> Make sure to add the hook before using the Opik SDK.
### TypeScript SDK Advanced Options
#### Batching Configuration
The TypeScript SDK uses batching for optimal performance. You can configure batching behavior:
```typescript
import { Opik } from "opik";
const client = new Opik({
// Custom batching delay (default: 300ms)
batchDelayMs: 1000,
// Hold data until manual flush (default: false)
holdUntilFlush: true,
// Custom headers
headers: {
"Custom-Header": "value",
},
});
// Manual flushing
await client.flush();
```
#### Global Flush Control
```typescript
import { flushAll } from "opik";
// Flush all instantiated clients
await flushAll();
```
## Configuration Reference
### Python SDK Configuration Values
| Configuration Name | Environment Variable | Description |
| -------------------------- | ---------------------------- | ------------------------------------------------------------------------- |
| url_override | `OPIK_URL_OVERRIDE` | The URL of the Opik server - Defaults to `https://www.comet.com/opik/api` |
| api_key | `OPIK_API_KEY` | The API key - Only required for Opik Cloud |
| workspace | `OPIK_WORKSPACE` | The workspace name - Optional |
| project_name | `OPIK_PROJECT_NAME` | The project name to use |
| N/A | `OPIK_DEFAULT_LLM` | Default LLM used by Python evaluation/simulation helpers - Defaults to `openai/gpt-5-nano` |
| opik_track_disable | `OPIK_TRACK_DISABLE` | Disable tracking of traces and spans - Defaults to `false` |
| default_flush_timeout | `OPIK_DEFAULT_FLUSH_TIMEOUT` | Default flush timeout - Defaults to no timeout |
| opik_check_tls_certificate | `OPIK_CHECK_TLS_CERTIFICATE` | Check TLS certificate - Defaults to `true` |
| console_logging_level | `OPIK_CONSOLE_LOGGING_LEVEL` | Console logging level - Defaults to `INFO` |
| file_logging_level | `OPIK_FILE_LOGGING_LEVEL` | File logging level - Not configured by default |
| logging_file | `OPIK_LOGGING_FILE` | File to write logs to - Defaults to `opik.log` |
### TypeScript SDK Configuration Values
| Configuration Name | Environment Variable | Description |
| ------------------ | ----------------------- | -------------------------------------------------------------------- |
| apiUrl | `OPIK_URL_OVERRIDE` | The URL of the Opik server - Defaults to `http://localhost:5173/api` |
| apiKey | `OPIK_API_KEY` | The API key - Required for Opik Cloud |
| workspaceName | `OPIK_WORKSPACE` | The workspace name - Optional |
| projectName | `OPIK_PROJECT_NAME` | The project name - Defaults to `Default Project` |
| batchDelayMs | `OPIK_BATCH_DELAY_MS` | Batching delay in milliseconds - Defaults to `300` |
| holdUntilFlush | `OPIK_HOLD_UNTIL_FLUSH` | Hold data until manual flush - Defaults to `false` |
| trackDisable | `OPIK_TRACK_DISABLE` | Disable tracing of traces and spans - Defaults to `false` |
| N/A | `OPIK_LOG_LEVEL` | Logging level - Defaults to `INFO` |
| N/A | `OPIK_CONFIG_PATH` | Custom config file location |
## Troubleshooting
### Python SDK Troubleshooting
#### SSL Certificate Error
If you encounter the following error:
```
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)
```
You can resolve it by either:
- Disable the TLS certificate check by setting the `OPIK_CHECK_TLS_CERTIFICATE` environment variable to `false`
- Add the Opik server's certificate to your trusted certificates by setting the `REQUESTS_CA_BUNDLE` environment variable
#### Health Check Command
If you are experiencing problems with the Python SDK, such as receiving 400 or 500 errors from the backend, or being unable to connect at all, run the health check command:
```bash
opik healthcheck
```
This command will analyze your configuration and backend connectivity, providing useful insights into potential issues.
<Frame>
<img src="../../img/healthcheck.png" />
</Frame>
Reviewing the health check output can help pinpoint the source of the problem and suggest possible resolutions.
### TypeScript SDK Troubleshooting
#### Configuration Validation Errors
The TypeScript SDK validates configuration at startup. Common errors:
- **"OPIK_URL_OVERRIDE is not set"**: Set the `OPIK_URL_OVERRIDE` environment variable
- **"OPIK_API_KEY is not set"**: Required for Opik Cloud deployments
- **"OPIK_WORKSPACE is not set"**: Optional, but can be set for Opik Cloud deployments
#### Debug Logging
Enable debug logging to troubleshoot issues:
```bash
export OPIK_LOG_LEVEL="DEBUG"
```
If you are using the Opik Optimizer SDK, you can also enable optimizer-side debug logs:
```bash
export OPIK_OPTIMIZER_LOG_LEVEL="DEBUG"
```
Or programmatically:
```typescript
import { setLoggerLevel } from "opik";
setLoggerLevel("DEBUG");
```
#### Batch Queue Issues
If data isn't appearing in Opik:
1. **Check if data is batched**: Call `await client.flush()` to force sending
2. **Verify configuration**: Ensure correct API URL and credentials
3. **Check network connectivity**: Verify firewall and proxy settings
### General Troubleshooting
#### Environment Variables Not Loading
1. **Python**: Ensure `load_dotenv()` is called before importing `opik`
2. **TypeScript**: The SDK automatically loads `.env` files
3. **Verify file location**: `.env` file should be in project root
4. **Check file format**: No spaces around `=` in `.env` files
#### Configuration File Issues
1. **File location**: Default is `~/.opik.config`
2. **Custom location**: Use `OPIK_CONFIG_PATH` environment variable
3. **File format**: Python uses TOML, TypeScript uses INI format
4. **Permissions**: Ensure file is readable by your application