💭 Agent 节点调用数据中台接口返回空列表的处理方案
💡 核心观点:当中台接口对未匹配的 ID 返回空列表
[]时,不应要求对方修改接口语义,而是在 Agent 工作流中通过 Python 节点自行补全缺失数据,保证下游节点拿到完整的 ID 映射。
🔍 问题场景
Agent 工作流中有一个 HTTP 节点,用数据 ID 调用数据中台接口查询详情。正常情况下返回:
1 | { |
但当传入的 ID 在中台侧无匹配记录时,接口返回空列表:
1 | { |
问题在于:Agent 下游节点需要知道哪些 ID 没查到数据,空列表丢失了输入 ID 的信息,导致后续流程无法区分”未查询”和”查无结果”。
🤔 方案选择
和中台开发沟通后,有两个方向:
| 方案 | 做法 | 取舍 |
|---|---|---|
| 改接口 | 中台对未匹配 ID 也返回记录(字段填 null) |
改变了接口语义,影响其他调用方 |
| 自行处理 | Agent 侧用 Python 节点对比输入输出,补全缺失 ID | 不侵入中台接口,改动可控 |
最终选择方案二——在 Agent 工作流中增加一个 Python 节点处理。理由:
- 中台接口返回空列表是合理的 RESTful 语义(查无结果 ≠ 错误)
- 修改接口会影响其他已接入的系统
- Agent 侧处理更灵活,后续可根据业务调整补全逻辑
🛠️ Python 节点实现
在 HTTP 节点之后增加一个 Python 节点,对比输入 ID 列表与接口返回结果,补全缺失项:
1 | def handle_response(input_ids: list, api_result: list) -> list: |
处理效果:
1 | input_ids = ["abc123", "def456", "ghi789"] |
下游节点通过判断 name is None 即可识别哪些 ID 未在中台找到数据。
🔑 关键收获
- 不要轻易要求上游修改接口,尤其是该接口已有多个调用方的情况
- 空列表是合理的接口语义,消费端应自行处理”缺失”逻辑
- Agent 工作流中 Python 节点是处理数据转换的利器,比改接口更灵活可控
✅ 行动项
- 将 Python 补全逻辑封装为通用函数,后续类似场景复用
- 在 Agent 工作流中增加日志输出,记录补全了哪些 ID
更新记录
| 版本 | 日期 | 说明 |
|---|---|---|
| v1.0 | 2026-03-27 | 初始版本 |