第15章 、LangChain回调机制与可观测性
- 大语言模型
- 11天前
- 13热度
- 0评论
步骤1:注册LangSmith账号
访问 LangSmith官网 并注册一个账号。在注册过程中,完成邮箱验证后进入个人中心页面。
步骤2:获取 API Key
登录到 LangSmith 个人账户,在“Settings”(设置)中找到“API Keys”(API密钥)。点击创建一个新的 API Key,并复制它以备后续使用。
步骤3:安装必要的依赖库
确保已安装 langchain 和 langsmith。如果尚未安装,可以通过以下命令进行安装:
pip install langchain langsmith步骤4:配置环境变量
在你的项目中设置 LangSmith 的 API Key 作为环境变量,以便 LangChain 能够自动捕获链的执行情况。
方法1: 直接在环境中设置
如果你在一个简单的开发环境中运行代码,可以直接通过命令行或终端设置环境变量:
export LANGCHAIN_API_KEY=你的API密钥或者,如果你使用的是 Windows 系统:
set LANGCHAIN_API_KEY=你的API密钥方法2: 在应用程序中动态导入
如果在代码中进行配置,请确保将其设置在应用启动时的早期阶段(例如,在调用任何 LangChain 函数之前)。
示例 Python 代码:
import os
from langchain import LLMSchema, LangSmithClient
os.environ["LANGCHAIN_API_KEY"] = "你的API密钥"
# 初始化 LangSmith 客户端
client = LangSmithClient()步骤5:使用 LangChain 运行链并观察执行情况
接下来,你可以在自己的代码中创建和运行链,并通过 LangSmith 控制台查看详细的执行追踪信息。例如:
from langchain import LLMSchema, LangSmithClient
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
# 设置环境变量
os.environ["LANGCHAIN_API_KEY"] = "你的API密钥"
# 初始化 LangSmith 客户端
client = LangSmithClient()
# 创建一个简单的链
template = "介绍一下 {city} 的天气情况。"
prompt = PromptTemplate(template=template, input_variables=["city"])
llm_chain = LLMChain(prompt=prompt)
# 运行链并将结果发送到 LangSmith
result = llm_chain.run(city="北京")步骤6:查看追踪信息
启动应用后,你可以访问 LangSmith 控制台 查看执行情况。你将看到所有链的详细执行记录,包括:
- 输入输出内容
- 耗时统计
- 错误定位(如有异常发生)
- 详细的调用栈和环境配置
通过这些信息,你可以更好地理解和优化你的 LangChain 应用程序。
总结
使用 LangSmith 可以显著简化链执行的追踪与监控工作。只需要简单的几步设置,你就能获得全面且直观的应用性能分析及错误诊断功能。这对于开发、测试以及生产环境中调试和优化都是非常有价值的工具。
上述代码实现了一个复杂但功能丰富的LangChain应用,具体包括:
环境配置与依赖项:
- 配置了必要的环境变量以启用LangSmith的全链路追踪。
- 初始化Prometheus指标用于监控LLM调用次数、耗时和Token消耗。
- 设置审计日志记录用户输入、输出及性能数据。
自定义回调类:
- AuditCallback:负责收集并记录关键事件,如用户ID、查询内容、LLM响应文本以及相关的运行时间与Token消耗量到文件中。
- PrometheusCallback:向Prometheus服务发送指标信息以进行实时监控。
- StreamingAuditCallback:实现流式输出功能,在生成每个新Token时立即发出,提供即时反馈给用户。
异常处理和链构建:
- 配置LLM实例添加自动重试机制(最多尝试三次)以及失败后切换至备用模型的兜底策略。
- 构建了包含提示模板与LLM逻辑的执行链,并通过RunnableSequence.from()方法将其组合起来。
FastAPI服务:
- 创建了一个基于FastAPI的简洁Web API,用于接收用户请求(携带用户ID和查询内容)并返回响应。
- 在处理过程中动态创建审计回调对象实例及流式输出回调实例,并将它们传递给LLM执行链以确保所有必要的日志记录与性能监控操作能够被正确触发。
通过这种方式构建的应用不仅具备基本的聊天机器人功能,还可以进行深入的日志分析、实时性能跟踪以及异常情况下的自动恢复机制。这对企业级应用来说是非常重要的特性,因为这有助于提高系统的稳定性和维护性。
> 🔗 相关阅读:LangChain.js 架构设计深度剖析