HiAPI
博客

使用指南

通过 hiapi API 使用 DeepSeek V4.1 Flash 处理电商产品图片

它不会生成图片——但会围绕你的产品 Listing 撰写其他所有内容。

2026年11月3日
通过 hiapi API 使用 DeepSeek V4.1 Flash 处理电商产品图片

DeepSeek V4.1 Flash 不生成产品图——以下说明它在电商技术栈中真正擅长什么

如果你是因为“产品图片”这个词点进来的,DeepSeek V4.1 Flash 并不能生成它们——它是一个纯文本模型,完全没有图像、音频或视频输出。但电商目录所依赖的文字比图片多得多:每个 Listing 需要描述,每张图片需要替代文本,每个客户问题需要答案,每个广告渠道需要同一卖点的不同版本。这正是该模型所擅长的层面,而且它恰好在这个任务上异常便宜且灵活——它同时支持 /v1/chat/completions 和 /v1/responses,所以你无需围绕单一请求格式重建集成。本指南涵盖产品图片工作流中的文本部分:使用结构化输出的批量描述生成、客户支持问答,以及多渠道文案变体——并附有基于 hiapi API 的真实请求示例。如果你需要图片本身,可以将它与 GPT Image 2 这样的图像模型配合使用,让 DeepSeek V4.1 Flash 处理围绕图片的所有文字内容。

为什么双 API 接口很重要

hiapi 上的大多数推理级模型只选择一条路径——Chat Completions 或 Responses——并一直使用。DeepSeek V4.1 Flash 原生支持 POST /v1/chat/completions 和 POST /v1/responses,这意味着你可以将它接入已有的集成,而不必专门为这个模型构建新的客户端。以下几点在两个端点上都适用:

  • reasoning_effort 有五个实际级别。 定价页面文案只提到了 none、high 和 max,但模型在实际请求中也接受 low 和 medium——五个级别都有效。对于 Listing 文案这类简短、确定性的任务,none 或 low 就足够了;将 high/max 留给需要判断的场景,例如政策敏感的客服回复。
  • 结构化输出在不同端点上的行为不同。 对于这个模型,在 /v1/chat/completions 上使用 response_format: {"type": "json_schema", ...} 不会返回经过 schema 验证的结果——请改用 response_format: {"type": "json_object"},并在提示词中描述结构。如果你需要强制 schema 验证,请将相同的请求发送到 /v1/responses,并设置 text.format.type=json_schema,它会遵守该设置。
  • 函数调用和流式传输均按预期工作,在 /v1/chat/completions 上——tools、tool_choice 和 stream: true 的行为与 hiapi 上任何其他 OpenAI 兼容聊天模型相同,因此现有的工具调用代码无需调整。

Base URL 为 https://api.hiapi.ai/v1,与你其他 hiapi 模型使用相同的密钥。两个端点的完整请求/响应格式见模型页面。

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

最直接的匹配是将规格表大规模转化为符合品牌调性的 Listing 文案,并以你的 CMS 可以直接导入、无需后处理的格式输出。在 Chat Completions 上,json_object 模式加上提示词中的明确 schema 可以可靠地实现这一点:

import json
import requests

resp = requests.post(
    "https://api.hiapi.ai/v1/chat/completions",
    headers={
        "Authorization": f"Bearer {HIAPI_KEY}",
        "Content-Type": "application/json",
    },
    json={
        "model": "deepseek-v4.1-flash",
        "reasoning_effort": "none",
        "response_format": {"type": "json_object"},
        "messages": [
            {
                "role": "system",
                "content": (
                    "You write concise, factual e-commerce listing copy. "
                    "Never invent specs that aren't in the input. "
                    "Respond with JSON matching this shape: "
                    '{"title": str, "short_description": str, '
                    '"long_description": str, "bullet_points": [str]}'
                ),
            },
            {
                "role": "user",
                "content": (
                    "Product: ceramic pour-over coffee dripper, 400ml, "
                    "matte white, dishwasher safe, fits standard filters. "
                    "Write listing copy for this product."
                ),
            },
        ],
    },
)
listing = json.loads(resp.json()["choices"][0]["message"]["content"])

针对产品数据库中的每个 SKU 运行此操作,你就能获得一致的文案,而无需从聊天窗口中手动编辑文本。如果你希望响应在格式错误时明确报错,而不是依赖模型对提示词的遵守,请将等效请求发送到 /v1/responses 并设置 text.format.type=json_schema——该路径会在返回前根据你的 schema 验证输出。

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

对于支持助手,两个端点都要求你重放正在进行的对话——两者默认都不在调用之间保留状态,因此对话历史由你的应用管理,而不是供应商。如果你需要从自己的数据库中对对话进行脱敏、分支或恢复,而不是信任供应商的会话存储,这一点很有用。

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/chat/completions",
        headers={"Authorization": f"Bearer {HIAPI_KEY}", "Content-Type": "application/json"},
        json={
            "model": "deepseek-v4.1-flash",
            "reasoning_effort": "low",
            "messages": history,
        },
    )
    answer = resp.json()["choices"][0]["message"]["content"]
    history.append({"role": "assistant", "content": answer})
    return answer

对于任何需要检查订单状态或触发退货的操作,请在 tools 中将其声明为函数——模型会返回一个 tool_calls 条目,你的后端执行它,然后你追加一条包含结果的 role: "tool" 消息,再再次调用。这样模型就永远不会直接接触你的订单数据库,而且它的工作方式与 hiapi 上任何其他 OpenAI 兼容聊天模型相同。

用例 3:针对不同渠道的营销文案变体

同一组产品事实在产品页面、电子邮件主题行和 30 字符的广告标题中需要不同的措辞。在 /v1/chat/completions 上使用 stream: true,你可以在一次请求中生成多个渠道变体,并在它们到达时渲染,而不是等待完整响应——如果这要馈送到内部工具中的实时预览,这会很有用。这里也将 reasoning_effort 保持在 none 或 low;匹配短文案的语气不需要更重的推理,而且当营销人员实时迭代时,这可以保持低延迟。

费用是多少

DeepSeek V4.1 Flash 按 token 统一计费,没有需要预先规划的阶梯悬崖:

输入 输出 缓存输入
$0.44 / 1M tokens $1.32 / 1M tokens $0.014 / 1M tokens

对于上述用例——单个产品描述、一轮支持对话、一批渠道变体——每次调用的花费仅为几分钱的零头。缓存输入费率值得有意识地使用:如果你的系统提示词很长且在数千次 SKU 调用中重复,保持它在请求之间逐字节相同,才能使其符合缓存费率条件。费率基于使用量并可能变化——在承诺进行大批量任务之前,请查看 hiapi.ai/pricing。

这与你技术栈其余部分的关系

这些都不能替代实际的图像模型——DeepSeek V4.1 Flash 没有 /v1/tasks 访问权限,也无法产生视觉输出。如果你的工作流需要与这些文案配套的产品摄影或生活场景照片,那是对 GPT Image 2 等图像模型的单独调用,两者不共享请求格式或端点。如果你已经读过 GPT-6 Astra 电商指南,这个问题的形态完全相同——区别在于 DeepSeek V4.1 Flash 为你提供了端点选择和平坦的成本曲线,而不是分层的成本曲线。

FAQ

DeepSeek V4.1 Flash 能生成产品图片吗? 不能。它是一个纯文本模型,没有图像、音频或视频输出,可通过 /v1/chat/completions 或 /v1/responses 访问。请将它与图像模型配合,以处理产品 Listing 的视觉部分。

对于这个模型,我应该使用 Chat Completions 还是 Responses? 两者都可以——选择与你现有集成匹配的那个。唯一有影响的情况是强制结构化输出:json_schema 验证在 /v1/responses 上有效,但在 /v1/chat/completions 上无效,在后者上应改用 json_object 模式。

reasoning_effort 有什么作用,我应该使用哪个级别? 它控制模型在回答前进行多少内部推理,以延迟和成本换取判断质量。所有五个级别(none、low、medium、high、max)在实际请求中都有效,尽管定价页面只列出了三个。对于描述生成这类简短、确定性的任务,使用 none 或 low;将 high 或 max 留给涉及判断的支持回复。

流式传输能与工具调用同时使用吗? 可以——stream: true 和 tools 在 /v1/chat/completions 上都可独立工作,并且可以在同一个请求中组合使用,与 hiapi 上任何其他 OpenAI 兼容聊天模型相同。

我需要在每轮支持对话中重放完整对话吗? 是的,在两个端点上都需要。两者默认都不在调用之间保留对话状态,因此你的应用每次都需要重新发送所需的历史记录。这会增加重放输入 token 的成本,但这意味着你可以控制包含哪些上下文,并可以从自己的数据库中对对话进行脱敏或分支。

缓存输入费率是自动的吗? 只有当请求的前导部分(通常是系统提示词)在调用之间逐字节相同时,才会自动应用。请检查响应中的 usage 对象中的 cached_tokens,而不是假设已应用折扣。

立即开始构建持久 AI 产物

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

阅读 API 文档