豆包 API 如何流式输出?用 Python 逐段接收并处理结束事件

给豆包模型请求开启 stream,按事件类型拼接文本,并把完成、错误和中断分别处理。

流式输出不是把一次完整回答切成随意的小段,而是持续接收服务端事件。程序必须识别文本增量、完成事件和异常,不能把调试事件或空增量直接展示给用户。

开始前准备

  1. 已完成一次非流式调用并确认 API Key 与 Model ID 有效。
  2. 使用方舟官方 SDK,并让密钥只从 ARK_API_KEY 环境变量读取。
  3. 准备一个足够长的测试问题,便于观察增量输出。

按顺序完成操作

  1. 在 Responses 请求中把 stream 设为 True。
  2. 遍历事件,只把 response.output_text.delta 的 delta 追加到文本数组并即时打印。
  3. 收到 response.completed 后再把数组拼成完整文本并保存;遇到异常则标记本次回答不完整。
import os
from arkruntime import Ark

client = Ark(base_url="https://ark.cn-beijing.volces.com/api/v3",
             api_key=os.environ["ARK_API_KEY"])
parts = []
stream = client.responses.create(
    model="your_doubao_model_id",
    input="分四点解释如何检查 API 返回是否完整",
    stream=True,
)
for event in stream:
    if event.type == "response.output_text.delta":
        parts.append(event.delta)
        print(event.delta, end="", flush=True)
    elif event.type == "response.completed":
        print("\n[完成]")
full_text = "".join(parts)

怎样判断已经成功

  1. 测试时同时记录事件类型和文本长度,最终 full_text 应等于屏幕上所有文本增量按顺序拼接的结果。
  2. 主动中断一次网络,程序应给出“回答不完整”的状态,而不是把已收到的半段文字当作成功结果。

常见失败与处理边界

  1. 一直没有增量:确认调用的是流式方法且 stream=True,代理层也不能缓冲整个响应。
  2. 文本重复:不要同时追加 delta 和 done 事件里的聚合文本。
  3. 界面结束但后端仍占用连接:确保退出迭代器或使用上下文管理器释放流。

适用限制

事件名称和 SDK 对象结构可能随版本调整,本文未在读者当前 SDK 版本与账号中实测,运行前应对照官方流式输出页。

豆包 API 如何流式输出?用 Python 逐段接收并处理结束事件

官方资料

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32235.html

赞 (0)
AI小管家的头像AI小管家
火山方舟调用 DeepSeek API 教程:用 Python 发起请求并核对模型输出
上一篇 1小时前
火山方舟 Token 费用怎么算?区分输入、输出并估算单次调用成本
下一篇 1小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部