可观测性与 LLMOps
可观测性与大语言模型运维(LLMOps)
相关源文件
以下文件为本 Wiki 页面的生成提供了上下文:
api/core/ops/entities/config_entity.pyapi/core/ops/entities/trace_entity.pyapi/core/ops/ops_trace_manager.pyapi/core/ops/utils.pyapi/services/ops_service.pyapi/tasks/ops_trace_task.pyapi/tests/unit_tests/core/ops/__init__.pyapi/tests/unit_tests/core/ops/test_config_entity.pyapi/tests/unit_tests/core/ops/test_ops_trace_manager.pyapi/tests/unit_tests/core/ops/test_utils.py- [web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/page.tsx](web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/page.tsx)
- [web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/config-popup.tsx](web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/config-popup.tsx)
- [web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/config.ts](web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/config.ts)
- [web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/field.tsx](web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/field.tsx)
- [web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx](web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx)
- [web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/provider-panel.tsx](web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/provider-panel.tsx)
- [web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/tracing-icon.tsx](web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/tracing-icon.tsx)
- [web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/type.ts](web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/type.ts)
web/app/components/base/icons/src/public/tracing/index.ts
本页面从高层次概述了 Dify 的可观测性功能及其与各类大语言模型运维(LLMOps)工具的集成。内容涵盖 Dify 如何实现追踪、运维监控,以及如何利用外部平台来增强生产级 AI 应用的开发与部署。关于特定追踪提供方和运维功能的详细信息,请参见链接的子页面。
追踪集成
Dify 内置了强大的追踪系统,用于提供 AI 应用执行过程的可视性,特别是工作流和大语言模型(LLM)交互。该系统由 OpsTraceManager api/core/ops/ops_trace_manager.py:53-53 管理,它作为追踪数据的中枢调度器,将数据分发到各个已配置的提供方。系统支持多种主流的大语言模型运维(LLMOps)和可观测性平台,用户可以根据现有基础设施和需求选择合适的工具。
OpsTraceManager 通过 decrypt_tracing_config api/core/ops/ops_trace_manager.py:328-348 和 encrypt_tracing_config api/core/ops/ops_trace_manager.py:305-326 等方法处理追踪凭证的配置、加密和解密。它还提供了 _lookup_app_and_workspace_names api/core/ops/ops_trace_manager.py:75-90 和 _lookup_llm_credential_info api/core/ops/ops_trace_manager.py:113-191 等工具函数来解析上下文,从而用相关元数据丰富追踪数据。
关于 OpsTraceManager 架构和具体提供方实现的详细信息,请参见追踪管理器与提供方集成。
支持的追踪提供方
Dify 支持与多个追踪提供方集成,每个提供方都具备独特的监控和分析大语言模型(LLM)应用的能力。这些提供方由 TracingProviderEnum api/core/ops/entities/config_entity.py:8-19 定义。
追踪提供方架构
来源: api/core/ops/ops_trace_manager.py:53-53 api/core/ops/entities/config_entity.py:8-19 api/services/ops_service.py:11-135 api/tasks/ops_trace_task.py:41-47
每个提供方都有自己从 BaseTracingConfig api/core/ops/entities/config_entity.py:21-54 派生的配置模型。Dify 前端在应用概览页面提供了专用用户界面(UI)来管理这些配置 web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx:28-141。
追踪实体与任务处理
追踪数据被封装在专门的实体中,例如 WorkflowTraceInfo api/core/ops/entities/trace_entity.py:86-106、MessageTraceInfo api/core/ops/entities/trace_entity.py:108-120 和 WorkflowNodeTraceInfo api/core/ops/entities/trace_entity.py:196-236。这些对象确保了不同提供方之间数据结构的一致性。
数据向外部平台的实际传输是通过 Celery 任务异步执行的。process_trace_tasks 函数 api/tasks/ops_trace_task.py:47-127 从存储中加载追踪数据 api/tasks/ops_trace_task.py:56-57,通过 get_ops_trace_instance api/tasks/ops_trace_task.py:61 实例化相应的追踪提供方,然后执行 trace() 方法 api/tasks/ops_trace_task.py:92。
运维监控
除了追踪功能外,Dify 还与通用运维监控工具集成,以确保平台的稳定性和性能。
OpenTelemetry 与企业遥测
Dify 利用 OpenTelemetry 实现标准化的仪表化。在任务处理管线中,Dify 通过 is_ee_telemetry_enabled api/tasks/ops_trace_task.py:77-79 检查企业遥测是否启用。如果启用,它会使用 EnterpriseOtelTrace api/tasks/ops_trace_task.py:80-83 导出遥测数据,从而实现对追踪和指标与供应商无关的采集。
关于 OpenTelemetry 仪表化和配置的详细说明,请参见OpenTelemetry 与 Sentry 集成。
前端可观测性用户界面(UI)
前端通过 TracingPanel web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx:28-141 管理可观测性提供方的状态和配置。它通过 API 调用使用 OpsService 来获取 web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx:90-140 和更新 web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx:42-48 提供方设置。
前端到后端的可观测性映射
来源: web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx:28-141 web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/config-popup.tsx:41-90 api/services/ops_service.py:11-24 api/models/model.py:44-44
关于 Sentry 设置和错误追踪的更多信息,请参见OpenTelemetry 与 Sentry 集成。
来源:
api/core/ops/ops_trace_manager.py:53-191api/core/ops/entities/config_entity.py:8-19api/core/ops/entities/trace_entity.py:86-236api/tasks/ops_trace_task.py:41-127api/services/ops_service.py:11-137web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx:28-141