agentscope-ai / agentscope-ai/QwenPaw

[Bug]: 启用langfuse监控,工具输出空白

未關閉
#7,529 1 則留言 0 個 reaction 已指派 1 人 已被 @XiuShenAl 認領 在 GitHub 檢視
bug
主要語言
Python
星號
34.9k
分支
3.1k
平均合併
1 天 15 小時
30 天內合併 PR
225

描述

## QwenPaw 版本

QwenPaw 2.1.0

## 问题描述

启用 Langfuse 监控后,Agent 调用工具时,工具本身能够正常执行,执行结果也能够正常返回给 Agent,但 Langfuse 中对应工具 Observation/Span 的 `output` 字段为空字符串或 `null`。

这会导致 Langfuse trace 中只能查看工具名称和输入参数,无法查看实际工具输出,影响工具调用链路的观测和问题排查。

**预期行为:**

Langfuse trace 中应完整记录工具的输入参数和输出结果。工具执行成功后,对应 Tool Observation/Span 的 `output` 字段应包含实际的 `ToolResponse` 内容。

**实际行为:**

Agent 能够正常获取工具执行结果并完成回复,但 Langfuse 中对应工具调用的 `output` 字段为空字符串或 `null`。

初步判断,该问题与工具事件通过异步生成器传递有关。当前逻辑在完整消费工具事件流后才更新 Langfuse Observation;如果上游在收到最终 `ToolResponse` 后停止消费或关闭异步生成器,事件循环之后的 Observation 更新逻辑可能不会执行,从而出现工具执行成功但 Langfuse Output 为空的问题。

**相关 PR:** #7532

**安全考虑:**

不涉及认证、权限绕过或敏感信息泄露,仅为可观测性数据缺失问题。提交日志或截图时,需要隐藏 `LANGFUSE_SECRET_KEY`、`LANGFUSE_PUBLIC_KEY`、模型 API Key 以及工具输出中可能包含的业务敏感数据。

## 受影响组件

- [x] Core / Backend (app, agents, config, providers, utils, local_models)
- [ ] Console(前端 Web UI)
- [ ] Channels(DingTalk、Feishu、QQ、Discord、iMessage 等)
- [ ] Skills
- [ ] CLI
- [ ] Documentation(文档网站)
- [ ] Tests
- [ ] CI/CD
- [ ] Scripts / Deploy

## 运行环境

- **QwenPaw 版本:** 2.1.0
- **操作系统:** Windows 11
- **安装方式:** 源码构建
- **Python 版本:** 3.11
- **Langfuse SDK 版本:** 4.10.0

## 复现步骤

1. 安装 Langfuse SDK,并为 QwenPaw 配置有效的 `LANGFUSE_SECRET_KEY`、`LANGFUSE_PUBLIC_KEY` 和 `LANGFUSE_BASE_URL`。
2. 启动 QwenPaw,确认 Langfuse trace 已成功启用。
3. 向 Agent 发送一条需要触发工具调用的消息,例如查询天气、搜索信息或读取文件。
4. 等待 Agent 完成工具调用,并确认 Agent 能够正常获得工具返回结果。
5. 打开 Langfuse Dashboard,找到本次会话对应的 trace。
6. 查看其中的工具调用 Observation/Span。
7. 检查该工具调用的 `output` 字段。

## 实际表现 vs 预期表现

- **实际表现:** 工具执行成功,Agent 能够获得工具返回结果并正常生成最终回复,但 Langfuse 中对应工具调用 Observation/Span 的 `output` 字段为空字符串或 `null`。

- **预期表现:** Langfuse 中对应工具调用 Observation/Span 的 `output` 字段应完整记录工具的实际返回内容,并与 Agent 收到的工具执行结果一致。

## 日志 / 截图

Image

Image

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。