AI 服务

多模型 AI 对话接口:用 model 参数在多家厂商的模型间切换,单轮 / 多轮、流式、图片 / 视频 / 音频理解(部分模型)一应俱全。

/api/ai/

服务说明

AI 服务提供开箱即用的对话能力,已接入多家厂商的模型(当前含 DeepSeek);平台侧统一持有各厂商密钥,调用方无需自行申请与配置,适合做内容生成、摘要、问答等功能的快速验证。

切换模型只需改 model 一个参数,接口地址、鉴权方式与响应结构完全不变:候选模型见下方「模型清单」接口,或直接看 chat 端点的 model 下拉。新增模型由超管在后台添加,对大模型厂商的差异(上游地址、密钥、能力)全部在服务端收口。

同一个接口覆盖单轮与多轮对话:传 content 发起简单单轮问答,传 messages(JSON 数组,含 role 与 content)则进行多轮对话;同时支持流式输出。

系统提示词由平台按模型统一配置(超管在后台维护,可设多套并指定某个模型用哪一套),调用方不需要、也不能改生成策略——采样温度、最大回复长度、停止词同样由平台控制,接口不接受这些参数,从而保证所有接入方拿到的行为一致、可控。

标记了「支持视觉」的模型可以额外传 images(公网图片地址)让它看图回答;标记了「支持视频理解」的模型还能传 videos(公网视频地址,如豆包 Seed 2.0 全模态)让它看视频、连音轨一起理解;标记了「支持音频理解」的模型还可以传 audios(公网音频地址)做语音转写与音频内容理解;未标记的模型传图片、视频或音频会返回参数值非法,避免把参数静默丢掉。

本服务需项目签名。开启流式(stream=true)后返回的是逐段推送的 SSE 内容,与普通 JSON 响应的呈现方式不同,在文档页在线调试时会逐字打印出来。

响应格式

所有接口返回同一个 JSON 信封,业务数据都在 data 里:

{
  "code": 10000,
  "msg": "成功",
  "data": { ... }
}
  • code:业务状态码,10000 表示成功;其余为各类错误,完整清单见「错误码」页。
  • msg:给人看的提示文案,可直接展示给终端用户,但不要用它做逻辑判断。
  • data:业务数据;出错时通常为 null。各接口 data 的具体字段见该接口的「响应说明」。

判断成功与否请看 code,不要依赖 HTTP 状态码。 查看完整错误码

内置模型

平台内置密钥(DeepSeek / 月之暗面 / 火山方舟 / 阿里云百炼等,均可后台扩展) 需签名

一个 chat 端点覆盖全部模型:换模型只改 model 参数;平台密钥、上游地址、系统提示词与采样参数由超管在后台维护。

POST /api/ai/BuiltInModel/chat 累计调用 0 次

AI 对话(统一入口)

用 model 选择模型发起对话:支持单条消息、完整消息列表、系统提示词覆盖、图片/视频/音频理解与流式输出。

选填:不传则使用平台默认模型;候选清单来自平台(见「模型清单」接口)

选填:发起简单单轮对话时的消息内容(与 messages 至少提供一个)

选填:多轮对话用,格式为 JSON 数组,role 取 user/assistant;优先级高于 content

选填:临时覆盖平台设定;不传=用平台按模型配置的提示词;空字符串=不使用系统提示词

选填:仅「支持视觉」的模型可传;JSON 数组或纯文本(换行/逗号分隔)的公网图片地址,张数上限由平台按模型配置(后台可调)

选填:仅「支持视频理解」的模型可传(如豆包 Seed 2.0 全模态);JSON 数组或纯文本(换行/逗号分隔)的公网视频地址,数量上限由平台按模型配置(后台可调)

选填:仅「支持音频理解」的模型可传(如豆包 Seed 2.0 全模态);JSON 数组或纯文本(换行/逗号分隔)的公网音频地址,个数上限由平台按模型配置(后台可调)。音频文件可先经「文件上传」服务上传,再把返回地址传到这里

选填:传了就用调用方自己的 Key(须与所选模型所属厂商一致),不传则用平台密钥

选填:true 时响应为 SSE(text/event-stream),逐块推送

  • 请求体为 application/x-www-form-urlencoded 表单;本服务需项目签名。
  • content 与 messages 至少提供一个,否则返回参数缺失。
  • images 仅对「支持视觉」的模型有效,其它模型传了返回参数值非法(20003);张数上限由平台按模型配置(后台可调),超限同样返回参数值非法。
  • videos 仅对「支持视频理解」的模型有效(如豆包 Seed 2.0 全模态,可同时理解画面与音轨),其它模型传了返回参数值非法(20003);数量上限同样由平台按模型配置,超限返回参数值非法。
  • audios 仅对「支持音频理解」的模型有效(如豆包 Seed 2.0 全模态,可做语音转写与音频内容理解),其它模型传了返回参数值非法(20003);个数上限同样由平台按模型配置,超限返回参数值非法。
  • 采样温度 / 最大回复长度 / 停止词由平台按模型统一配置,不接受调用方传入,传了会返回参数值非法(20003)。
  • 流式模式返回 SSE:每帧形如 data: {"content": "片段"}(答案正文)或 data: {"reasoning": "片段"}(推理模型的思考过程,仅这类模型有,与答案分开下发、只关心答案可忽略),结束标记 data: [DONE];在线调试会把答案正文按 Markdown 渲染排版并逐字打印,推理模型的思考过程收进可折叠的「思考过程」(首屏自动展开,开始出答案后自动收起)。
  • 在线调用会真实消耗上游额度,请确认平台密钥可用后再调试。
  • 原「前缀续写(prefix / prefix_content)」能力已下线,传入会返回参数值非法。
响应说明 外层统一格式

以下字段为 stream=false 时的 data 结构;stream=true 时响应改为 SSE 文本流(逐帧推送,见上方说明),不走该结构。

字段 类型 说明
reply string 模型回复正文(Markdown)
model string 对外模型标识
usage object Token 用量;上游未返回时为 null
usage.prompt_tokens int 输入 Token 数
usage.completion_tokens int 输出 Token 数
usage.total_tokens int 总 Token 数
finish_reason string 结束原因;可能为 null
返回示例
{
  "reply": "示例回复内容",
  "model": "deepseek-chat",
  "usage": {"prompt_tokens": 10, "completion_tokens": 20, "total_tokens": 30},
  "finish_reason": "stop"
}
GET /api/ai/BuiltInModel/models 累计调用 0 次

模型清单

列出平台当前可用的模型(标识、展示名、是否支持视觉/视频/音频、是否为默认模型)。

  • 用于让调用方动态发现可选模型,避免把模型名写死在客户端。
  • 只返回模型自身信息:不含厂商、上游地址与密钥。
  • 请求不传 model 时使用 is_default 为 true 的那个模型。
响应说明 外层统一格式
字段 类型 说明
models array 可用模型列表
models[].model string 模型标识(传参 model 的取值)
models[].name string 展示名
models[].supports_vision bool 是否支持视觉(可传 images)
models[].supports_video bool 是否支持视频理解(可传 videos)
models[].supports_audio bool 是否支持音频理解(可传 audios)
models[].context_window int 上下文长度;未知为 null
models[].is_default bool 是否为默认模型
返回示例
{
  "models": [
    {"model": "deepseek-chat", "name": "DeepSeek Chat", "supports_vision": false,
     "supports_video": false, "supports_audio": false, "context_window": 65536,
     "is_default": true}
  ]
}
小影API · 通用 API 聚合服务