LLM 文本对话接口
文档版本:v1.0 | 日期:2026-11-07 | 适用:
intel-link.com
平台文本模型遵循 OpenAI Chat Completions 规范,现有 OpenAI SDK 客户端改 BaseURL 与 Key 即可直接使用。
一、概览
| 项 | 值 |
|---|---|
| 端点 | POST https://intel-link.com/v1/chat/completions |
| 模型列表 | GET https://intel-link.com/v1/models |
| 协议 | OpenAI 兼容,同步返回,支持流式 |
| 鉴权 | Authorization: Bearer sk-... |
平台层不改写请求/响应字段,OpenAI 规范中的参数可直接透传。本文只说明平台层的差异点——即报文规范之外、只有在本平台才会遇到的问题。
二、快速开始
2.1 准备工作
- 在
https://intel-link.com注册账号 - 进入「API 密钥」页创建令牌,复制
sk-开头的密钥 - 确认目标模型在你令牌所属分组的可用范围内(见「模型广场」)
2.2 最小请求
curl https://intel-link.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxx" \
-d '{
"model": "deepseek-v4.1-flash",
"messages": [
{"role": "user", "content": "用三句话说明什么是大模型推理加速"}
],
"stream": false
}'
2.3 响应(节选)
{
"id": "chatcmpl-...",
"object": "chat.completion",
"created": 1793102708,
"model": "deepseek-v4.1-flash",
"choices": [
{
"index": 0,
"message": {"role": "assistant", "content": "..."},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 128,
"completion_tokens": 96,
"total_tokens": 224,
"prompt_tokens_details": {"cached_tokens": 64}
}
}
cached_tokens字段名以实际上游返回为准;如未返回,可视为本次无缓存命中。
三、平台层差异点(重要)
3.1 模型名必须用平台注册名
model 字段须填平台注册的模型 ID(见文档中心模型清单)。名称不存在或不在令牌分组内,返回:
400 model_not_found
"No available channel for model xxx under group <分组名>"
3.2 custom-local: 前缀
部分客户端(如自建模型配置型客户端)会给模型名自动加 custom-local: 前缀。平台已为对外模型建立同名别名,因此:
deepseek-v4.1-flash✅custom-local:deepseek-v4.1-flash✅
两者都能正常路由到同一模型,客户端无需修改配置。若你使用自定义模型名,请联系平台管理员登记。
3.3 令牌分组锁定
令牌的分组在创建时确定,只能选择账号自身所属分组,平台已在服务端强制校验。若需调用其他分组的模型,请使用对应账号或在团队后台申请调整。
3.4 Token 计量口径
| 字段 | 说明 |
|---|---|
prompt_tokens |
已包含缓存命中的 token |
cached_tokens |
缓存命中部分 |
| 非缓存输入量 | prompt_tokens − cached_tokens |
⚠️ 自行核算成本时,直接使用 prompt_tokens 会把缓存部分重复计一次。平台侧计费与用量展示均已按 prompt_tokens − cached_tokens 处理。
3.5 计费
| 项 | 口径 |
|---|---|
| 预扣 | 请求前按输入 token 预扣,响应后按实际结算 |
| 失败 | 请求失败原路全额退款,不会"失败照扣" |
| 对账 | 按月与上游账单核对,多退少补,可能产生正/负调整 |
| 单价 | 以「模型广场」实时价格为准 |
| 缓存计价 | 缓存命中部分单独计价,低于普通输入 |
四、错误码
| HTTP | code / 现象 | 原因 | 处理 |
|---|---|---|---|
| 401 | — | 令牌缺失 / 无效 / 已停用 / 额度耗尽 | 检查 sk- 前缀、Bearer 头、令牌状态与余额 |
| 400 | model_not_found |
模型名错误或不在分组内 | 核对模型 ID 与令牌分组 |
| 400 | invalid_request_error |
请求体格式错误 | 检查 JSON 合法性与必填字段 |
| 403 | AccountOverdueError |
账户余额不足 | 充值后重试 |
| 403 | model_not_allowed |
模型未对企业开放(企业版) | 联系企业管理员开通白名单 |
| 429 | enterprise_quota_exceeded |
企业月度配额用尽 | 联系企业管理员或平台客服 |
| 429 | rate_limit_exceeded |
触发频率限制 | 降低并发或加重试退避 |
| 502 | HTML 页面 | 平台重启窗口(约 1~2 秒) | 识别非 JSON 响应并指数退避重试 |
⚠️ 502 陷阱:该场景返回 nginx HTML,不是 JSON。有客户端会把 HTML 502 误渲染为「配额不足」,请在代码中先判断 Content-Type 或 response.ok。
五、完整示例(Python + OpenAI SDK)
from openai import OpenAI
client = OpenAI(
base_url="https://intel-link.com/v1", # 注意:SDK 场景必须带 /v1
api_key="sk-xxxxxxxx",
)
resp = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[
{"role": "system", "content": "你是严谨的技术助理,回答简洁。"},
{"role": "user", "content": "解释一下 HTTP 502 和 504 的区别"},
],
stream=False,
)
print(resp.choices[0].message.content)
print(resp.usage) # 含 prompt_tokens / completion_tokens
流式
stream = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user", "content": "写一段 200 字的产品简介"}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
六、常见问题
Q1:报 401,但令牌看起来是对的?
依次检查:① 是否 sk- 开头;② 是否放在 Authorization: Bearer 头;③ 令牌是否被停用;④ 余额是否耗尽。以上均正常仍 401 请联系平台管理员。
Q2:能调通 qwen3.8-max,但 qwen3.7-max 报错?
模型可用范围随令牌分组不同。qwen3.7-max 等型号已不在对外名单内,请使用当前可用模型。
Q3:为什么我算的费用和平台显示不一样?
常见原因是把 prompt_tokens(含缓存)当成了计费输入量。请用 prompt_tokens − cached_tokens,并注意缓存与输出单价不同。
Q4:并发有上限吗?
平台未对单个令牌设定固定硬上限,但请求量异常会触发流控(429)。视频类长时间任务请控制并发,避免额度被瞬时占满。
Q5:支持哪些参数?
请求体遵循 OpenAI Chat Completions 规范,messages / stream / temperature / max_tokens 等常用字段可直接使用。个别上游模型对特定参数不敏感,属正常现象。
七、注意事项
- 令牌安全:
sk-令牌等同账号凭证,禁止写入前端代码、公开仓库或客户端安装包;客户端请走服务端中转。 - 错误处理:务必区分 JSON 错误与 HTML 502;对 429 / 5xx 使用指数退避。
- 合规:输入输出均经平台安全审核,请勿提交违法违规内容。
- 模型下线:不对外提供的型号将提前公示,请勿在生产环境依赖非名单内模型。
八、版本记录
| 版本 | 日期 | 说明 |
|---|---|---|
| v1.0 | 2026-11-07 | 首版发布 |