LangChain执行后如何查看Verbose输出以进行分析
在Notebook中获取LangChain Agent的完整对话日志
以下是三种实用方法,帮你在agent.run()执行后查看完整对话内容用于分析:
方法1:自定义回调Handler捕获对话细节
通过自定义回调类,追踪Agent运行的每一步(思考过程、工具调用、结果返回),并将日志存储下来,方便后续查看。
from langchain.callbacks.base import BaseCallbackHandler # 自定义日志捕获处理器 class ConversationLogger(BaseCallbackHandler): def __init__(self): self.full_log = [] def on_agent_action(self, action, **kwargs): self.full_log.append(f"【Agent思考】{action.log}") def on_tool_end(self, output, **kwargs): self.full_log.append(f"【工具返回】{output}") def on_agent_finish(self, finish, **kwargs): self.full_log.append(f"【最终回答】{finish.log}") # 初始化日志处理器 logger = ConversationLogger() # 给Agent添加回调(替换你原有的agent初始化代码) agent = initialize_agent( llm=llm, tools=tools, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True, callbacks=[logger] # 加入自定义回调 ) # 运行Agent response = agent.run("What do monkeys eat for breakfast?") # 查看完整对话日志 for entry in logger.full_log: print(entry)
方法2:捕获Notebook的标准输出
利用io模块临时重定向标准输出,捕获verbose=True打印的所有对话内容。
import io import sys # 保存原标准输出 original_stdout = sys.stdout # 创建临时输出缓冲区 captured_output = io.StringIO() sys.stdout = captured_output # 运行Agent response = agent.run("What do monkeys eat for breakfast?") # 恢复标准输出 sys.stdout = original_stdout # 获取并查看完整对话 full_conversation = captured_output.getvalue() print(full_conversation)
方法3:通过Memory存储对话历史
给Agent配置对话记忆组件,自动存储所有交互内容,之后直接从记忆中提取完整历史。
from langchain.memory import ConversationBufferMemory # 初始化对话记忆 memory = ConversationBufferMemory(memory_key="chat_history") # 初始化带记忆的Agent(替换你原有的agent初始化代码) agent = initialize_agent( llm=llm, tools=tools, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True, memory=memory # 添加对话记忆 ) # 运行Agent response = agent.run("What do monkeys eat for breakfast?") # 提取完整对话历史 print(memory.load_memory_variables({})["chat_history"])
内容的提问来源于stack exchange,提问作者Andrew Anderson
相关产品推荐
相关产品推荐

