You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将LangChain Agent的Verbose输出保存至变量?

保存LangChain Agent的Verbose执行日志到变量

调用agent.run()仅能获取最终结果,若需要捕获包含思考、动作、观察等完整执行流程的日志,可通过以下两种方式实现:

方法一:自定义回调Handler(推荐)

通过LangChain的回调系统,自定义BaseCallbackHandler来精准捕获Agent执行各阶段的信息,灵活性更高。

import json
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI
from langchain.callbacks.base import BaseCallbackHandler
from langchain.schema import AgentAction, AgentFinish

# 自定义回调Handler,用于收集执行日志
class AgentLogHandler(BaseCallbackHandler):
    def __init__(self):
        self.logs = []

    def on_chain_start(self, serialized, inputs, **kwargs) -> None:
        self.logs.append("> Entering new AgentExecutor chain...")

    def on_agent_thought(self, thought: str, **kwargs) -> None:
        self.logs.append(thought.strip())

    def on_agent_action(self, action: AgentAction, **kwargs) -> None:
        self.logs.append(f"Action: {action.tool}\nAction Input: {action.tool_input}")

    def on_tool_end(self, output, **kwargs) -> None:
        self.logs.append(f"Observation: {output}")

    def on_agent_finish(self, finish: AgentFinish, **kwargs) -> None:
        self.logs.append(f"Final Answer: {finish.return_values['output']}")

# 初始化LLM与工具
llm = OpenAI(temperature=0.1)
tools = load_tools(["python_repl", "llm-math"], llm=llm)

# 实例化日志Handler
log_handler = AgentLogHandler()

# 初始化Agent,关闭默认verbose避免重复输出,传入自定义回调
agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=False,
    callbacks=[log_handler]
)

# 执行查询
response = agent.run("What is 3^2. Use calculator to solve.")

# 拼接并查看完整日志
full_log = "\n".join(log_handler.logs)
print("完整执行日志:")
print(full_log)
print("\n最终结果:")
print(response)

方法二:捕获标准输出流

直接重定向标准输出,捕获verbose=True模式下打印的所有内容,实现简单快捷。

import json
import sys
from io import StringIO
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI

# 初始化LLM与工具
llm = OpenAI(temperature=0.1)
tools = load_tools(["python_repl", "llm-math"], llm=llm)

agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

# 临时替换标准输出为内存缓冲区
old_stdout = sys.stdout
captured_output = StringIO()
sys.stdout = captured_output

# 执行查询
response = agent.run("What is 3^2. Use calculator to solve.")

# 恢复标准输出
sys.stdout = old_stdout

# 获取并查看完整日志
full_log = captured_output.getvalue()
print("完整执行日志:")
print(full_log)
print("\n最终结果:")
print(response)

内容的提问来源于stack exchange,提问作者Troyanovsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 14:27:48