HiAPI
博客

教程

如何通过 hiapi API 使用 gpt-6-astra:curl、Python 及可运行的请求示例

2026年11月3日
如何通过 hiapi API 使用 gpt-6-astra:curl、Python 及可运行的请求示例

gpt-6-astra 是一款具备推理能力的文本模型,现已在 hiapi 上线,可通过一个兼容 OpenAI 的端点访问:/v1/responses。本指南提供一个可运行的 curl 和 Python 请求示例,一个容易让人踩坑的非显而易见要求(必须使用流式),以及上线前所需的生产实践模式。

你将构建什么

一个向 gpt-6-astra 发送提示词、并通过流式响应读取模型回答的脚本。这里没有轮询,也没有任务 ID——这是一次同步的聊天式调用,只是以 Server-Sent Events 的形式交付,而不是一个阻塞式的 JSON 响应。

前提条件:一个 hiapi API 密钥。请从 控制台 获取——下面每个请求都需要在 Authorization 请求头中携带它。

最小可运行示例

gpt-6-astra 只支持一个端点——POST /v1/responses——并且只接受 "stream": true。无论请求负载中还有什么其他内容,发送 "stream": false 都会返回 400 invalid_request 错误;该模型在 hiapi 上没有非流式模式。请围绕读取事件流来设计你的客户端,而不是围绕单个 JSON 响应。

curl

curl -N -X POST "https://api.hiapi.ai/v1/responses" \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-astra",
    "input": [
      {
        "type": "message",
        "role": "user",
        "content": [
          { "type": "input_text", "text": "Explain one practical way to check an AI-generated answer against its source." }
        ]
      }
    ],
    "stream": true,
    "store": false,
    "reasoning": { "effort": "medium" }
  }'

-N 会禁用 curl 的输出缓冲,这样你就能在事件到达时立即看到,而不是等到最后一次性全部收到。响应类型为 text/event-stream,每个 data: 行是一个 JSON 对象,并有一个 event: 行标明其类型。一次精简的运行结果如下所示:

event: response.created
data: {"type":"response.created","response":{"id":"resp_...","status":"in_progress", ...}}

event: response.output_text.delta
data: {"type":"response.output_text.delta","delta":"OK", ...}

event: response.completed
data: {"type":"response.completed","response":{"status":"completed","usage":{"input_tokens":12,"output_tokens":5,"total_tokens":17}, ...}}

你真正想要的文本会通过反复出现的 response.output_text.delta 事件流式传入——按顺序拼接 delta 字段即可得到完整回答。response.completed 会携带最终的 usage 块,用于成本追踪。

Python

import json
import requests

payload = {
    "model": "gpt-6-astra",
    "input": [
        {
            "type": "message",
            "role": "user",
            "content": [
                {
                    "type": "input_text",
                    "text": "Explain one practical way to check an AI-generated answer against its source.",
                },
            ],
        },
    ],
    "stream": True,
    "store": False,
    "reasoning": {"effort": "medium"},
}

with requests.post(
    "https://api.hiapi.ai/v1/responses",
    headers={
        "Authorization": "Bearer sk-your-api-key",
        "Content-Type": "application/json",
    },
    json=payload,
    stream=True,
    timeout=60,
) as resp:
    resp.raise_for_status()
    answer = []
    for line in resp.iter_lines():
        if not line or not line.startswith(b"data: "):
            continue
        event = json.loads(line[len(b"data: "):])
        if event.get("type") == "response.output_text.delta":
            answer.append(event["delta"])
        elif event.get("type") == "response.completed":
            usage = event["response"]["usage"]
            print(f"\n\ntokens: {usage['input_tokens']} in / {usage['output_tokens']} out")

    print("".join(answer))

resp.raise_for_status() 会在你开始解析 SSE 行之前捕获 HTTP 层面的失败(认证、速率限制)——格式错误的流与被拒绝的请求是两种不同的失败模式,你需要在错误处理中区分它们。

请求负载中有两个字段值得特别说明:

  • input 是消息对象的数组,而不是一个平铺的字符串——每个条目都需要 type: "message"、一个 role,以及一个由带类型的部分组成的内容数组(纯文本用 input_text)。
  • reasoning.effort(low / medium / high)是可选的,但它控制模型在回答前进行多少内部推理。不设置的话,hiapi 会应用默认值;如果你要权衡延迟与回答质量,请显式设置它。

生产注意事项

  • 流式不是可选项。不要构建一个在重试时回退到 stream: false 的代码路径——对该模型来说它每次都会失败。如果你的框架或 SDK 假定单个 JSON 响应,请封装上面的 SSE 循环,并在移交之前缓冲拼接后的文本。
  • 认证失败是明确的。无效或已撤销的密钥会返回 HTTP 401,错误正文中带有 "code": "permission_denied"——请检查该代码,而不是对消息字符串进行模式匹配,因为字符串可能会变化。
  • store: false 使请求无状态。hiapi 不会在服务器端保留响应,因此在后续调用中没有 previous_response_id 可用于链接。如果你需要多轮上下文,请将之前的轮次作为额外的 input 消息重新发送,而不是依赖服务器端的对话状态。
  • 无论是否流式,都要设置客户端超时。SSE 连接可能会在连接断开时挂起,而双方都没有发送干净的关闭信号;在初始 requests.post 上设置 timeout(如上面的示例)可以防止首字节停滞,但你还应在自己的代码中跟踪最大流持续时间,以实现纵深防御。
  • 对重复的系统上下文复用 prompt_cache_key。响应负载中包含一个 prompt_cache_key;如果你每次调用都发送相同的指令,将请求保持在同一个键上可以让 hiapi 应用提示词缓存,而不是每次都重新处理它们。

相关阅读

常见问题

gpt-6-astra 支持 /v1/chat/completions 吗? 不支持。通过 /v1/chat/completions 调用它会返回 400 unsupported_endpoint 错误,提示你改用 /v1/responses。它在 hiapi 上只注册用于 Responses API。

我可以获得单个 JSON 响应而不是流吗? 对该模型来说不可以。"stream": false 会被直接拒绝(invalid_request),无论是否设置了其他参数。请围绕消费 SSE 流并在客户端组装最终文本来构建你的集成,如上所示。

gpt-6-astra 支持工具调用吗? 该模型在 Responses API 请求结构中接受 tools 数组(未设置时在响应对象中显示为空数组)。如果你要接入函数调用,请按照任何兼容 OpenAI Responses API 的模型的方式来定义你的工具,并留意流中带有 function_call 类型的 response.output_item.added 事件。

速率限制或配额错误是什么样的? 与其他 hiapi 错误一样,它会以 JSON 形式返回,带有 type: "hiapi_error" 和一个你可以据此分支处理的 code 字段,外加一个 request_id——联系支持时请包含该 ID,以便他们能在服务器端追踪确切的请求。

我可以在 hiapi 上的其他推理模型中使用相同的请求结构吗? /v1/responses 请求结构在 hiapi 兼容 OpenAI Responses 的模型系列中共享——只需替换 model 字段即可切换模型。可用性因模型而异,所以在假定某个模型已上线之前,请查看该模型自己的页面。

立即开始构建持久 AI 产物

获取 API 密钥,通过一个基于任务(task)的 API 调用图像、视频和音频模型。

阅读 API 文档