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

如何捕获发送至OpenAI API的原始消息并调试LangChain代理?

查看LangChain发送给OpenAI API的完整原始消息与响应的方法

以下两种方法可以直接获取发送到OpenAI的完整请求及响应,方便调试代理的记忆和指令遗漏问题:

方法一:自定义LangChain回调捕获请求与响应

通过自定义回调处理器,在LLM调用前后打印完整的请求内容和返回结果:

from langchain.callbacks.base import BaseCallbackHandler
from langchain.chat_models import ChatOpenAI
from langchain.memory import ConversationBufferMemory
from langchain.agents import initialize_agent, AgentType

class OpenAIDebugHandler(BaseCallbackHandler):
    def on_llm_start(self, serialized, prompts, **kwargs):
        print("\n=== 发送至OpenAI的完整请求内容 ===")
        for prompt in prompts:
            print(prompt)
    
    def on_llm_end(self, response, **kwargs):
        print("\n=== OpenAI返回的完整响应内容 ===")
        print(response)

# 初始化组件并绑定回调
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
llm = ChatOpenAI(temperature=0, callbacks=[OpenAIDebugHandler()])
agent_chain = initialize_agent(
    tools, 
    llm, 
    agent=AgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION, 
    verbose=True, 
    memory=memory
)

agent_chain.run(input="hi, I am Bob")

运行后会直接输出完整的请求prompt(包括LangChain自动添加的代理指令、历史对话)和OpenAI的原始响应。

方法二:开启OpenAI库的调试日志

利用OpenAI Python库本身的日志功能,打印所有API交互的细节:

import openai
import logging

# 开启debug级别的日志
logging.basicConfig(level=logging.DEBUG)
openai.log = "debug"

# 原有业务代码
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
llm = ChatOpenAI(temperature=0)
agent_chain = initialize_agent(tools, llm, agent=AgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION, verbose=True, memory=memory)
agent_chain.run(input="hi, I am Bob")

该方式会输出HTTP请求的完整细节,包括请求体中的消息数组(系统提示、历史对话、当前输入)和响应的所有内容。

额外调试提示

可以通过以下代码检查记忆组件是否正确存储了历史对话:

print(memory.load_memory_variables({}))

确认chat_history中是否包含之前的对话内容,排查记忆未生效的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:42:38