# 如何调试你的LLM应用程序
在构建任何软件类型时,例如使用语言模型(LLM),你总会遇到需要调试的情况。诸如模型调用失败、输出格式错误或嵌套调用带来的错误定位问题,都会对应用程序的正常运行造成影响。这篇文章旨在介绍三种主要的调试方法,帮助你更好地管理这些复杂情况。
## 方法一:详细模式(Verbose Mode)
在详细模式下,程序将为链中的“重要”事件添加打印语句。这种方法适用于快速浏览应用程序的关键状态和事件,确保主要流程没有出现显而易见的错误。
## 方法二:调试模式(Debug Mode)
调试模式将为链中的所有事件添加日志语句。这种模式提供最详细的输出,可以帮助你查看每一个步骤的输入和输出,适用于深入调试复杂问题。
## 方法三:LangSmith Tracing
LangSmith是一个可视化工具,可以记录并显示应用程序中所有的重要事件。你可以通过在[LangSmith](https://smith.langchain.com/)上注册一个账户,然后通过设置环境变量来启动追踪:
```bash
export LANGCHAIN_TRACING_V2="true"
export LANGCHAIN_API_KEY="..."
在notebook环境中,可以通过以下方式设置:
import getpass
import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = getpass.getpass()
使用LangSmith的链追踪示例
假设我们有一个代理程序,我们希望可视化它的动作和工具输出:
安装并设置环境
首先,确保安装并设置了必要的API密钥。以下是几个常用LLM的安装示例:
pip install -qU langchain-openai langchain-anthropic ...
import getpass
import os
os.environ["OPENAI_API_KEY"] = getpass.getpass()
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini")
import getpass
import os
os.environ["ANTHROPIC_API_KEY"] = getpass.getpass()
from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(model="claude-3-5-sonnet-20240620")
以上是两个简单的设置例子,确保其他模型的设置相似。
创建代理并执行
定义代理及其执行器:
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_core.prompts import ChatPromptTemplate
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)
agent_executor.invoke(
{"input": "Who directed the 2023 film Oppenheimer and what is their age in days?"}
)
# 使用API代理服务提高访问稳定性
常见问题和解决方案
问题:过多或过少的输出?
解决方案:使用详细模式可减少不必要的输出,而调试模式则适用于需要深度追踪的情况。LangSmith用于需要持久化和可视化的情况。
问题:跨地区的API访问限制?
解决方案:考虑使用API代理服务以提高访问的稳定性和速度,确保在不同地理位置上都能高效访问。
总结和进一步学习资源
调试是开发过程中不可或缺的一部分,了解如何使用不同的工具和方法能够显著提升开发效率。关于详细如何设置和使用LangChain以及LangSmith的更多信息,可以访问以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---