You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenAI Assistant流式响应报错:'AsyncStream'对象不可迭代

问题:OpenAI Assistant流式响应报错TypeError: 'AsyncStream' object is not iterable

按照OpenAI Assistant官方文档实现流式响应时,始终无法正常运行,持续抛出以下错误:

File "/home/vscode/.local/lib/python3.12/site-packages/openai/lib/streaming/_assistants.py", line 404, in __stream__
    for event in stream:
TypeError: 'AsyncStream' object is not iterable

我的FastAPI后端API端点代码如下:

@router.post("/new")
async def post_new(request: Request):
    """Start a new chat."""
    ...
        thread = await client.beta.threads.create()
        await client.beta.threads.messages.create(
            thread_id=thread.id,
            content=content_start,
            role="user",
            metadata={"type": "hidden"},
        )
        # 创建流式线程运行实例
        async with client.beta.threads.runs.stream(
            thread_id=thread.id,
            assistant_id=request.state.assistant_id,
            event_handler=EventHandler(),
        ) as stream:
            print("\n\nStream started")  # 该行能正常打印
            
            stream.until_done() # 调用此方法时触发报错

如果不在with语句前添加async,会出现以下警告:

/workspace/backend/routers/chat.py:54: RuntimeWarning: coroutine 'AsyncAPIClient.post' was never awaited
  with client.beta.threads.runs.stream(

环境信息:

  • Python 3.12
  • OpenAI SDK版本1.25.1(也尝试过低版本)
  • 基于FastAPI开发后端

解决方案

问题出在事件处理器的实现上,需改用异步版本的事件处理器,而非官方示例中的同步实现。代码示例如下:

from openai import AsyncAssistantEventHandler
from typing_extensions import override


class EventHandler(AsyncAssistantEventHandler):
    def __init__(self, response_stream) -> None:
        super().__init__()
        self.response_stream = response_stream

    @override
    async def on_text_delta(self, delta, snapshot):
        print("\n on_text_delta", delta.value, end="", flush=True)
        return delta.value
...

内容的提问来源于stack exchange,提问作者cookieDope

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 18:17:08