跳转到主要内容
通过 stream: true 开启流式输出,并按所选 API 的格式定义由客户端执行的工具。流式输出和工具调用的支持情况因模型而异;接入应用前,先用你的 Model ID 发送小请求验证。

准备工作

先按 SDK 示例完成一次普通文本请求。从模型广场复制适用于目标协议的准确 Model ID。模型选择指南列出了需要检查的项目。 在项目的 Python 虚拟环境中安装 openai 和 anthropic,然后在同一终端中替换以下占位值:
下方每个 Python 代码块均可独立运行。120 秒超时仅用于这些简短测试;应用的超时设置请参阅超时配置。设置 max_tokens 或 max_output_tokens 前,请检查模型的输出 Token 上限。

流式接收文本

流式输出在一个 HTTP 响应中通过服务器发送事件(SSE)传输内容。单个 SSE 事件不一定包含完整句子或完整的 JSON 参数对象。 SDK 会解析 SSE 格式。以下示例打印文本增量和结束信息;应用还应处理错误事件。

为三种协议定义天气工具

模型发出函数调用请求;你的应用负责校验参数、执行函数并回传结果。示例中的 get_weather 接收 location 参数,返回固定的演示数据,并非实时天气,无需接入天气服务或申请额外的 Key。 支持情况取决于模型和协议。即使普通文本请求已成功,也请用你的 Model ID 测试这个小型工具请求。声明工具不会启用托管搜索或其他由服务商执行的工具。

执行工具调用并回传结果

以下非流式示例演示一轮完整的工具调用,方便你检查完整参数。每个示例处理首个响应中的所有工具调用,并允许一次后续请求。更长的 Agent 工作流需要自行设置有限循环和停止条件。
添加工具结果前,保留完整的助手响应。Responses 需要保留所有 output 项,包括返回的推理项;Messages 需要保留内容块及其顺序。使用返回的调用 ID 关联结果,不要自行编造 ID。

常见问题

参数还在流式传输时,可以执行工具吗?

先按工具调用索引或项目 ID 累积片段,等参数完整后再解析和校验。未完整接收的 JSON 可能无法解析。组合流式输出与工具调用前,先跑通上方非流式示例。

为什么普通文本成功,工具调用却失败?

支持情况取决于模型和协议。先用你的 Model ID 验证小型工具请求,再检查工具定义、返回参数、结果 ID 和消息顺序。需要对 JSON 进行类型校验时,请参阅结构化输出常见问题。

流中断后应该重试吗?

重新发送前,先检查请求记录。断开连接不能确定请求是否已经完成。重试会发起新的一次请求,且不能重复执行已经完成的工具操作。参阅错误与重试说明。

相关文档

官方参考

以下资料定义了上游协议字段。使用相关功能前,请先用你的 BetterToken Model ID 验证。