Skip to main content
CowAgent 提供与 OpenAI Chat Completions 协议兼容的对话接口,复用 Web 控制台的端口。任何支持 OpenAI 协议的应用、SDK 或工作流都可以直接接入。
和直接调用模型不同,接口背后是完整的 Agent:它会使用工具、技能、记忆和知识库完成任务,并把思考过程、工具调用和 Token 用量一并返回。

开启接口

接口默认关闭,开启后需在请求中携带 API Key。

在控制台开启

进入「配置 → 基础配置 → 对话 API」,打开开关并确认后会自动生成 API Key,并给出接口地址和调用示例(cURL / Python / Node.js),可直接复制使用。
  • 重新生成:生成新的 API Key,旧 Key 立即失效
  • 关闭开关:接口停止服务,API Key 会保留,再次开启后可继续使用

在配置文件开启

在 config.json 中配置以下两项,修改后需重启服务生效:
接口与 Web 控制台使用同一地址和端口。默认只监听 127.0.0.1,仅本机可以访问;如需其他机器调用,请参考 Web 控制台 将 web_host 设为 0.0.0.0,并放行端口。API Key 与控制台访问密码 web_password 相互独立。

快速开始

以下示例假设服务运行在本机 9899 端口,不指定模型和智能体,由默认智能体使用它的默认模型回答。

接口说明

认证

所有请求都需要在请求头中携带 API Key:

对话

POST /v1/chat/completions Agent 使用自己的工具和系统提示词,因此 temperature、max_tokens、tools 等参数会被忽略。

指定智能体

配置了 多智能体 时,可以通过 agent_id 指定由哪个智能体回答。智能体 ID 显示在「智能体」页面的名称下方,点击旁边的图标即可复制。default 始终表示默认智能体,指定的智能体不存在或已归档时返回 404。
model 只对本次请求生效,不会修改智能体或会话的模型设置。

模型列表

GET /v1/models 返回可用的模型,即「配置 → 模型配置」中已配置的厂商下的对话模型,owned_by 为所属厂商。请求中的 model 不在列表中时返回 404。

会话管理

接口支持两种会话方式:
  • 无状态(默认):不传 conversation_id,与调用普通模型一样,每次请求带上完整的 messages。最后一条 user 消息作为本轮输入,之前的 user / assistant 消息作为上下文。本次对话不会写入 CowAgent 的会话记录。
  • 有状态:传入 conversation_id,会话历史由 CowAgent 保存,之后每次只需发送新消息,messages 中更早的消息会被忽略。同一会话的请求按顺序依次处理。
请求中的 system 消息会被忽略,Agent 始终使用自己的人设、技能和记忆。无论哪种会话方式,Agent 都可以通过工具读写工作空间和记忆文件。

响应格式

非流式

在标准的 OpenAI 响应之外,message 中会附带思考过程和工具调用记录:

流式

设置 "stream": true 后以 SSE 返回标准的 chat.completion.chunk:
  • 回复内容在 choices[0].delta.content
  • 思考过程在 choices[0].delta.reasoning_content
  • 工具调用等过程事件在顶层的 cow_event 字段,此时 delta 为空
  • 最后一个数据块的 finish_reason 为 stop;如设置了 stream_options.include_usage,随后会再发送一个 choices 为空、带 usage 的数据块
  • 以 data: [DONE] 结束
读取流式输出的示例:

过程事件

cow_event.type 的取值如下:

错误处理

错误响应遵循 OpenAI 格式:
流式请求会等待 Agent 产生第一个事件,最长 30 秒:在此之前出错或超时,返回上表中的 JSON 错误,超时时会取消该请求。流式输出开始后 HTTP 状态码无法再修改,之后的错误会以 cow_event.type=error 的数据块返回,随后是 finish_reason=error 的结束块和 data: [DONE]。

接入第三方应用

支持自定义 OpenAI 接口的客户端和平台都可以直接接入,选择「OpenAI」或「OpenAI 兼容」类型,然后填写:
  • API 地址:http://<服务器地址>:9899/v1(部分应用只需填到端口,会自动补全 /v1)
  • API Key:控制台生成的 Key
  • 模型:从 模型列表 中选择
通过第三方应用接入时由默认智能体回答。 接口支持跨域访问(CORS),也可以在浏览器端的应用中直接调用。
目前仅支持文本输入,暂不支持图片等多模态内容;也不支持由调用方传入 tools 进行函数调用,Agent 会使用自己的工具完成任务。