快速结论:该问题出现在使用 Langfuse 的 OpenAI 封装调用 responses.create(),且调用发生在 asyncio.gather 并发上下文时;Trace 中 input 显示为 []、output 显示为 null。优先排查点应放在 Langfuse 对异步调用与 Responses API 的追踪兼容性上,而非业务代码本身。
适用环境:自托管 Langfuse v3.49.1,Python SDK 2.60.2;使用 Langfuse 的 openai.AsyncOpenAI 与 @observe、langfuse_context;模型为 gpt-3.5-turbo。Issue 未提供操作系统、Python、CUDA、显卡等环境信息。
最快修复方案:暂无确认的一步修复方案。可优先尝试:在需要正确记录 input/output 的场景改用 chat.completions.create(),或避免在 asyncio.gather 并发上下文中调用 responses.create()。这两种做法均为规避思路,Issue 中未验证可彻底解决。
注意事项:切换为 chat.completions.create() 只是绕过 Responses API 的兼容性问题,并不意味着 Responses API 已被修复;是否与并发数量、flush() 时机或 SDK 版本相关,Issue 中未给出验证结论。
问题场景
用户在 Python 脚本中使用 Langfuse 的 OpenAI 封装(from langfuse import openai,openai.AsyncOpenAI()),在 @observe 装饰的父函数里通过 asyncio.gather 并发执行多个子任务。子任务内调用 responses.create() 时,Langfuse Trace 的 input 为空数组、output 为 null;同一结构改用 chat.completions.create() 时,input 与 output 均能正常记录。复现代码中 use_responses_api=True 即触发问题。
报错原文
bug: Responses API doesn't log input and output correctly in async gather context
input shows as []
output shows as null
原因分析
可能原因:Langfuse 对异步操作的支持存在限制,导致在 asyncio.gather 并发上下文中无法正确捕获 responses.create() 的请求与响应数据。Issue 讨论认为 chat.completions.create() 与 Langfuse 现有异步处理机制的集成更好,因此表现正常;而 Responses API 的追踪可能未完全适配该异步路径。需要注意的是,评论中关于异步支持有限的说明属于推测性解释,Issue 未给出根因确认或修复提交说明。
环境排查
- 确认 Langfuse 自托管版本是否为
v3.49.1(Issue 报告版本)。 - 确认 Python SDK 版本是否为
2.60.2。 - 确认调用使用的是
langfuse.openai的AsyncOpenAI,而非原生openai客户端。 - 确认调用是否运行在
asyncio.gather等并发异步上下文中。 - 确认
@observe装饰的父 observation 是否在并发子任务返回后才调用update_current_observation与flush()。 - Issue 未涉及 CUDA、PyTorch、显卡或节点环境,无需在此项排查。
解决步骤
- 先在不修改业务逻辑的前提下复现:将
use_responses_api分别设为False和True各运行一次,确认只有True时 input/output 异常。 - 可优先尝试规避方案一:把
responses.create()替换为chat.completions.create(),采用ChatCompletionSystemMessageParam与ChatCompletionUserMessageParam构造 messages。 - 可优先尝试规避方案二:如果必须使用 Responses API,暂时避免在
asyncio.gather中并发调用,改为串行执行,观察 Trace 中 input/output 是否恢复。 - 检查自托管 Langfuse 与 Python SDK 版本,关注后续版本对 Responses API 异步追踪的支持情况;Issue 未提供已验证的升级版本号,不要臆断具体版本。
- 若问题仍存在,在 Issue 或新工单中补充最小复现代码与版本信息,便于维护者定位。
验证方法
运行复现脚本后,在 Langfuse 中查看对应 Trace:若 observation 的 input 不再是 []、output 不再是 null,且能看到实际发送的 messages 与模型返回内容,说明记录恢复正常。对父 observation,还应确认 gathered_results 能被正确写入 output。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。

![[BUG]: @agent trigger / Agent workspace mode fails with 400 invalid_type JSON error – regression since v1.16.1](https://www.chat-gpts.plus/wp-content/uploads/2026/10/6273-79245afa-768x403.jpg)
![[Bug]: Bedrock count_tokens returns 400 for cross-region inference-profile models — prefix stripped before request](https://www.chat-gpts.plus/wp-content/uploads/2026/10/32683-e728913d-768x403.jpg)