教程
如何通过 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 模型页面——完整的参数参考和实时定价
- hiapi API 文档——认证、其他模型系列以及完整的端点列表
- hiapi 定价——gpt-6-astra 及所有其他模型的每 token 费率
常见问题
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 字段即可切换模型。可用性因模型而异,所以在假定某个模型已上线之前,请查看该模型自己的页面。