Authentication
按协议发送 API Key
API Key 应保存在服务端环境变量或受控的密钥管理系统中。下面的值仅为占位符,不要把真实凭证写入公开代码、日志或截图。
| 协议 | 请求头 | 示例 |
|---|---|---|
| OpenAI 兼容 | Authorization | Bearer YOUR_API_KEY |
| Claude 原生 | x-api-key | YOUR_API_KEY |
| Gemini 原生 | x-goog-api-key | YOUR_API_KEY |
Authentication
API Key 应保存在服务端环境变量或受控的密钥管理系统中。下面的值仅为占位符,不要把真实凭证写入公开代码、日志或截图。
| 协议 | 请求头 | 示例 |
|---|---|---|
| OpenAI 兼容 | Authorization | Bearer YOUR_API_KEY |
| Claude 原生 | x-api-key | YOUR_API_KEY |
| Gemini 原生 | x-goog-api-key | YOUR_API_KEY |
Endpoint Map
| 模型标签 | 方法与路径 | 请求体核心字段 | 响应形态 |
|---|---|---|---|
| openai | POST /v1/chat/completions | model、messages | choices |
| openai-response | POST /v1/responses | model、input | Response 对象 |
| anthropic | POST /v1/messages | model、max_tokens、messages | Message 对象 |
| gemini | POST /v1beta/models/{model}:generateContent | contents | candidates |
不要根据模型厂商品牌猜测协议。例如 Claude 或 Gemini 模型也可能提供 OpenAI 兼容入口;最终以模型广场显示的端点标签为准。
OpenAI Compatible
适用于显示 openai 标签的模型。Base URL 通常填写到 /v1,请求路径为 /chat/completions。
curl https://api.muxllm.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MODEL_NAME",
"messages": [
{ "role": "system", "content": "你是一个简洁的技术助手。" },
{ "role": "user", "content": "用三句话说明统一模型 API 的作用。" }
]
}'
在目标模型支持流式响应时加入 "stream": true。客户端应逐行消费 SSE,并处理结束标记和中途断线。
curl -N https://api.muxllm.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MODEL_NAME",
"messages": [{ "role": "user", "content": "分步骤解释这个概念。" }],
"stream": true
}'
Responses API
仅用于显示 openai-response 标签的模型。它与 Chat Completions 的请求结构不同,不能只替换路径。
curl https://api.muxllm.com/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MODEL_NAME",
"input": "列出排查 API 401 错误的三个步骤。"
}'
Anthropic Native
适用于显示 anthropic 标签的模型。原生根地址不额外添加 /v1,请求时再使用完整路径 /v1/messages。
x-api-key: YOUR_API_KEYanthropic-version: 2023-06-01max_tokens,具体上限取决于模型。curl https://api.muxllm.com/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "MODEL_NAME",
"max_tokens": 1024,
"messages": [
{ "role": "user", "content": "解释 Messages API 的基本请求结构。" }
]
}'
Gemini Native
适用于显示 gemini 标签的模型。模型名位于 URL 路径中,请保持模型广场中的精确拼写。
curl https://api.muxllm.com/v1beta/models/MODEL_NAME:generateContent \
-H "x-goog-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"role": "user",
"parts": [{ "text": "概括这次请求的内容。" }]
}
]
}'
x-goog-api-key 请求头发送 API Key,避免把凭证放进可能被访问日志记录的 URL 查询参数。Vision
只有目标模型支持视觉输入时,图片内容才会被处理。远程图片 URL 必须可由上游访问;Base64 数据会显著增加请求体积。
curl https://api.muxllm.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MODEL_NAME",
"messages": [{
"role": "user",
"content": [
{ "type": "text", "text": "描述图片中的主要内容。" },
{ "type": "image_url", "image_url": { "url": "https://example.com/image.jpg" } }
]
}]
}'
{
"contents": [{
"role": "user",
"parts": [
{ "text": "描述图片中的主要内容。" },
{
"inline_data": {
"mime_type": "image/jpeg",
"data": "BASE64_IMAGE_DATA"
}
}
]
}]
}
Tools
工具调用需要目标模型与端点同时支持。模型只负责提出结构化调用,业务代码仍需校验参数、执行函数,并把结果作为后续消息返回。
提供名称、用途和 JSON Schema 参数。
发送用户消息与 tools 定义。
解析调用参数,在服务端验证后执行。
把工具结果加入会话,再请求最终答复。
{
"model": "MODEL_NAME",
"messages": [{ "role": "user", "content": "查询上海当前天气。" }],
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "查询指定城市的天气",
"parameters": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
}
}]
}
SDK
只修改 API Key、Base URL 和模型名即可接入常见 SDK。以下示例把凭证写成占位符,正式项目应改为读取服务端环境变量。
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.muxllm.com/v1",
)
response = client.chat.completions.create(
model="MODEL_NAME",
messages=[{"role": "user", "content": "你好"}],
)
print(response.choices[0].message.content)
from anthropic import Anthropic
client = Anthropic(
api_key="YOUR_API_KEY",
base_url="https://api.muxllm.com",
)
message = client.messages.create(
model="MODEL_NAME",
max_tokens=1024,
messages=[{"role": "user", "content": "你好"}],
)
print(message.content[0].text)
SDK 可能在升级后调整参数名。若客户端生成了错误路径,先打印最终请求 URL,并对照本页端点地图确认是否重复拼接版本路径。
Error Handling
| 类型 | 是否直接重试 | 处理建议 |
|---|---|---|
| 400 / 404 | 否 | 修正请求体、模型名、Base URL 或路径后再发送 |
| 401 / 403 | 否 | 核对凭证、认证头、账户和分组权限 |
| 429 | 有限重试 | 先检查余额和额度,再使用指数退避并降低并发 |
| 5xx / 网络中断 | 有限重试 | 仅对幂等或可安全重放的请求重试,并设置次数上限 |
Next Step
API 最小请求通过后,再按客户端要求填写同一套协议字段。