如何修改LangChain Agent输出日志的颜色与格式?
修改LangChain AgentExecutor原生日志格式的方法
问题描述
我通过以下代码创建了AgentExecutor:
agent_executor = AgentExecutor( agent=agent, tools=tools, verbose=True, ... )
当前会生成带有颜色的日志,想修改这些日志的颜色、加粗等格式,不想关闭verbose手动实现,希望保留原生日志输出并调整格式。
可行解决方案
方法1:自定义日志回调类
继承LangChain的BaseCallbackHandler,重写日志输出相关方法,自定义格式,同时复刻原生日志的输出逻辑:
from langchain.callbacks.base import BaseCallbackHandler from langchain.agents import AgentExecutor, initialize_agent, AgentType from langchain.tools import Tool class CustomAgentLogHandler(BaseCallbackHandler): def on_agent_action(self, action, **kwargs): # 自定义Agent动作日志:加粗红色 print(f"\033[1;31m> 执行工具: {action.tool}, 参数: {action.tool_input}\033[0m") def on_agent_finish(self, finish, **kwargs): # 自定义Agent结束日志:加粗绿色 print(f"\033[1;32m> 执行完成: {finish.return_values}\033[0m") def on_tool_start(self, serialized, input_str, **kwargs): # 自定义工具启动日志:加粗蓝色 print(f"\033[1;34m> 启动工具: {serialized['name']}\033[0m") def on_tool_end(self, output, **kwargs): # 自定义工具输出日志:加粗青色 print(f"\033[1;36m> 工具输出: {output}\033[0m") # 示例工具 def sample_tool(input_text): return f"处理结果:{input_text}" tools = [Tool(name="SampleTool", func=sample_tool, description="用于测试的工具")] # 初始化Agent时绑定自定义回调,关闭原verbose agent = initialize_agent( tools, llm, # 替换为你的LLM实例 agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=False, callbacks=[CustomAgentLogHandler()] ) # 执行Agent agent.run("测试请求内容")
这种方式完全可控,且不受版本更新影响,同时能实现和原生日志一致的输出节点,只是格式自定义。
方法2:修改内部源码(不推荐)
LangChain的AgentExecutor日志格式写在内部代码中,你可以找到agent_executor.py文件中的日志输出逻辑,替换其中的ANSI格式码:
- 比如将原有的
\033[33m(黄色)改为\033[1;33m(加粗黄色),调整颜色或加粗属性。 - 找到
_log方法或直接输出日志的代码块,修改格式字符串。
缺点是LangChain版本更新后,修改的代码会被覆盖,需要重新调整。
内容的提问来源于stack exchange,提问作者Artem
相关产品推荐
相关产品推荐

