Files
compose-anything/apps/opik/README.md

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.