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 端口,不指定模型和智能体,由默认智能体使用它的默认模型回答。
- cURL
- Python
- Node.js
接口说明
认证
所有请求都需要在请求头中携带 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
- 模型:从 模型列表 中选择
目前仅支持文本输入,暂不支持图片等多模态内容;也不支持由调用方传入
tools 进行函数调用,Agent 会使用自己的工具完成任务。