HiAPI
博客

教程

如何通过 hiapi API 使用 kimi-k3:curl、Python 与可运行的请求示例

2026年11月3日
如何通过 hiapi API 使用 kimi-k3:curl、Python 与可运行的请求示例

你将构建什么

kimi-k3 是一个具备推理能力的对话模型,可通过标准 OpenAI 兼容的 /v1/chat/completions 端点在 hiapi 上使用——无需轮询异步任务,也无需上传图片。本指南将带你从零开始,用 curl 和 Python 完成一次可运行的调用,然后讲解生产环境中容易踩坑的两件事:推理 token 会挤占你的 max_tokens 预算,以及流式输出。

前置条件:一个 hiapi API 密钥。如果还没有,请从控制台获取——下面每个请求都通过 Authorization: Bearer sk-<your-key> 进行认证。

最小可运行示例

kimi-k3 是文本模型,因此不会经过 hiapi 为图像/视频模型使用的 /v1/tasks 任务队列——它是一次直接的同步对话补全调用。

curl

curl https://api.hiapi.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-<your-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kimi-k3",
    "messages": [
      {"role": "user", "content": "Explain what an API rate limit is in two sentences."}
    ],
    "max_tokens": 300
  }'

Python

import requests

resp = requests.post(
    "https://api.hiapi.ai/v1/chat/completions",
    headers={
        "Authorization": "Bearer sk-<your-key>",
        "Content-Type": "application/json",
    },
    json={
        "model": "kimi-k3",
        "messages": [
            {"role": "user", "content": "Explain what an API rate limit is in two sentences."}
        ],
        "max_tokens": 300,
    },
    timeout=60,
)
resp.raise_for_status()
data = resp.json()
print(data["choices"][0]["message"]["content"])

成功响应如下所示:

{
  "id": "chatcmpl-fb762e7481bd4442abb1d8ed3892b4f5",
  "model": "FW-Kimi-K3",
  "object": "chat.completion",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "OK",
        "reasoning_content": "We need answer user: \"Reply with exactly the word OK.\" ..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 95,
    "completion_tokens": 52,
    "total_tokens": 147,
    "completion_tokens_details": {"reasoning_tokens": 38}
  }
}

最终答案位于 choices[0].message.content。请求中的模型 ID 是裸 ID kimi-k3——hiapi 会在内部进行映射(响应体的 model 字段中会回显底层标签,例如 FW-Kimi-K3,这是预期行为)。

唯一的坑:推理 token 与 max_tokens

kimi-k3 是一个推理模型——它在生成最终 content 之前,会先把思维链写入 message.reasoning_content,而两者共享同一份 max_tokens 预算。如果 max_tokens 设置得太低,模型可能把整个预算都消耗在推理上,并返回 finish_reason: "length",同时 content 字段为空:

{
  "choices": [{
    "message": {"content": "", "reasoning_content": "The user is asking me to say \"OK\""},
    "finish_reason": "length"
  }]
}

这不是 bug——只是推理过程在到达最终答案之前用尽了空间。有两种处理方式:

  • 给它留足余量。对于简短的事实性回答,200–300 的 max_tokens 通常足以覆盖推理和答案。对于更长的生成内容,请相应提高预算。
  • 检查 finish_reason。如果返回 "length" 且 content 为空,请提高 max_tokens 后重试,不要把空字符串当作最终答案。

流式输出

设置 "stream": true 即可获得服务器发送事件(SSE),而无需等待完整响应。数据块会先携带增量 delta.reasoning_content,待模型开始写出最终答案后再携带 delta.content:

import requests

with requests.post(
    "https://api.hiapi.ai/v1/chat/completions",
    headers={
        "Authorization": "Bearer sk-<your-key>",
        "Content-Type": "application/json",
    },
    json={
        "model": "kimi-k3",
        "messages": [{"role": "user", "content": "Count to 3."}],
        "max_tokens": 200,
        "stream": True,
    },
    stream=True,
    timeout=60,
) as resp:
    for line in resp.iter_lines():
        if line and line.startswith(b"data: ") and line != b"data: [DONE]":
            print(line.decode("utf-8"))

如果你在构建聊天界面,请只对 delta.content 进行流式渲染——大多数应用会把 delta.reasoning_content 隐藏在“思考中”开关后面或折叠起来,而不是内联展示。

生产环境注意事项

  • 错误处理。无效或缺失的密钥会返回 HTTP 401 及结构化响应体:
    {"error": {"code": "permission_denied", "message": "This API key is invalid...", "request_id": "...", "type": "hiapi_error"}}
    
    请记录 request_id——如果你提交工单,支持团队需要它。
  • 重试。对话补全是同步的,因此没有任务 ID 可轮询,也没有回调可注册(那种模式适用于 hiapi 的异步图像/视频模型,不适用于文本)。遇到超时或 5xx 时,直接重试请求即可;由于服务端没有排队任何任务,可以将其视为普通的幂等、类 GET 重试。
  • 计费。kimi-k3 与平台上其他文本模型一样按 token 计费——在估算规模化成本之前,请先在定价页面查看当前费率,因为推理 token 会计入补全 token。

常见问题

kimi-k3 支持流式输出吗? 支持——传入 "stream": true,并按上文所示读取 text/event-stream 响应。

为什么我的响应中 content 为空? finish_reason 几乎肯定是 "length"——模型在到达最终答案之前,把整个 max_tokens 预算都花在了 reasoning_content 上。请提高 max_tokens 并重试。

kimi-k3 需要使用 hiapi 的 /v1/tasks 端点吗? 不需要。/v1/tasks 用于异步图像、视频和音乐生成模型。kimi-k3 是同步文本模型,通过标准的 /v1/chat/completions 端点提供服务。

我可以使用 OpenAI Python SDK 代替原生 requests 吗? 可以——将 SDK 的 base_url 指向 https://api.hiapi.ai/v1,并把你的 hiapi 密钥作为 API 密钥传入;请求/响应结构与 OpenAI 兼容。

请求中应传入什么模型 ID? 裸 ID kimi-k3。你会在响应体的 model 字段中看到类似 FW-Kimi-K3 的内部标签回显——这是预期行为,不影响计费或行为。

立即开始构建持久 AI 产物

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

阅读 API 文档