提供商目录
Moonshot Kimi API 指南
通过共享的客户 chat-completion 端点,使用当前已公布的 Moonshot Kimi 模型标识符和服务可用性信息。
- 选择 API 产品区分推理请求与模型训练工作流程。
- 阅读接口约定查看对应的 API 文档和 OpenAPI 参考。
- 创建受限密钥生成并妥善保管客户 API 密钥。
- 集成并验证发送文档说明的请求并检查响应。
- 监控并轮换密钥查看用量,并在适当时撤销或轮换密钥。
已公布的 Moonshot Kimi 模型
如果已启用模型注册表,此处会列出模型名称、准确的路由标识符、版本和推理状态。标识符为空表示目录尚未公布路由值;不要根据模型名称自行推导。
| 模型名称 | 准确的模型标识符 | 版本 | 推理状态 |
|---|---|---|---|
| Kimi K3.1 Pro | kimi-k3.1-pro |
— | 活动中 · 可用于推理 |
| Kimi K3.1 Pro Highspeed | kimi-k3.1-pro-highspeed |
— | 活动中 · 可用于推理 |
| Kimi K3 | 尚未公布路由标识符 | — | 缺少公开路由标识符,暂无法确认该模型是否支持直接调用。 |
| Kimi K2.7 Code | 尚未公布路由标识符 | — | 缺少公开路由标识符,暂无法确认该模型是否支持直接调用。 |
| Kimi K2.6 | 尚未公布路由标识符 | — | 缺少公开路由标识符,暂无法确认该模型是否支持直接调用。 |
| Kimi K2.5 | 尚未公布路由标识符 | — | 缺少公开路由标识符,暂无法确认该模型是否支持直接调用。 |
使用此提供商
- 请使用准确的模型标识符进行选择,并在配置应用前确认模型状态。显示名称供人识别;model 字段只能使用标识符。
- 每个提供商页面都提供兼容 OpenAI 和 Claude Messages 的示例。请选择客户端使用的协议;所选模型也必须支持请求的功能。
- 如果服务仅限现有客户,请保留现有账户访问权限;不要将已公布的模型列表视为开通新订阅的邀请。
模型 API 示例
选择已发布的模型标识符、API 协议和语言,以查看请求示例。请仅在可信服务器上保存客户 API 密钥。
协议要求
兼容 OpenAI 的请求使用 POST /chat/completions,并发送到配置的客户 API 基础 URL(默认值为 https://fusionpointai.com/api/v1)。使用具有推理权限的客户密钥,通过 Authorization: Bearer 进行身份验证。完整默认 URL 为 https://fusionpointai.com/api/v1/chat/completions。
Claude Messages 请求使用 POST /api/v1/messages。请将客户密钥放在 x-api-key 中,并将 anthropic-version 设为 2023-06-01。Anthropic SDK 的基础 URL 为 https://fusionpointai.com/api,因为 SDK 会追加 /v1/messages;也支持 Bearer 身份验证。
支持的功能
当前兼容 OpenAI 的聊天端点支持同步文本消息,不支持流式传输和工具调用。
Claude Messages 代理会保留原生内容块、工具数据以及真实的服务器发送事件(SSE)流式传输(前提是所选上游模型支持这些功能)。
安装客户端
Python 和 Node.js 客户端是两个独立的软件包,请分别安装:
Python: pip install openai anthropic
Node.js: npm install openai @anthropic-ai/sdk
curl 'https://fusionpointai.com/api/v1/chat/completions' \
-H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "kimi-k3.1-pro",
"messages": [
{
"role": "user",
"content": "Summarize this in one sentence."
}
],
"temperature": 0.7,
"max_tokens": 300
}'
请求模式
安全配置 API 密钥
创建具有推理权限的客户 API 密钥,并通过密钥管理器或环境变量将其提供给服务器进程。
- 在服务器环境中设置
FUSIONPOINTAI_API_KEY;不要将密钥嵌入浏览器代码或提交到源代码仓库。 - 使用 HTTPS,并将密钥限制为应用所需的账户和推理权限。
- 从日志、追踪记录和支持请求中删去 Authorization 和
x-api-key标头;如果密钥可能已泄露,请立即撤销。
export FUSIONPOINTAI_API_KEY="YOUR_CUSTOMER_API_KEY"
选择准确的模型标识符
模型字段用于路由请求,不是展示名称。请选择在线模型目录中发布的标识符。
- 选择已启用且标记为可用于推理的模型或旧版模型。
- 准确复制模型标识符,包括标点和版本后缀;不要根据模型名称自行推测 ID。
- 如果尚未发布标识符,请等待模型目录提供,而不要填写猜测值。
model_id = "kimi-k3.1-pro"
# Use this exact identifier with either protocol.
发送系统消息和多轮对话
请按原有顺序保留对话轮次,并仅使用所选协议和模型支持的角色及内容格式。
- 对于兼容 OpenAI 的请求,请按顺序发送 system、user 和 assistant 消息,并使用字符串作为内容。
- 对于 Claude Messages,请在协议原生字段中发送受支持的 system 指令以及按顺序排列的 user/assistant 轮次。
- 仅保留应用需要的对话上下文,并遵守所选模型的上下文长度限制。
response = client.messages.create(
model="kimi-k3.1-pro",
max_tokens=512,
system="Answer in clear, concise German.",
messages=[
{"role": "user", "content": "What is an API?"},
{"role": "assistant", "content": "An API lets software exchange requests and responses."},
{"role": "user", "content": "Give a practical example."},
],
)
for block in response.content:
if block.type == "text":
print(block.text)
请求 JSON 响应
如果应用需要结构化输出,请先根据应用自身的 schema 校验响应,再使用其中的数据。
- 使用所选协议和上游模型支持的结构化输出控制项。
- 将生成的 JSON 视为不可信输入:解析并校验必需字段和类型,同时妥善处理无效输出。
- 除非模型文档明确说明支持,否则不要假定模型与协议的组合支持 JSON 模式。
import json
# JSON is generated content, not trusted application input.
response = client.messages.create(
model="kimi-k3.1-pro", max_tokens=256,
messages=[{"role": "user", "content": 'Return only JSON with a string field named "summary". Explain an API in one sentence.'}],
)
text = "".join(block.text for block in response.content if block.type == "text")
try:
result = json.loads(text)
if not isinstance(result, dict) or not isinstance(result.get("summary"), str):
raise ValueError("Unexpected response schema")
print(result["summary"])
except (json.JSONDecodeError, ValueError) as error:
print("Handle invalid model output:", error)
接收实时 SSE 输出
流式传输行为取决于所选协议和上游模型;普通 JSON 响应并非流。
- 当前兼容 OpenAI 的聊天接口仅返回同步文本,不提供流式传输。
- 对于 Claude Messages,如果所选上游模型支持流式传输,请启用 stream 模式;代理会转发原生服务器发送事件。
- 逐步处理事件,在完成或出错时妥善停止;不要把部分输出当作完整答案。
# client is the Anthropic client configured above.
with client.messages.stream(
model="kimi-k3.1-pro", max_tokens=512,
messages=[{"role": "user", "content": "Explain API authentication."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
final_message = stream.get_final_message()
print("\nStop reason:", final_message.stop_reason)
处理工具、内容块和错误
保留协议原生结构,并明确规定应用对工具调用、多模态内容和失败情况的处理方式。
- 当前兼容 OpenAI 的聊天接口既不支持工具调用,也不支持非文本内容块。
- 如果所选上游模型支持,Claude 会保留原生内容块以及工具使用/结果数据;执行前请校验工具名称和参数。
- 检查 HTTP 状态码和响应正文,区分身份验证、权限、校验和速率限制错误,并通过退避策略重试临时性错误。
import json
from datetime import datetime, timezone
from anthropic import APIError
messages = [{"role": "user", "content": "What time is it in UTC?"}]
tools = [{
"name": "current_utc_time", "description": "Read the current UTC time.",
"input_schema": {"type": "object", "properties": {}, "additionalProperties": False},
}]
try:
reply = client.messages.create(model="kimi-k3.1-pro", max_tokens=256, messages=messages, tools=tools)
results = []
for block in reply.content:
if block.type == "tool_use":
if block.name != "current_utc_time" or block.input != {}:
raise ValueError("Unapproved tool request")
results.append({"type": "tool_result", "tool_use_id": block.id,
"content": json.dumps({"utc": datetime.now(timezone.utc).isoformat()})})
if results:
messages.append({"role": "assistant", "content": reply.content})
messages.append({"role": "user", "content": results})
reply = client.messages.create(model="kimi-k3.1-pro", max_tokens=256, messages=messages, tools=tools)
print("".join(block.text for block in reply.content if block.type == "text"))
except APIError as error:
# Log status only; never log keys or private prompts.
print("API request failed:", getattr(error, "status_code", None))
常见问题
请求中可以使用模型展示名称吗?
只能使用已发布供推理调用的准确标识符。展示名称不能用于路由;切勿猜测尚未发布的标识符。
客户密钥应放在哪个环境变量中?
两个协议都使用 FUSIONPOINTAI_API_KEY。请将其值保存在可信的服务器环境中,不要放入客户端代码或日志。
OpenAI 客户端应使用哪个 URL?
使用配置的客户 API 基础 URL,默认值为 https://fusionpointai.com/api/v1。聊天补全端点还需追加 /chat/completions。
为什么 Claude SDK 的基础 URL 与 cURL 不同?
Anthropic SDK 会追加 /v1/messages,因此其基础 URL 应设为 https://fusionpointai.com/api。直接发送 HTTP 请求时则使用完整的 /api/v1/messages URL。
兼容 OpenAI 的聊天接口支持流式传输或工具吗?
不支持。当前端点仅支持同步文本消息,不提供流式传输和工具调用。
是否保证所有 Claude 模型都支持内容块、工具或流式传输?
不保证。只有在所选上游模型支持时,才会保留这些原生功能。请查看该模型的能力说明,并妥善处理不受支持的请求。
Claude Messages · POST /messages
Claude Messages 请求使用 POST /api/v1/messages。请将客户密钥放在 x-api-key 中,并将 anthropic-version 设为 2023-06-01。Anthropic SDK 的基础 URL 为 https://fusionpointai.com/api,因为 SDK 会追加 /v1/messages;也支持 Bearer 身份验证。
Claude Messages 代理会保留原生内容块、工具数据以及真实的服务器发送事件(SSE)流式传输(前提是所选上游模型支持这些功能)。
| 字段 | 类型 | 必填 | 限制 |
|---|---|---|---|
model |
string |
是 | {"minLength":1,"maxLength":160} |
max_tokens |
integer |
是 | {"minimum":1,"maximum":100000} |
messages |
array |
是 | {"minItems":1,"maxItems":100,"items":{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["user","assistant"]},"content":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object","required":["type"],"properties":{"type":{"type":"string","maxLength":80}},"additionalProperties":true}}]}}}} |
system |
string | array |
否 | {"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object","required":["type","text"],"properties":{"type":{"const":"text"},"text":{"type":"string"}},"additionalProperties":true}}]} |
stream |
boolean |
否 | {"default":false} |
temperature |
number |
否 | {"minimum":0,"maximum":1} |
top_p |
number |
否 | {"minimum":0,"maximum":1} |
top_k |
integer |
否 | {"minimum":0,"maximum":100000} |
stop_sequences |
array |
否 | {"items":{"type":"string"}} |
tools |
array |
否 | {"items":{"type":"object","additionalProperties":true}} |
tool_choice |
object |
否 | {"additionalProperties":true} |
thinking |
object |
否 | {"additionalProperties":true} |
metadata |
object |
否 | {"additionalProperties":true} |
output_config |
object |
否 | {"additionalProperties":true} |
service_tier |
string |
否 | [] |
{
"id": "msg_example",
"type": "message",
"role": "assistant",
"model": "kimi-k3.1-pro",
"content": [
{
"type": "text",
"text": "A concise answer to the supplied question."
}
],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 12,
"output_tokens": 10
}
}
{"type":"error","error":{"type":"authentication_error","message":"Invalid or missing API key."}}
发送第一个请求
通过 HTTPS 向下方的基础 URL 发送请求。兼容 OpenAI 的文本聊天使用 POST /chat/completions;Claude Messages 使用 POST /messages。请在模型工作台中选择协议,并使用对应的准确 URL 和 JSON 格式。
API 基础 URL: https://fusionpointai.com/api/v1
请在账户的 API 密钥设置中创建或管理客户 API 密钥。将其作为 bearer token 发送,并保存在可信服务器上;不要放入浏览器代码、源代码库或公开日志。
密钥需要 ai:inference 权限范围,并且账户须有权访问相应的客户订阅。公开 API 密钥不是账户密码,切勿分享。
以下示例使用已注册的 JSON chat-completion 端点,以及兼容 OpenAI 的 Python 和 Node.js 客户端。请将密钥存放在 FUSIONPOINTAI_API_KEY 环境变量中。只有在上述目录中找到准确标识符后,才能替换 model 的值。
# Install the client for your application language.
# Python:
python -m pip install openai
# Node.js:
npm install openai
# Bash: enter the key without storing it in shell history.
read -rs -p 'FusionPointAI API key: ' FUSIONPOINTAI_API_KEY
export FUSIONPOINTAI_API_KEY
printf '\n'
# After finishing:
# unset FUSIONPOINTAI_API_KEY
curl 'https://fusionpointai.com/api/v1/chat/completions' \
-H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "kimi-k3.1-pro",
"messages": [
{
"role": "user",
"content": "Summarize this in one sentence."
}
],
"temperature": 0.7,
"max_tokens": 300
}'
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["FUSIONPOINTAI_API_KEY"],
base_url="https://fusionpointai.com/api/v1",
)
response = client.chat.completions.create(
model="kimi-k3.1-pro",
messages=[{"role": "user", "content": "Summarize this in one sentence."}],
temperature=0.7,
max_tokens=300,
)
print(response.choices[0].message.content)
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.FUSIONPOINTAI_API_KEY,
baseURL: "https://fusionpointai.com/api/v1",
});
const response = await client.chat.completions.create({
model: "kimi-k3.1-pro",
messages: [{ role: "user", content: "Summarize this in one sentence." }],
temperature: 0.7,
max_tokens: 300,
});
console.log(response.choices[0].message.content);
OpenAI · 请求与响应约定
此端点接收 JSON。消息按顺序发送;每条消息均须包含受支持的角色和字符串内容。可选生成控制参数必须符合下方的验证范围。响应为 JSON chat.completion 对象,包含 choices;提供商返回用量信息时还会包含 token 用量。
| 字段 | 类型 | 必填 | 限制 |
|---|---|---|---|
model | string | 是 | 字符串,最多 160 个字符;请使用已公布的标识符。 |
messages | array | 是 | 包含 1 至 100 条消息的数组。 |
messages[].role | string | 是 | 每条消息的角色为 system、user 或 assistant。 |
messages[].content | string | 是 | 每条消息的 content 均为字符串,最多 100,000 个字符。 |
temperature | number | 否 | 可选数值,范围为 0 至 2。 |
max_tokens | integer | 否 | 可选整数,范围为 1 至 100,000;所选模型的输出上限可能更低。 |
响应结构
成功响应包含 id、object(chat.completion)、created、model 和 choices。每个 choice 包含 index、assistant 消息和 finish_reason。响应还可能包含 token 数量统计。即使请求通过网关验证,仍可能受提供商特定限制约束。
{
"id": "chatcmpl_example",
"object": "chat.completion",
"created": 1700000000,
"model": "kimi-k3.1-pro",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "A concise summary of the supplied text."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 10,
"total_tokens": 22
}
}
访问权限、限制与安全操作
实时客户订阅不会按配额限制请求次数或 token 用量;沙盒密钥受其已公布的月度额度限制。此处的订阅说明与模型及上游技术限制无关。
- 模型上下文窗口、最大输出长度、支持的请求功能和临时上游流量控制各不相同。发送生产流量前,请查看提供商和模型信息。
- 此端点针对每个适用的限流身份,每分钟最多处理 60 个请求。HTTP 429 也可能表示触发了临时上游流量控制;请采用退避策略重试,不要密集循环重试。
- 请使用 HTTPS,在服务器端保管密钥,并仅授予所需的推理权限。如果密钥可能已泄露,请立即撤销。
- Chat Completions 支持同步文本。Claude Messages 可根据所选模型的能力,单独支持原生内容块、工具和 SSE。此处的接口约定不包括其他提供商端点。
提供商访问与账户要求
请使用具有 ai:inference 权限范围的客户 API 密钥进行身份验证,并确保该密钥所属账户有权访问此服务。目录会标明目前是否允许新客户使用,但不会因此授予访问权、创建订阅或覆盖账户及密钥权限。
错误与故障排查
端点以 JSON 错误对象返回验证失败和不可用的提供商结果,其中包含 message、type 和 code;验证失败时还可能包含字段详情。请勿在支持工单中提供 API 密钥或私人提示词内容。
chat 操作返回的请求验证错误和提供商故障采用 error 对象。身份验证、权限范围及限流中间件也可能改为返回顶层 message 字段。请结合状态码和响应体进行判断。
| HTTP 状态码 | 含义及后续操作 |
|---|---|
400 | 请求体无效。请检查必填字段、消息数量和内容、角色取值、temperature 及 max_tokens。
|
401 | 缺少 bearer 密钥或密钥无效。请确认密钥处于有效状态,并已通过 Authorization 请求标头发送。 |
403 | 密钥可能缺少所需的推理权限,或账户没有访问权限。请检查密钥权限和订阅访问权。 |
429 | 请求触发了限流或上游流量控制。请降低请求频率,并采用指数退避策略重试。 |
500 | 提供商未返回可用的 completion,或服务发生故障。请谨慎重试;联系支持团队时,提供时间戳和已删除敏感信息的请求标识符。 |
常见问题
可以将显示名称用作模型标识符吗?
只有当完全相同的字符串另行公布为路由标识符时才可以。请使用标识符列;如果该列为空,表示此处尚未公布路由值。
可以使用 Claude SDK 吗?
可以。在模型工作台中选择 Claude,并使用页面所示基础 URL 配置 Anthropic SDK。它发送原生 Messages 请求,而非 Chat Completions。具体能力仍取决于所选模型。
为什么已列出的模型仍可能无法使用?
模型可能暂不可用;您的账户或密钥可能尚未获得访问权限;也可能触发上游技术限制。请检查状态、标识符、密钥权限范围和错误响应。
提交支持请求时应包含哪些信息?
请提供提供商、准确的模型标识符、请求时间、HTTP 状态码,以及已删除敏感信息的请求 ID。请删除 API 密钥和敏感提示词内容。