![[Question]: An error occurred when calling the agent through the API in version v0.22.1](https://www.chat-gpts.plus/wp-content/uploads/2026/07/11619-2da891d6.jpg)
[Question]: An error occurred when calling the agent through the API in version v0.22.1
快速结论:该报错通常出现在通过 API 调用 RAGFlow Agent 时,核心原因是 agent runner (canvas.run) 在 v0.22.1 被重构为异步生成器(async generator),但部分 API 端点和内部函数仍使用同步 for 循环对它进行迭代。优先排查代码中是否存在对 canvas.run 的普通 for 循环,并替换为 async for。
问题场景
用户在使用 RAGFlow v0.22.1 版本,通过 API 调用 Agent 功能时触发。该版本之前运行正常。
报错原文
{"code":100,"data":null,"message":"TypeError("'async generator' object is not iterable")"}
原因分析
这是 v0.22.1 版本引入的一个回归(regression)问题。核心 Agent 运行器 canvas.run 被重构为异步生成器,但部分 API 端点或内部函数仍使用普通的 for 循环去迭代它。根据 Python 语言规则,你不能用同步 for 循环来遍历异步生成器,因此抛出了 TypeError("'async generator' object is not iterable")。此问题在旧版本中未出现,是因为当时并未强制执行异步生成器约定。
已知修复:该问题已在 PR #11404 中解决,通过将所有受影响的函数和 API 端点改为使用 async for。相关代码位置在 canvas_service.py。
环境排查
- RAGFlow 版本:确认是否为 v0.22.1。
- Python 版本:建议 Python >= 3.9,因为 async generator 特性在 3.6+ 引入,但早期版本可能表现不同。
- 检查是否使用了官方 Docker 镜像(nightly 版本已包含修复)。
解决步骤
- 方法一:升级到最新版或使用 nightly 镜像。 官方推荐的方式是直接拉取
nightlyDocker 镜像,其中已包含针对此次回归问题的修复。 - 方法二:手动修复代码。 如果你需要自行修改,请找到所有对
canvas.run(...)进行迭代的位置(主要在 API 端点和内部服务函数中,如canvas_service.py),将普通 for 循环改为异步 for 循环。具体操作如下:# 修改前(会报错) for ans in canvas.run(...): ... # 修改后 async for ans in canvas.run(...): ...注意,执行
async for的函数本身也必须是async def定义的异步函数。 - 方法三:针对所有处理 agent completions 或流式响应的端点做相同修改。 不仅仅是
canvas.run,任何被重构为 async generator 的同类代码都需要统一替换。
验证方法
修改完成后,通过 API 重新调用 Agent 功能,确认不再返回 TypeError("'async generator' object is not iterable") 的 100 错误码,且能获取正常的返回数据或流式响应。



