
Bug: OpenAI Responses API tracing does not include tools in generation input
快速结论:使用 Langfuse 的 OpenAI SDK 集成追踪 OpenAI Responses API 调用时,tools 参数被丢弃,导致 trace 中无法查看模型可用的工具列表。优先检查 langfuse 版本是否为 4.6.1 或更早,并等待 SDK 修复。
问题场景
用户通过 from langfuse.openai import openai 或 from langfuse.openai import AsyncOpenAI 创建客户端,并调用 client.responses.create(...) 时触发。在 Chat Completions 接口下 tools 可正常被 trace,但 Responses API 的 trace 中 tools 字段缺失。
报错原文
# 没有运行时报错,表现为 trace 数据不完整。
# Langfuse trace for responses.create(...) only shows the user input / instructions.
# The tools field is missing.
原因分析
Langfuse 的 OpenAI 集成内部使用了两个不同的提取函数来处理 Chat Completions 和 Responses API 的 trace 数据:_extract_chat_prompt 和 _extract_responses_prompt。_extract_chat_prompt 明确包含了 tools、functions 和 function_call 字段,但 _extract_responses_prompt 只处理了 input 和 instructions,没有包含 tools、tool_choice 或 parallel_tool_calls。因此,虽然向 OpenAI 的实际请求中包含 tools,但 Langfuse 的 trace 载荷丢弃了这些信息。
环境排查
- langfuse(Python SDK)版本:4.6.1(issue 中使用的版本)
- openai 版本:2.36.0
- API 调用方式:
client.responses.create(...) - Langfuse 集成方式:
from langfuse.openai import openai或from langfuse.openai import AsyncOpenAI
解决步骤
- 确认版本:检查当前使用的 langfuse 版本。如果小于或等于 4.6.1,则受影响。
- 等待或贡献修复:该问题需要在 langfuse/langfuse-python 仓库中修复。修复方式是在
_extract_responses_prompt函数中添加对tools、tool_choice、parallel_tool_calls的处理,类似_extract_chat_prompt的设计。可优先尝试检查是否有新的 SDK 版本已包含此修复。 - 临时规避:如果必须使用 Responses API,可以考虑不通过 Langfuse 集成直接调用 OpenAI SDK,并使用 Langfuse 的其他方式手动创建 trace(但会增加代码复杂度,Issue 中未提供具体实现,仅作思路提示)。
- 跟踪进展:关注 GitHub Issue #13763(链接见参考来源)的更新状态。
验证方法
修复后,重新运行最小复现代码,检查 Langfuse 控制台中对应的 trace 记录,确认 generation input 中是否包含了 tools 字段(例如 "tools": [{"type": "function", "name": "get_weather", ...}])。



