GPT-6 Astra 上线:Responses API 迁移不只是换模型

GPT-6 Astra 的工具调用必须迁移到 Responses API,纯文本 Chat Completions 仍可继续使用。本文拆解请求与状态变化、异步工具调用和中途干预,并结合工程投入、token 价格、缓存利用率与已完成任务成本,说明团队如何规划影子路径、恢复测试和上线节奏,避免把迁移误当成只改模型名。

Friday, September 4, 2026Omid Saffari
Tools
GPT-6 Astra 上线:Responses API 迁移不只是换模型

GPT-6 Astra 让工具调用成为一项 Responses API 迁移工程,而不是改一行模型名就能完成的升级。OpenAI 于 2026 年 9 月 3 日发布该模型:Chat Completions 仍支持纯文本,但凡调用工具的 Astra 工作流都必须迁移到 Responses;异步工具和回合中途干预也改变了长任务的运行方式。

真正需要做的决定有两个:这次迁移该投入多少工程资源,以及新的控制能力能否降低等待、纠偏和重启智能体任务的成本。

GPT-6 Astra 与 Responses API 到底变了什么

发布前的 Astra 画像还是一款尚未开放的研究模型。9 月正式发布后,它有了公开模型 ID gpt-6-astra 和明确价格,并同时进入 Chat Completions 与 Responses。首批访问权限面向 OpenAI Trusted Access Program 中的企业,API 和更多方案的访问权限将在接下来几天陆续开放。

该选哪个端点,取决于应用实际要做什么。只处理文本的 Chat Completions 集成可以使用 Astra;只要集成允许 Astra 调用自定义 function 或 OpenAI 托管工具,就必须使用 Responses API

Responses 改变的是应用契约。Chat Completions 输入一组消息,返回一组选项;Responses 则传递带类型的 Item。消息是一个 Item,function_call 是另一个 Item,工具结果则以 function_call_output 返回,并携带原始 call_id

应用环节Chat CompletionsResponses
请求messagesinput,以及可选的 instructions
最终文本choices[0].message.contentresponse.output_text 或带类型的 output Item
工具定义Function 嵌套在工具包装对象中Function 字段直接位于工具 Item 上
工具结果Tool 消息通过 call_id 匹配的 function_call_output
延续状态由应用保存消息记录previous_response_id、手动重放 Item,或 Conversations
流式输出delta 的数据块response.output_text.delta 等类型化事件

迁移中有两个很容易踩的坑。使用 previous_response_id 串联请求时,顶层 instructions 不会自动延续,因此每次都要重新发送。Structured Outputs 也从 response_format 移到了 text.format迁移指南列出了完整的解析、状态、工具与流式处理变更。

为什么重要:预算要同时覆盖两项变化

第一笔预算是工程时间。一套用于生产的工具循环会牵动端点、请求结构、输出解析器、function 定义、结果关联、状态处理、流式事件、日志、重试和评测。只替换模型名,绝大多数工作都还没有完成。

第二笔预算是每个已完成任务的成本。GPT-6 Astra 的 Standard 短上下文费率按每百万 token 计:输入、缓存输入、缓存写入和输出依次为 $10.00、$1.00、$12.50 和 $50.00。GPT-5.6 Sol 当前促销费率对应四项依次为 $4.00、$0.40、$5.00 和 $20.00。token 用量相同时,Astra 每一项的价格都是 2.5 倍。

端点本身不单独收费。账单来自模型 token、按价计费的内置工具、自有工具基础设施、重试,以及最终被放弃的工作。prompt 一旦超过 272,000 个输入 token,整次 Astra 请求的输入和缓存费率都会翻倍,输出费率则变为 1.5 倍。试点预算应采用当前价格页上的这些数字。

成本有可能被抵消,但必须用自己的数据验证。OpenAI 称,在内部测试中,Responses 的缓存利用率比 Chat Completions 高 40% 到 80%。OpenAI 还称,在多项评测中,尽管 Astra 的 token 单价更高,但由于输出 token 更少,其预估 API 单任务成本反而更低。这两项结论都不代表所有场景一定省钱。

真正该衡量的是:

cost per completed job = model tokens + built-in tool fees + your tool costs + retries + operator time

这里的分母至关重要。便宜的一次运行如果在临近结束时因纠偏而重启,最终每份成品的成本可能高于一次更贵、却能保住有效工作的运行。

异步工具调用如何改写等待流程

常规 function call 会暂停模型,直到应用返回结果。使用 Astra 时,由应用执行的 function 或 custom tool可以带上 async: true。模型发出调用后,无须原地等待:它可以继续推理、调用另一个互不依赖的工具,或先回答请求中不依赖该结果的部分,而应用则在后台执行任务。

任务依然由服务器负责。服务器必须启动任务、维护任务注册表、保存原始 call_id,并在后续 Responses 请求中送回结果。如果结果返回前已经发生了其他回合,继续请求应使用最新的 response ID,而工具输出仍要指向最初的 call ID。

对研究类产品而言,慢速数据供应商请求可以在后台执行,Astra 同时整理已经拿到的来源。对内部运营智能体而言,两次相互独立的账户查询可以先启动,模型则先起草报告中不依赖查询结果的部分。它减少的是空等时间,并不会让执行成本消失。

中途干预如何减少整轮重启

回合中途干预允许用户在 Astra 仍在工作时纠正任务方向。应用在同一个 Responses WebSocket 上发送 response.steer 事件,通过 previous_response_id 指向正在执行的 response,并附上新指令。服务器会先完成当前 output Item 和已经运行的托管工具工作,然后根据更新创建一个 continuation。

例如,代理机构的操作人员发现报告面向了错误市场,或工程负责人需要缩小正在生成的迁移方案范围,都可以在整个回合结束前调整方向。

已经消耗的工作不会被退回。中途干预不能改写已交付的输出、撤销此前的操作,也不能取消已经启动的工具。原始 response 与 continuation 分别计算 token 和工具调用上限。它的商业价值在于减少纠偏来得较晚时的整轮重启,但是否足够常见、是否值得投入,仍要实测。

中途干预仅限 Astra,并且必须使用 Responses WebSocket。排队中的干预只存在于那条连接上,因此应用需要记录每一条已接受的更新,并在断线后谨慎恢复。OpenAI 将单条 WebSocket 连接限制为 60 分钟。对于包含 20 次或更多工具调用的 WebSocket 上线场景,WebSocket 指南称端到端执行速度最多可提升约 40%,但这是传输方式带来的结果,并非对中途干预节省幅度的承诺。

黏土风工作坊里,Astra 智能体在异步工具运行时继续处理有效工作,中途干预指令则进入后续 continuation
异步工具消除了强制等待,中途干预把纠偏指令带入 continuation;任务与状态仍由应用负责。

一套可直接执行的 Responses API 迁移路径

先选一条低风险的 function 流程,不要从生产环境中最繁忙的智能体开始。

  1. 盘点真实改动面

    列出每一条会传入工具的 Chat Completions 路径,标记其请求构建器、工具结构、结果处理器、状态存储、流式消费端、重试策略和用量遥测。纯文本路径可以暂时保持不动,只迁移其中一条工具流程。

  2. 搭建 Responses 影子路径

    让同一批符合条件的测试用例同时通过 Responses,比较已完成任务的质量、延迟、输入 token、缓存 token、输出 token、工具调用、失败情况和人工介入次数。在证据足够可靠之前,不要改变生产路由。

  3. 只为一个独立工具启用 async

    选择一个速度较慢、且模型下一步工作不依赖其结果的 function。设置 async: true,连同 call_id 持久化任务,再以同一个 ID 返回结果。下面的官方 Python 示例展示了完整循环。

  4. 恢复机制可用后再加入中途干预

    使用 Responses WebSocket,记录已接受的干预 ID 与输入,并测试一次强制断线。纠偏功能如果没有重放和恢复机制,可能悄无声息地丢失用户指令。

按照 OpenAI 快速入门安装当前 Python SDK,并设置环境变量:

Bash
pip install openai
export OPENAI_API_KEY="your_api_key_here"

下面是 OpenAI 提供的可运行异步工具示例,使用演示天气数据。API 项目获得 Astra 访问权限后即可运行:

Python
import json
from concurrent.futures import ThreadPoolExecutor

from openai import OpenAI
from openai.types.responses import FunctionToolParam

def get_weather(city):
    # Demo data. Replace this function with your weather service.
    weather = {
        "Paris": {
            "city": "Paris",
            "temperature_c": 22,
            "condition": "Clear",
            "source": "demo weather snapshot",
        }
    }
    return weather[city]

worker = ThreadPoolExecutor()

def main():
    client = OpenAI()
    model = "gpt-6-astra"
    tools: list[FunctionToolParam] = [
        {
            "type": "function",
            "name": "get_weather",
            "description": "Read the demo weather snapshot for a city.",
            "async": True,
            "strict": True,
            "parameters": {
                "type": "object",
                "properties": {"city": {"type": "string"}},
                "required": ["city"],
                "additionalProperties": False,
            },
        },
    ]

    instructions = (
        "Start the weather lookup and answer the independent packing "
        "question without waiting. Use the actual tool result when it "
        "arrives; never invent it. Identify the weather as demo data."
    )
    response = client.responses.create(
        model=model,
        tools=tools,
        instructions=instructions,
        input=(
            "Check the demo weather in Paris. Meanwhile, "
            "list three essentials for any city trip."
        ),
    )

    call = next(item for item in response.output if item.type == "function_call")
    arguments = json.loads(call.arguments)
    if call.name != "get_weather" or arguments != {"city": "Paris"}:
        raise ValueError("Expected a weather lookup for Paris")

    latest_response_id = response.id
    if call.async_:
        job = worker.submit(get_weather, **arguments)
        print(response.output_text)
        # Independent work or conversation turns can happen here.
        # Update latest_response_id after each continuation.
        result = job.result()
    else:
        result = get_weather(**arguments)

    response = client.responses.create(
        model=model,
        tools=tools,
        instructions=instructions,
        previous_response_id=latest_response_id,
        input=[
            {
                "type": "function_call_output",
                "call_id": call.call_id,
                "output": json.dumps(result),
            },
        ],
    )
    print(response.output_text)

if __name__ == "__main__":
    try:
        main()
    finally:
        worker.shutdown(wait=True)

最容易漏掉的是 call_id: call.call_id 这一行。即使后续对话已经改变了最新 response ID,稍后返回的结果仍属于最初那次工具调用。

哪类团队该使用哪些能力

已经在调用 function 的后端团队

在这条路径采用 Astra 之前,先为 Responses API 迁移安排预算。这样可以在日志和评测可比的前提下受控切换,而不是同时调试端点、解析器和模型三项变化。

需要等待慢速服务的 SaaS 智能体

异步只适合真正互不依赖的工作。CRM 查询、内部搜索或文档导出可以先启动,Astra 同时处理另一个分支;如果某项依赖会阻塞下一步决策,就应保持同步,或使用显式 wait 工具。

监督长任务的运营或代理机构团队

如果一类纠偏通常会导致取消并重启,就为它开放中途干预。记录它实际避免了多少次重启,以及每次纠偏保留了多少已完成工作。这样得到的是商业依据,而不只是功能演示。

使用 Zero Data Retention 的受监管企业

Responses WebSocket 模式可与 store: false 和 Zero Data Retention 配合使用,但状态管理将由应用负责。按需保留加密 reasoning Item;response ID 不再可用时重放完整上下文;在向用户开放中途干预前,先设计好这条恢复路径。

必须说清楚的现实

Astra 的访问权限仍在陆续开放。现在可以准备迁移,但全面切换生产环境,应等到项目真正获得访问权限并完成针对自身工作负载的评测。

异步工具会增加任务注册表和乱序结果;中途干预会增加连接状态、continuation 处理与恢复逻辑。两者都可能减少无效等待或重启,也都会引入可能出错的新代码。

在拿到自己的遥测数据之前,价格账算不清。token 用量相同时,Astra 的成本是 GPT-5.6 Sol 当前促销费率的 2.5 倍。更高的缓存利用率、更少的输出 token 和更少的重启,或许能在部分任务中缩小差距。先用硬性支出上限约束试点,再根据每个已完成任务的成本和人工时间判断 Astra 是否值得采用。

下周一就做什么

  • 如果应用通过 Chat Completions 调用工具,并且计划使用 Astra,本周就盘点一条生产流程,为 Responses 影子路径安排资源。
  • 如果应用只处理文本,在访问权限陆续开放期间保持现状;这条路径并不强制迁移端点。
  • 如果慢速工具占据了大部分总耗时,试点一个异步 function,并衡量空等时间、失败情况和每个已完成任务的成本。
  • 如果较晚到来的人工纠偏经常导致重启,先通过 WebSocket 重连与重放测试,再做中途干预原型。
  • 如果 Astra 的 2.5 倍 token 费率在尚无实测抵消项时就已破坏单位经济性,让这类工作负载继续使用 GPT-5.6 Sol、Terra 或 Luna。

想继续把下一次平台变化转化为可执行的工作流与预算决策,欢迎订阅 newsletter

最近更新

2026年9月4日

分类Explained

在 Google 中优先显示本站

将 omidsaffari.com 添加为 Google 搜索的优先来源

把 omidsaffari.com 设为优先来源,Google 会在 Top Stories、AI Overviews 和 AI Mode 中为您优先展示。

更多 Explained 文章

查看全部 Explained 文章
订阅通讯

每周日,一封信。 写运转中的系统,不写热评。

来自一组 AI 项目组合运营的构建日志、生产系统与一线笔记。

每周一期。无垃圾邮件。随时退订。