# Opik [English](./README.md) | [中文](./README.zh.md) 本服务部署 [Opik](https://github.com/comet-ml/opik),一个开源的 LLM 可观测性、评估和优化平台。Opik 帮助你调试、评估和监控 LLM 应用程序、RAG 系统和智能体工作流,提供全面的追踪、自动化评估和生产级仪表板。 ## 服务组件 - **frontend**:Opik Web 界面(Nginx) - **backend**:Opik 主后端 API 服务(Java/Dropwizard) - **python-backend**:Python 后端,用于代码执行和 AI 功能 - **mysql**:MySQL 数据库,用于状态持久化 - **clickhouse**:ClickHouse 分析数据库,用于追踪数据存储 - **redis**:Redis,用于缓存和任务队列 - **zookeeper**:ZooKeeper,用于 ClickHouse 协调 - **minio**:兼容 S3 的对象存储,用于附件 ## 快速开始 1. 复制 `.env.example` 到 `.env`: ```bash cp .env.example .env ``` 2. 更新 `.env` 中的关键密钥(本地开发可选): ```bash # 如需生成安全密码 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. 启动服务: ```bash docker compose up -d ``` 4. 访问 Opik:`http://localhost:5173` ## 核心环境变量 | 变量名 | 描述 | 默认值 | | ------------------------------- | ---------------------- | --------- | | `OPIK_VERSION` | Opik 容器镜像版本 | `1.10.23` | | `OPIK_PORT_OVERRIDE` | Web UI 端口 | `5173` | | `OPIK_BACKEND_PORT_OVERRIDE` | 后端 API 端口 | `3003` | | `OPIK_USAGE_REPORT_ENABLED` | 启用匿名使用报告 | `true` | | `TOGGLE_WELCOME_WIZARD_ENABLED` | 首次运行时显示欢迎向导 | `true` | ## 数据库配置 | 变量名 | 描述 | 默认值 | | --------------------- | ------------------- | ------------------ | | `MYSQL_VERSION` | MySQL 版本 | `8.4.2` | | `MYSQL_ROOT_PASSWORD` | MySQL root 密码 | `opik` | | `MYSQL_DATABASE` | MySQL 数据库名 | `opik` | | `MYSQL_USER` | MySQL 用户名 | `opik` | | `MYSQL_PASSWORD` | MySQL 密码 | `opik` | | `CLICKHOUSE_VERSION` | ClickHouse 版本 | `25.3.6.56-alpine` | | `CLICKHOUSE_DB` | ClickHouse 数据库名 | `opik` | | `CLICKHOUSE_USER` | ClickHouse 用户名 | `opik` | | `CLICKHOUSE_PASSWORD` | ClickHouse 密码 | `opik` | ## 存储与缓存配置 | 变量名 | 描述 | 默认值 | | ----------------------------- | ------------------ | ------------------ | | `REDIS_VERSION` | Redis 版本 | `7.2.4-alpine3.19` | | `REDIS_PASSWORD` | Redis 密码 | `opik` | | `MINIO_ROOT_USER` | MinIO 管理员用户名 | `opikminio` | | `MINIO_ROOT_PASSWORD` | MinIO 管理员密码 | `opikminio123` | | `MINIO_PORT_OVERRIDE` | MinIO API 端口 | `9000` | | `MINIO_CONSOLE_PORT_OVERRIDE` | MinIO 控制台端口 | `9090` | ## AI 功能配置(可选) | 变量名 | 描述 | 默认值 | | --------------------------- | ------------------- | ------- | | `TOGGLE_OPIK_AI_ENABLED` | 启用 Opik AI 功能 | `false` | | `TOGGLE_GUARDRAILS_ENABLED` | 启用护栏功能 | `false` | | `OPENAI_API_KEY` | OpenAI API 密钥 | `` | | `ANTHROPIC_API_KEY` | Anthropic API 密钥 | `` | | `OPENROUTER_API_KEY` | OpenRouter API 密钥 | `` | ## Python 后端配置 | 变量名 | 描述 | 默认值 | | ------------------------------------------- | --------------------------------- | --------- | | `PYTHON_CODE_EXECUTOR_STRATEGY` | 代码执行策略(process/container) | `process` | | `PYTHON_CODE_EXECUTOR_CONTAINERS_NUM` | 执行器容器数量 | `5` | | `PYTHON_CODE_EXECUTOR_EXEC_TIMEOUT_IN_SECS` | 代码执行超时时间 | `3` | | `PYTHON_CODE_EXECUTOR_ALLOW_NETWORK` | 允许代码执行访问网络 | `false` | | `OPTSTUDIO_MAX_CONCURRENT_JOBS` | 最大并发优化任务数 | `5` | | `OPTSTUDIO_LOG_LEVEL` | 优化工作室日志级别 | `INFO` | | `OPTSTUDIO_LLM_MAX_TOKENS` | LLM 调用最大令牌数 | `8192` | ## 数据卷 - `mysql_data`:MySQL 数据库文件 - `redis_data`:Redis 持久化数据 - `zookeeper_data`:ZooKeeper 数据 - `clickhouse_data`:ClickHouse 数据文件 - `clickhouse_logs`:ClickHouse 日志 - `clickhouse_config`:ClickHouse 配置 - `minio_data`:MinIO 对象存储数据 ## 资源限制 所有服务都有可配置的 CPU 和内存限制: | 服务 | CPU 限制 | 内存限制 | | -------------- | -------- | -------- | | 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 配置 要将 Opik Python SDK 与此本地部署一起使用: ```python import opik # 配置为本地部署 opik.configure(use_local=True) # 或设置环境变量 import os os.environ["OPIK_URL_OVERRIDE"] = "http://localhost:5173/api" os.environ["OPIK_API_KEY"] = "" # 本地部署留空 # 开始追踪 @opik.track def my_llm_function(user_question: str) -> str: # 你的 LLM 代码 return "Hello" ``` ## 文档 - [Opik 文档](https://www.comet.com/docs/opik/) - [Python SDK 参考](https://www.comet.com/docs/opik/python-sdk-reference/) - [GitHub 仓库](https://github.com/comet-ml/opik) ## 许可证 Opik 采用 Apache 2.0 许可证。