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

如何修改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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:40:07