对话补全 API
Chat Completions 是平台最通用的对话入口。请求会先经过令牌、模型、分组和额度校验,再由对应渠道适配器转发。模型 ID 必须来自当前令牌的 GET /v1/models。
接口
POST https://api.openfde.work/v1/chat/completions
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
请求参数
| 参数 | 类型 | 必填 | 当前说明 |
|---|---|---|---|
model | string | 是 | 当前令牌可见的模型 ID,例如 gpt-6-sol、MiniMax-M3。 |
messages | array | 是 | 按时间顺序排列的消息;支持 system、user、assistant、tool 等角色。 |
stream | boolean | 否 | 是否返回 SSE,默认 false。 |
stream_options | object | 否 | 可请求 { "include_usage": true };是否由上游返回用量取决于渠道。 |
max_completion_tokens | integer | 否 | 新模型和推理模型优先使用的输出上限。 |
max_tokens | integer | 否 | 兼容字段;平台仍接收,但新接入建议迁移到 max_completion_tokens。 |
temperature | number | 否 | 采样参数;具体范围和是否可调由模型决定。 |
top_p | number | 否 | 核采样参数;部分推理模型不接受或会忽略。 |
top_k | integer | 否 | 部分渠道支持的候选数量参数,不是所有模型都支持。 |
stop | string/array | 否 | 停止序列;最新推理模型可能不支持。 |
tools | array | 否 | OpenAI 工具声明;只有模型和上游渠道支持时才会生效。 |
tool_choice | string/object | 否 | 工具选择策略。 |
response_format | object | 否 | 结构化输出请求;能力取决于模型。 |
reasoning_effort | string | 否 | 仅对支持推理强度的模型生效。 |
presence_penalty / frequency_penalty | number | 否 | 惩罚参数;由上游模型决定是否接受。 |
user | string | 否 | 调用方用户标识。 |
n | integer | 否 | 返回候选数量;渠道不支持时不要传入。 |
旧版 functions、function_call 字段仍可能被兼容层接收,但新代码应使用 tools 和 tool_choice。厂商私有字段不会因为网关能解析就自动得到所有渠道支持。
最小请求
curl https://api.openfde.work/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6-sol",
"messages": [
{"role": "user", "content": "请用一句话介绍你自己。"}
],
"max_completion_tokens": 256
}'
Python
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.openfde.work/v1",
)
response = client.chat.completions.create(
model="gpt-6-sol",
messages=[
{"role": "system", "content": "你是一个简洁、准确的助手。"},
{"role": "user", "content": "你好,请介绍一下你自己。"},
],
max_completion_tokens=512,
)
print(response.choices[0].message.content)
多轮和多模态消息
{
"model": "gemini-3.1-pro-preview",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "请描述这张图片。"},
{
"type": "image_url",
"image_url": {"url": "https://example.com/image.jpg"}
}
]
}
]
}
只有支持视觉输入的模型才能处理图片或视频内容;请先确认模型在当前令牌的列表中,并查看对应能力页。
非流式响应
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"created": 1760000000,
"model": "gpt-6-sol",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "你好!我是 AI 助手。",
"reasoning_content": "(推理模型可能返回)"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 20,
"completion_tokens": 12,
"total_tokens": 32
}
}
响应中的 model 可能是上游规范化后的名称。推理模型可能返回 reasoning_content;流式响应对应字段位于 choices[].delta.reasoning_content。当输出上限太小,可能出现 finish_reason: "length" 且正文为空。
流式响应
设置 stream: true 后逐行读取 SSE:
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant","content":"你好"},"finish_reason":null}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: [DONE]
不要把 SSE 当作单个 JSON 解析;收到 data: [DONE] 后结束本次请求。
错误
| HTTP 状态码 | 常见原因 |
|---|---|
400 | JSON、必填字段或模型参数不合法。 |
401 | API Key 无效、过期或禁止外部访问。 |
403 | 模型白名单、分组、等级、IP 或企业权限不允许。 |
404 | 请求路径错误;模型不存在通常以 OpenAI 错误对象返回。 |
429 | 额度、并发、频率或上游限流。 |
500 | 平台内部错误或响应解析失败。 |
503 | 当前模型没有可用渠道。 |
参数迁移建议
- 用
max_completion_tokens替代新项目中的max_tokens。 - 用
tools/tool_choice替代旧的functions/function_call。 - 不要把
temperature、top_p、stop等参数当作跨模型保证;模型不支持时删除它们。 - 不要硬编码模型清单;启动时或定期查询
/v1/models。