教程
如何通过 hiapi API 使用 DeepSeek V4 Flash:curl、Python 及可运行的请求示例
DeepSeek V4 Flash 是一个推理聊天模型,在 hiapi 上它的接入方式与平台上大多数模型不同:它不使用图像和视频生成所用的异步 POST /v1/tasks 队列,而是一个兼容 OpenAI 的聊天补全端点——POST /v1/chat/completions,支持同步或流式,无需轮询。本教程将带你用 curl 和 Python 发出一个可运行的请求,然后介绍两个在生产环境中确实容易踩坑的问题。
你将构建什么
一个最小脚本,通过 hiapi 向 deepseek-v4-flash 发送提示词并打印模型的回答——以及当这个脚本变成真实集成后你需要的模式:处理模型的推理 token 预算、流式传输、重试,以及文档中说明的错误结构。
前提条件:一个 hiapi API 密钥。从 hiapi 仪表盘获取——下方每个请求都通过 Authorization: Bearer sk-<your-key> 进行认证。
最小可运行示例
curl
curl https://api.hiapi.ai/v1/chat/completions \
-H "Authorization: Bearer $HIAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash",
"messages": [{"role": "user", "content": "Explain what a hash table is in two sentences."}],
"max_tokens": 500
}'
调用成功后返回标准的聊天补全对象:
{
"id": "gen-...",
"object": "chat.completion",
"model": "deepseek/deepseek-v4-flash",
"provider": "DeepInfra",
"choices": [{
"index": 0,
"finish_reason": "stop",
"message": {"role": "assistant", "content": "A hash table is ...", "reasoning": "..."}
}],
"usage": {
"prompt_tokens": 14, "completion_tokens": 187, "total_tokens": 201,
"completion_tokens_details": {"reasoning_tokens": 96}
}
}
有两点需要注意:请求时使用裸模型 ID deepseek-v4-flash——hiapi 会在内部将其解析到上游提供商,而响应中的 model 字段会回显一个带提供商限定的 ID(deepseek/deepseek-v4-flash),你应将其视为参考信息,而不是作为请求参数发回去。另外,消息中除 content 外还带有 reasoning 字段——这是一个推理模型,usage.completion_tokens_details.reasoning_tokens 会告诉你 completion_tokens 花费中有多少用于该思维链,多少用于可见回答。
Python
import os
import requests
resp = requests.post(
"https://api.hiapi.ai/v1/chat/completions",
headers={"Authorization": f"Bearer {os.environ['HIAPI_KEY']}"},
json={
"model": "deepseek-v4-flash",
"messages": [{"role": "user", "content": "Explain what a hash table is in two sentences."}],
"max_tokens": 500,
},
timeout=60,
)
resp.raise_for_status()
data = resp.json()
print(data["choices"][0]["message"]["content"])
由于该端点兼容 OpenAI,这段代码也可以不改动地配合官方 openai Python SDK 使用——只需将 base_url 指向 https://api.hiapi.ai/v1,并将 hiapi 密钥作为 api_key 传入。
生产环境使用模式
推理预算的坑:不要将 max_tokens 设得太低
max_tokens 限制的是推理加回答的合计开销,而不仅仅是可见回答。如果模型在达到上限时仍在推理,你会得到 finish_reason: "length" 且 content: null 的响应——消耗并计费了 token,却没有任何可展示的内容。对于任何非简单提示词,请给请求留出真正的余量(至少几百个 token),而不是把 max_tokens 削减到你认为回答所需的量。
为简单、确定性的任务关闭推理
如果任务不需要思维链——分类、简短查询、格式转换——你可以完全抑制推理:
{
"model": "deepseek-v4-flash",
"messages": [{"role": "user", "content": "Say OK and nothing else."}],
"max_tokens": 50,
"reasoning": {"enabled": false}
}
使用 reasoning.enabled: false 后,响应中的 message.reasoning 返回 null,completion_tokens_details.reasoning_tokens 为 0——你只为可见输出付费,延迟也相应降低。仅对额外思考确实能改善回答的任务保留默认(开启推理)行为。
流式传输
设置 "stream": true 即可获得标准 OpenAI 风格的服务器发送事件,而无需等待完整响应:
curl https://api.hiapi.ai/v1/chat/completions \
-H "Authorization: Bearer $HIAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"Count to 5."}],"stream":true}'
每个数据块都是一行 data: {...},携带增量的 choices[0].delta.content;最后一个数据块包含 usage,流以字面量 data: [DONE] 行结束。请在数据块到达时即时解析,而不是在客户端缓冲整个响应——这正是聊天 UI 使用流式传输的意义所在。
幂等性与重试
这里的聊天补全是无状态 HTTP 调用,不是排队任务——没有任务 ID 可供轮询,也不会意外地将内容重复提交到队列。重试关注的是普通 HTTP 问题:在传输错误或 5xx 时,使用退避策略重试;在 429 时,重试前遵守 Retry-After 响应头(参见速率限制文档)。对于表示错误请求的 4xx 错误(如格式错误的 messages)不要重试——而应修正请求体。
错误处理
无效或缺失的密钥会返回 HTTP 401:
{
"error": {
"code": "permission_denied",
"message": "...",
"request_id": "...",
"type": "hiapi_error"
}
}
在错误处理器中检查 error.code,而不是对消息字符串做模式匹配——permission_denied 才是稳定的标识符。如果你使用自认为有效的密钥却收到此错误,请参阅认证文档。
相关阅读
- hiapi 认证文档——
Authorization标头和密钥作用域在整个平台上的工作方式。 - hiapi 速率限制文档——
429行为与Retry-After。 - deepseek-v4-flash 模型页面——当前定价与能力说明。
FAQ
我需要像使用 hiapi 的图像/视频模型那样轮询结果吗?
不需要。hiapi 上的图像和视频生成走异步 /v1/tasks 队列(创建 → 轮询或回调 → 下载 output[0].url)。像 deepseek-v4-flash 这样的聊天模型只是对 /v1/chat/completions 的普通同步(或流式)HTTP 调用——你会在响应中直接得到答案。
为什么 usage.completion_tokens 比可见回答看起来应花费的更高?
因为它包含推理 token。检查 usage.completion_tokens_details.reasoning_tokens 查看拆分,并在不需要模型展示思考过程时使用 "reasoning": {"enabled": false}。
我的响应带有 "finish_reason": "length" 且 content 为空——发生了什么?
模型在仍处于推理阶段时耗尽了 max_tokens,从未写出可见回答。请提高 max_tokens,或为更简单的提示词禁用推理。
我可以使用官方 OpenAI SDK 代替原始 HTTP 调用吗?
可以——将 SDK 的 base_url 设为 https://api.hiapi.ai/v1,api_key 设为你的 hiapi 密钥;请求/响应结构一致。
我在哪里可以找到该模型的当前定价? 在模型页面或实时定价页面——每 token 成本可能因上游提供商路由而略有差异,因此请在那里查看,而不要依赖本文中的数字。