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
547 lines
18 KiB
Plaintext
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
|