Opik - 开源 LLM 评估平台


一、关于 Opik

Opik是一个开源平台,用于评估、测试和监控LLM应用程序。由Comet构建。

从RAG聊天机器人到代码助理,再到复杂的代理管道等等,构建LLM系统,通过跟踪、评估和仪表盘运行得更好、更快、更便宜。


功能

您可以使用Opik进行以下操作:

  • 开发:
    • 跟踪 Tracing: 在开发和生产过程中跟踪所有LLM调用和跟踪(快速启动集成
    • 注释 : 通过使用 Python SDK or the UI 记录反馈分数来注释LLM调用
    • Playground : 在 prompt playground 使用不同的提示词和模型
  • 评估 :让你的LLM 应用的评估流程自动化
  • 生产监控
    • 记录所有生产跟踪:Opik设计用于支持大量跟踪,便于监视生产应用程序。即使是小型部署,每天也可以接收超过4000万条跟踪!
    • 监控仪表板:查看 Opik Dashboard 中随时间变化的反馈分数、跟踪计数和标记。
    • 在线评估指标:使用LLM作为评判指标,轻松为所有生产跟踪打分,并通过 Opik’s online evaluation metrics 确定生产LLM应用程序的任何问题。

TIP:如果您正在寻找Opik今天没有的功能,请提出一个新的GitHub讨论主题 🚀


二、🛠️ 安装

Opik可以作为完全开源的本地安装或使用 Comet.com 作为托管解决方案提供。开始使用Opik的最简单方法是创建一个免费的Comet账户,在comet.com

如果您想自己托管Opik,可以通过克隆存储库并使用 Docker Compose 启动平台来实现:

# Clone the Opik repository
git clone https://github.com/comet-ml/opik.git

# Navigate to the opik/deployment/docker-compose directory
cd opik/deployment/docker-compose

# Start the Opik platform
docker compose up --detach

# You can now visit http://localhost:5173 on your browser!

关于不同的部署选项的更多信息,请参阅我们的部署指南:

安装方法文档链接
本地实例Local Deployments
KubernetesKubernetes

三、🏁 开始使用

要开始使用,您首先需要安装 Python SDK:

pip install opik

一旦 SDK 安装完毕,您可以通过运行 opik configure 命令来配置它:

opik configure

这将允许您通过设置正确的本地服务器地址来本地配置 Opik,或者如果您正在使用云平台,可以通过设置 API 密钥来配置。

TIP:您也可以从您的 Python 代码中调用 opik.configure(use_local=True) 方法来配置 SDK 在本地安装上运行。

现在,您可以使用 Python SDK 开始记录跟踪。


1、📝 记录跟踪

开始的最简单方法是使用我们的其中一个集成。Opik 支持:

IntegrationDescriptionDocumentationTry in Colab
OpenAILog traces for all OpenAI LLM callsDocumentationOpen Quickstart In Colab
LiteLLMCall any LLM model using the OpenAI formatDocumentationOpen Quickstart In Colab
LangChainLog traces for all LangChain LLM callsDocumentationOpen Quickstart In Colab
HaystackLog traces for all Haystack callsDocumentationOpen Quickstart In Colab
AnthropicLog traces for all Anthropic LLM callsDocumentationOpen Quickstart In Colab
BedrockLog traces for all Bedrock LLM callsDocumentationOpen Quickstart In Colab
CrewAILog traces for all CrewAI callsDocumentationOpen Quickstart In Colab
DeepSeekLog traces for all DeepSeek LLM callsDocumentation
DSPyLog traces for all DSPy runsDocumentationOpen Quickstart In Colab
GeminiLog traces for all Gemini LLM callsDocumentationOpen Quickstart In Colab
GroqLog traces for all Groq LLM callsDocumentationOpen Quickstart In Colab
GuardrailsLog traces for all Guardrails validationsDocumentationOpen Quickstart In Colab
InstructorLog traces for all LLM calls made with InstructorDocumentationOpen Quickstart In Colab
LangGraphLog traces for all LangGraph executionsDocumentationOpen Quickstart In Colab
LlamaIndexLog traces for all LlamaIndex LLM callsDocumentationOpen Quickstart In Colab
OllamaLog traces for all Ollama LLM callsDocumentationOpen Quickstart In Colab
PredibaseFine-tune and serve open-source Large Language ModelsDocumentationOpen Quickstart In Colab
RagasEvaluation framework for your Retrieval Augmented Generation (RAG) pipelinesDocumentationOpen Quickstart In Colab
watsonxLog traces for all watsonx LLM callsDocumentationOpen Quickstart In Colab

TIP : 如果您正在使用的框架未列在上述内容中,请随时 提交问题 或提交包含集成的 PR。


如果您没有使用上述任何框架,您也可以使用 track 函数装饰器来 记录跟踪:

import opik

opik.configure(use_local=True) # Run locally

@opik.track
def my_llm_function(user_question: str) -> str:
    # Your LLM code here

    return "Hello"

TIP:轨迹装饰器可以与我们的任何集成一起使用,也可以用于跟踪嵌套函数调用。


2、🧑‍⚖️ 作为法官的LLM指标

Python Opik SDK 包含了多个作为法官的LLM指标,以帮助您评估您的LLM应用程序。在指标文档中了解更多信息。

要使用它们,只需导入相关的指标并使用 score 函数:

from opik.evaluation.metrics import Hallucination

metric = Hallucination()
score = metric.score(
    input="What is the capital of France?",
    output="Paris",
    context=["France is a country in Europe."]
)
print(score)

Opik 还包括许多预构建的启发式指标,以及创建您自己的指标的能力。在 指标文档 中了解更多信息。


3、🔍 评估您的 LLM 应用程序

Opik 允许您在开发过程中通过 数据集实验 评估您的 LLM 应用程序。

您还可以使用我们的 PyTest 集成 将评估作为 CI/CD 管道的一部分运行。


2025-03-11(二)

docker logs docker-api-1 Running migrations 2025-03-08 03:22:24.919 INFO [MainThread] [utils.py:162] - NumExpr defaulting to 16 threads. /app/api/.venv/lib/python3.12/site-packages/opik/evaluation/metrics/heuristics/regex_match.py:8: SyntaxWarning: invalid escape sequence '\d' """ 2025-03-08 03:22:31.355 INFO [MainThread] [_client.py:1038] - HTTP Request: GET https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json "HTTP/1.1 200 OK" Preparing database migration... Database migration skipped [2025-03-08 03:22:38 +0000] [1] [INFO] Starting gunicorn 23.0.0 [2025-03-08 03:22:38 +0000] [1] [INFO] Listening at: http://0.0.0.0:5001 (1) [2025-03-08 03:22:38 +0000] [1] [INFO] Using worker: gevent [2025-03-08 03:22:38 +0000] [44] [INFO] Booting worker with pid: 44 2025-03-08 03:22:41.069 INFO [MainThread] [utils.py:162] - NumExpr defaulting to 16 threads. 2025-03-08 03:22:44.031 INFO [MainThread] [_client.py:1038] - HTTP Request: GET https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json "HTTP/1.1 200 OK" 2025-03-08 03:23:34.125 ERROR [Dummy-1] [app.py:875] - Exception on /console/api/setup [GET] Traceback (most recent call last): File "/app/api/.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "/app/api/.venv/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 941, in do_execute cursor.execute(statement, parameters) psycopg2.errors.UndefinedTable: relation "dify_setups" does not exist LINE 2: FROM dify_setups ^ The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request rv = self.dispatch_request() ^^^^^^^^^^^^^^^^^^^^^^^ File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request return
03-09
<think>好的,我现在需要帮助用户解决在Docker容器中启动Flask应用时,SQLAlchemy报错“relation 'dify_setups' does not exist”的问题。这个问题看起来像是数据库迁移或初始化的问题,但需要仔细分析可能的原因和解决方案。 首先,用户提到参考了引用[1],其中提到Dify在Docker启动时遇到类似的问题。虽然具体应用不同,但数据库迁移失败导致表不存在的情况可能有共同的原因。我需要根据这些线索来推断可能的问题点。 第一步,我应该考虑数据库迁移是否成功执行。当使用SQLAlchemy时,通常需要运行flask db upgrade来应用迁移。但在Docker环境中,可能存在启动顺序的问题,比如应用容器在数据库容器完全准备好之前就尝试连接,导致迁移失败。这时候可能需要检查Docker Compose文件中的依赖设置,确保应用容器在数据库容器健康之后再启动。例如,在docker-compose.yml中使用depends_on和healthcheck来管理启动顺序。 第二步,检查数据库连接配置是否正确。如果应用的配置文件中数据库的URL、用户名、密码或主机名有误,SQLAlchemy就无法连接到正确的数据库,导致迁移失败。用户需要确认环境变量或配置文件中的数据库信息是否准确,特别是当使用Docker网络时,主机名可能不是localhost,而是数据库容器的服务名。 第三步,确认迁移脚本是否正确生成。如果用户手动修改了模型但没有生成迁移脚本,或者生成的脚本有错误,那么应用迁移时就会失败。这时候需要运行flask db migrate来生成新的迁移脚本,并检查脚本中的内容是否正确。 第四步,检查权限问题。数据库用户是否有权限创建表或修改数据库结构?有时候即使连接成功,权限不足也会导致表无法创建。用户需要确保数据库用户拥有足够的权限,比如CREATE、ALTER等。 第五步,查看应用启动时的初始化流程。是否在应用启动时自动执行了迁移命令?有些项目会在启动脚本中加入flask db upgrade,以确保每次启动时数据库都是最新的。如果用户的项目没有这样做,可能需要修改Dockerfile或启动脚本,添加迁移命令。 另外,还要考虑缓存或旧数据的影响。比如,如果之前有失败的迁移尝试,可能会导致数据库处于不一致的状态,这时候可能需要手动清理或重置数据库,再重新运行迁移。 还有可能的问题包括数据库扩展未安装,例如PostgreSQL的某些扩展需要在迁移前启用,或者模型定义与迁移脚本不一致。这时候需要仔细检查错误日志,看是否有更详细的报错信息,帮助定位问题。 总结可能的解决步骤: 1. 确保数据库容器已正确启动,并且应用容器等待数据库就绪。 2. 检查数据库连接配置是否正确。 3. 生成并应用最新的数据库迁移。 4. 验证数据库用户的权限。 5. 在Docker启动流程中加入自动迁移命令。 6. 清理旧的数据库数据并重新初始化。 用户可能需要按照这些步骤逐一排查,找到具体导致表不存在的原因。尤其是在Docker环境中,网络和依赖管理容易出现问题,需要仔细检查配置和日志。</think>### Docker容器中Flask应用启动时SQLAlchemy报错“relation 'dify_setups' does not exist”的解决方案 此问题通常由数据库迁移未正确执行或初始化流程异常导致。以下是逐步排查与解决方法: --- #### **1. 确认数据库迁移是否执行** - **问题原因**:若未运行数据库迁移命令,SQLAlchemy无法自动创建表结构。 - **解决方法**: 1. 在Docker容器启动时,手动执行迁移命令: ```bash docker-compose exec <app_service_name> flask db upgrade ``` 2. 或在Dockerfile或启动脚本中集成迁移命令(推荐): ```dockerfile CMD ["flask", "db", "upgrade", "&&", "flask", "run", "--host=0.0.0.0"] ``` 3. 若使用`docker-compose.yml`,添加健康检查与依赖控制: ```yaml services: app: depends_on: db: condition: service_healthy db: healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 5s timeout: 5s retries: 5 ``` --- #### **2. 检查数据库连接配置** - **问题原因**:数据库URL、用户名或权限错误,导致迁移失败[^1]。 - **解决方法**: 1. 确认`SQLALCHEMY_DATABASE_URI`格式正确,例如: ```python postgresql://user:password@db:5432/database # "db"为数据库容器服务名 ``` 2. 验证数据库用户权限: ```sql GRANT ALL PRIVILEGES ON DATABASE database TO user; ``` --- #### **3. 手动初始化数据库** - **问题原因**:首次启动时未初始化数据库。 - **解决方法**: 1. 进入数据库容器创建数据库: ```bash docker-compose exec db psql -U postgres -c "CREATE DATABASE database;" ``` 2. 重新运行迁移命令: ```bash docker-compose exec app flask db upgrade ``` --- #### **4. 检查模型定义与迁移脚本** - **问题原因**:模型定义与迁移脚本不一致,导致表未生成。 - **解决方法**: 1. 重新生成迁移脚本: ```bash flask db migrate -m "initialize dify_setups table" ``` 2. 检查生成的迁移文件是否包含目标表的定义。 --- #### **5. 清理缓存或旧数据** - **问题原因**:残留的旧数据导致迁移冲突。 - **解决方法**: 1. 删除数据库并重建: ```bash docker-compose down -v # 清除数据卷 docker-compose up ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

富婆E

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值