HiAPI
博客

使用指南

通过 hiapi API 使用 gpt-6-astra 生成电商产品图片

它不会生成照片——但它能撰写产品列表中的其余所有内容。

2026年11月3日
通过 hiapi API 使用 gpt-6-astra 生成电商产品图片

GPT-6 Astra 不生成图片——以下是它在电商技术栈中真正的用武之地

如果你来这里是指望 GPT-6 Astra 来绘制产品照片,那它做不到——它是一个纯文本与推理模型,通过 /v1/responses 端点访问,完全不输出图像、音频或视频。但对电商团队来说,这并非死路一条。每张产品图片都生活在一个页面上,而这个页面还需要描述、alt 文本、客服答复,以及同一套卖点的三个广告渠道版本——而 GPT-6 Astra 恰恰就是为这一层而生的。本指南涵盖产品图片工作流中的文本部分:批量描述生成、用于商品列表的结构化数据提取,以及客户问答——并附上针对 Responses API 的真实请求示例。如果你需要照片本身,请把它与 GPT Image 2 这样的图像模型搭配使用,让 GPT-6 Astra 处理围绕照片的所有文字内容。

为什么用 Responses API,而不是 Chat Completions

GPT-6 Astra 仅通过 POST /v1/responses 暴露——与 OpenAI 为其较新推理模型使用的端点家族相同——而不是较旧的 Chat Completions 形态。如果你要把它接入产品流水线,有三处差异很重要:

  • 用 input 而不是 messages。 你传入的是一个输入项数组,而不是 messages 列表。请改造你的 Chat Completions 客户端,而不是原样复用它构建请求的代码。
  • 实践中默认 stream=true,状态用 store=false。 模型会在文本到达时流式发出 response.output_text.delta 事件,并在一个结构化项完成时发出 response.output_item.done。使用 store=false 时,调用之间服务端不会保留任何内容——如果你在运行多轮客服对话,需要在下一个 input 数组中自行重放先前的用户/助手轮次。
  • 用 reasoning.effort 而不是 temperature。 此集成没有 temperature、top_p 或 max_output_tokens 调节项。你通过 reasoning.effort 控制输出质量/延迟,取值为 low、medium、high、xhigh 或 max 之一(没有 none——推理无法关闭)。对于描述生成这类简短、确定性任务,low 或 medium 通常就够了;把 high 及以上留给需要判断力的场景,比如起草涉及政策敏感问题的客服回复。

基础 URL 为 https://api.hiapi.ai/v1,密钥与你其他 hiapi 模型相同。

用例 1:用结构化输出批量生成产品描述

最直接的电商契合点,是把规格表大规模转化为符合品牌调性的商品列表文案。与其从模型返回的自由文本中再解析,不如使用 text.format.type=json_schema,让每个响应都以你的 CMS 可直接摄入的形状返回——标题、简短描述、长描述和要点列表,全部在一次调用中完成。

import json
import requests

resp = requests.post(
    "https://api.hiapi.ai/v1/responses",
    headers={
        "Authorization": f"Bearer {HIAPI_KEY}",
        "Content-Type": "application/json",
    },
    json={
        "model": "gpt-6-astra",
        "store": False,
        "reasoning": {"effort": "low"},
        "input": [
            {
                "role": "system",
                "content": "You write concise, factual e-commerce listing copy. "
                            "Never invent specs that aren't in the input.",
            },
            {
                "role": "user",
                "content": "Product: ceramic pour-over coffee dripper, 400ml, "
                            "matte white, dishwasher safe, fits standard filters. "
                            "Write listing copy for this product.",
            },
        ],
        "text": {
            "format": {
                "type": "json_schema",
                "name": "listing_copy",
                "schema": {
                    "type": "object",
                    "properties": {
                        "title": {"type": "string"},
                        "short_description": {"type": "string"},
                        "long_description": {"type": "string"},
                        "bullet_points": {
                            "type": "array",
                            "items": {"type": "string"},
                        },
                    },
                    "required": [
                        "title",
                        "short_description",
                        "long_description",
                        "bullet_points",
                    ],
                    "additionalProperties": False,
                },
            }
        },
    },
    stream=False,
)
data = resp.json()

针对你的产品数据库按 SKU 运行这段代码,你得到的就是一致且经过 schema 校验的文案,而不是从聊天窗口里复制粘贴出来的散文。请让系统提示严格禁止虚构规格——如果你放任不管,模型会很乐意对你根本没给它的功能写得绘声绘色。

用例 2:基于自有文档的客户支持问答

对于客服助手,关键模式是 store=false 的重放循环。每一轮,你都把当前对话加上任何工具结果放回 input 中发送;你不发送的内容,模型一概不记得。这是有意的权衡——代价是重放输入 token 会略贵一些,但意味着对话状态归你的应用所有,而不是归供应商所有(如果你需要从自己的数据库中脱敏、分支或恢复对话,这会很有用)。

history = [
    {"role": "system", "content": "Answer only from the provided product FAQ context. "
                                    "If the answer isn't in context, say so and offer to escalate."},
]

def ask(user_message: str, faq_context: str) -> str:
    history.append({"role": "user", "content": f"Context:\n{faq_context}\n\nQuestion: {user_message}"})
    resp = requests.post(
        "https://api.hiapi.ai/v1/responses",
        headers={"Authorization": f"Bearer {HIAPI_KEY}", "Content-Type": "application/json"},
        json={
            "model": "gpt-6-astra",
            "store": False,
            "reasoning": {"effort": "medium"},
            "input": history,
        },
    )
    answer = resp.json()["output"][-1]["content"][0]["text"]
    history.append({"role": "assistant", "content": answer})
    return answer

对于任何需要查询订单状态或触发退货的操作,请在 tools 中将其声明为函数——模型会返回一个 function_call,你的后端执行它,然后在模型继续之前,你通过 function_call_output 把结果带上相同的 call_id 回传。这样可确保模型永远不直接接触你的订单数据库。

用例 3:面向不同渠道的营销文案变体

同一组产品事实,在产品页面、邮件标题和 30 字符的广告标题中需要不同的措辞。由于 GPT-6 Astra 会流式发出 response.output_text.delta 事件,你可以在一次调用中生成多个渠道变体,并在内容到达时即时渲染,而不必等待完整响应——如果这要用于内部工具的实时预览,会很有用。这里同样把 reasoning.effort 保持在 low;短文案的语气匹配不需要更强推理,而且能在营销人员实时迭代时保持低延迟。

费用如何计算

GPT-6 Astra 按 token 计费,且存在一个硬性档位断崖,而非边际加价——在一次请求中批量处理大型商品目录之前,值得先了解清楚:

档位 输入 输出 缓存输入 缓存写入
标准(≤272,000 输入 token/请求) $2.50 / 100 万 tokens $12.50 / 100 万 tokens $0.25 / 100 万 tokens $3.125 / 100 万 tokens
长上下文(>272,000 输入 token/请求) $5.00 / 100 万 tokens $18.75 / 100 万 tokens $0.50 / 100 万 tokens $6.25 / 100 万 tokens

该阈值是针对请求的总输入来检查的——包括缓存读取和写入——一旦越过,整个请求都按长上下文费率计费,而不仅仅是超过 272,000 的那部分 token。对于上述用例(单品描述生成、一轮客服对话、一个文案变体),你离这条线还很远;它主要在你把整个商品目录或一份长文档塞进一次调用时才有影响。在承诺执行批量任务前,请查看 hiapi.ai/pricing 获取当前费率,因为这些费率基于用量且可能变化。

这与技术栈其余部分如何配合

以上任何内容都无法替代真正的图像模型——GPT-6 Astra 没有 /v1/tasks 访问权限,也无法产生视觉输出。如果你的工作流需要与这些文案配套的产品摄影或生活场景图,那需要单独调用 GPT Image 2 之类的图像模型,而且两者的请求格式和端点并不互通。完整配置详情,包括模型 ID 和确切的请求形状,见 GPT-6 Astra API 指南和模型页面。

常见问题

GPT-6 Astra 能生成产品图片吗? 不能。它是一个通过 /v1/responses 访问的纯文本模型,不输出图像、音频或视频。请为商品列表的视觉部分搭配一个图像模型。

input 与我在 Chat Completions 中使用的 messages 数组有什么区别? input 是 Responses API 用于对话轮次和内容的请求字段——它不是 messages 的直接替代品,因此 Chat Completions 客户端代码需要改造,而不仅仅是改个字段名。

对于描述生成这类简单任务,我需要关闭推理吗? 你无法关闭它——不存在 reasoning.effort=none。对于简短、低风险的生成任务请使用 low;它是五个档位中最快、最便宜的。

store=false 是否意味着我会丢失对话历史? 不,它意味着平台不会替你存储。你的应用会在下一个 input 数组中重放它需要的轮次,这让你能控制包含哪些上下文(也让你能脱敏或分支对话),代价是这些 token 需要再次作为输入付费。

在许多产品描述调用中重复相同的系统提示,能获得缓存折扣吗? 不保证。缓存命中取决于服务端策略和时机,而不仅仅是字面重复——请检查响应 usage 对象中的 cached_tokens,而不要假定折扣一定适用。

如果我把整个商品目录批量塞进一次请求会怎样? 如果总输入 token(包括任何缓存内容)超过 272,000,整个请求——输入、输出和缓存用量——都按长上下文费率计费,而不仅仅是超过阈值的部分。对于大多数单品或单次对话调用,这不适用,但在把大型目录批量塞进一次调用前,值得先检查 token 数量。

立即开始构建持久 AI 产物

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

阅读 API 文档