158 lines
6.5 KiB
Markdown
158 lines
6.5 KiB
Markdown
# Opik
|
|
|
|
[English](./README.md) | [中文](./README.zh.md)
|
|
|
|
This service deploys [Opik](https://github.com/comet-ml/opik), an open-source platform for LLM observability, evaluation, and optimization. Opik helps you debug, evaluate, and monitor your LLM applications, RAG systems, and agentic workflows with comprehensive tracing, automated evaluations, and production-ready dashboards.
|
|
|
|
## Services
|
|
|
|
- **frontend**: Opik web UI (Nginx)
|
|
- **backend**: Main Opik backend API service (Java/Dropwizard)
|
|
- **python-backend**: Python backend for code execution and AI features
|
|
- **mysql**: MySQL database for state persistence
|
|
- **clickhouse**: ClickHouse analytics database for trace storage
|
|
- **redis**: Redis for caching and job queues
|
|
- **zookeeper**: ZooKeeper for ClickHouse coordination
|
|
- **minio**: S3-compatible object storage for attachments
|
|
|
|
## Quick Start
|
|
|
|
1. Copy `.env.example` to `.env`:
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
2. Update critical secrets in `.env` (optional for local development):
|
|
|
|
```bash
|
|
# Generate secure passwords if needed
|
|
MYSQL_ROOT_PASSWORD=your-secure-password
|
|
MYSQL_PASSWORD=your-secure-password
|
|
REDIS_PASSWORD=your-secure-password
|
|
CLICKHOUSE_PASSWORD=your-secure-password
|
|
MINIO_ROOT_PASSWORD=your-secure-password
|
|
```
|
|
|
|
3. Start the services:
|
|
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
|
|
4. Access Opik at `http://localhost:5173`
|
|
|
|
## Core Environment Variables
|
|
|
|
| Variable | Description | Default |
|
|
| ------------------------------- | -------------------------------- | --------- |
|
|
| `OPIK_VERSION` | Opik container image version | `1.10.23` |
|
|
| `OPIK_PORT_OVERRIDE` | Web UI port | `5173` |
|
|
| `OPIK_BACKEND_PORT_OVERRIDE` | Backend API port | `3003` |
|
|
| `OPIK_USAGE_REPORT_ENABLED` | Enable anonymous usage reporting | `true` |
|
|
| `TOGGLE_WELCOME_WIZARD_ENABLED` | Show welcome wizard on first run | `true` |
|
|
|
|
## Database Configuration
|
|
|
|
| Variable | Description | Default |
|
|
| --------------------- | ------------------------ | ------------------ |
|
|
| `MYSQL_VERSION` | MySQL version | `8.4.2` |
|
|
| `MYSQL_ROOT_PASSWORD` | MySQL root password | `opik` |
|
|
| `MYSQL_DATABASE` | MySQL database name | `opik` |
|
|
| `MYSQL_USER` | MySQL username | `opik` |
|
|
| `MYSQL_PASSWORD` | MySQL password | `opik` |
|
|
| `CLICKHOUSE_VERSION` | ClickHouse version | `25.3.6.56-alpine` |
|
|
| `CLICKHOUSE_DB` | ClickHouse database name | `opik` |
|
|
| `CLICKHOUSE_USER` | ClickHouse username | `opik` |
|
|
| `CLICKHOUSE_PASSWORD` | ClickHouse password | `opik` |
|
|
|
|
## Storage & Cache Configuration
|
|
|
|
| Variable | Description | Default |
|
|
| ----------------------------- | -------------------- | ------------------ |
|
|
| `REDIS_VERSION` | Redis version | `7.2.4-alpine3.19` |
|
|
| `REDIS_PASSWORD` | Redis password | `opik` |
|
|
| `MINIO_ROOT_USER` | MinIO admin username | `opikminio` |
|
|
| `MINIO_ROOT_PASSWORD` | MinIO admin password | `opikminio123` |
|
|
| `MINIO_PORT_OVERRIDE` | MinIO API port | `9000` |
|
|
| `MINIO_CONSOLE_PORT_OVERRIDE` | MinIO console port | `9090` |
|
|
|
|
## AI Features Configuration (Optional)
|
|
|
|
| Variable | Description | Default |
|
|
| --------------------------- | ---------------------------------- | ------- |
|
|
| `TOGGLE_OPIK_AI_ENABLED` | Enable Opik AI features | `false` |
|
|
| `TOGGLE_GUARDRAILS_ENABLED` | Enable guardrails | `false` |
|
|
| `OPENAI_API_KEY` | OpenAI API key for AI features | `` |
|
|
| `ANTHROPIC_API_KEY` | Anthropic API key for AI features | `` |
|
|
| `OPENROUTER_API_KEY` | OpenRouter API key for AI features | `` |
|
|
|
|
## Python Backend Configuration
|
|
|
|
| Variable | Description | Default |
|
|
| ------------------------------------------- | ------------------------------------------- | --------- |
|
|
| `PYTHON_CODE_EXECUTOR_STRATEGY` | Code execution strategy (process/container) | `process` |
|
|
| `PYTHON_CODE_EXECUTOR_CONTAINERS_NUM` | Number of executor containers | `5` |
|
|
| `PYTHON_CODE_EXECUTOR_EXEC_TIMEOUT_IN_SECS` | Code execution timeout | `3` |
|
|
| `PYTHON_CODE_EXECUTOR_ALLOW_NETWORK` | Allow network access in code execution | `false` |
|
|
| `OPTSTUDIO_MAX_CONCURRENT_JOBS` | Max concurrent optimization jobs | `5` |
|
|
| `OPTSTUDIO_LOG_LEVEL` | Optimization studio log level | `INFO` |
|
|
| `OPTSTUDIO_LLM_MAX_TOKENS` | Max tokens for LLM calls | `8192` |
|
|
|
|
## Volumes
|
|
|
|
- `mysql_data`: MySQL database files
|
|
- `redis_data`: Redis persistence data
|
|
- `zookeeper_data`: ZooKeeper data
|
|
- `clickhouse_data`: ClickHouse data files
|
|
- `clickhouse_logs`: ClickHouse logs
|
|
- `clickhouse_config`: ClickHouse configuration
|
|
- `minio_data`: MinIO object storage data
|
|
|
|
## Resource Limits
|
|
|
|
All services have configurable CPU and memory limits:
|
|
|
|
| Service | CPU Limit | Memory Limit |
|
|
| -------------- | --------- | ------------ |
|
|
| frontend | 0.5 | 512M |
|
|
| backend | 2.0 | 2G |
|
|
| python-backend | 1.0 | 1G |
|
|
| mysql | 1.0 | 1G |
|
|
| clickhouse | 2.0 | 4G |
|
|
| redis | 0.5 | 512M |
|
|
| zookeeper | 0.5 | 1G |
|
|
| minio | 1.0 | 1G |
|
|
|
|
## SDK Configuration
|
|
|
|
To use the Opik Python SDK with this local deployment:
|
|
|
|
```python
|
|
import opik
|
|
|
|
# Configure for local deployment
|
|
opik.configure(use_local=True)
|
|
|
|
# Or set environment variables
|
|
import os
|
|
os.environ["OPIK_URL_OVERRIDE"] = "http://localhost:5173/api"
|
|
os.environ["OPIK_API_KEY"] = "" # Leave empty for local deployment
|
|
|
|
# Start tracing
|
|
@opik.track
|
|
def my_llm_function(user_question: str) -> str:
|
|
# Your LLM code here
|
|
return "Hello"
|
|
```
|
|
|
|
## Documentation
|
|
|
|
- [Opik Documentation](https://www.comet.com/docs/opik/)
|
|
- [Python SDK Reference](https://www.comet.com/docs/opik/python-sdk-reference/)
|
|
- [GitHub Repository](https://github.com/comet-ml/opik)
|
|
|
|
## License
|
|
|
|
Opik is licensed under the Apache 2.0 License.
|