/aichat2/conversations)是新一代的对话接口,是 AI Chat API 的全面升级版本。它在 v1 简洁、托管多轮对话的基础上,扩展了:
- 多模态用户输入:通过结构化
message字段直接传文本 + 图片 + 文件块,无需先用references间接附加。 - Agent 化工具调用:内置一套联网搜索、网页抓取、文件读取等工具,并可挂载用户授权的 MCP 服务器(Google Drive、Notion、Slack、GitHub 等),模型可在一次请求里多轮自主调用工具完成复杂任务。
- 结构化流式事件:通过
accept: text/event-stream或application/x-ndjson可拿到逐 token 的text_delta、tool_use、tool_result、thinking、citation、card、artifact等事件,便于在前端按对应类型分别渲染。 - 可中断 / 可恢复:模型在需要用户补充信息时会发出
ask_user_question事件并暂停,下次调用通过tool_results回填答案即可继续。 - 新增 CRUD 动作:在同一个 endpoint 上通过
action字段完成retrieve/retrieve_batch/update/delete,无需额外的会话管理 API。 - 持续更新的模型列表:默认接入 GPT-5.4、Claude Opus 4.8、Claude Sonnet 4.6、Gemini 3.1 Pro、GLM 5.1、DeepSeek V4、Kimi K3 等当代模型。
model + question(+ 可选 stateful / id / references / preset)即可得到与 v1 等价的 {answer, id} JSON 响应,所以从 /aichat/conversations 迁移过来不需要重写客户端,只需把路径换为 /aichat2/conversations。
如果你目前在使用 /aichat/conversations,旧接口仍会保留服务,可以按自己的节奏迁移。
申请流程
要使用 AI Chat v2 API,首先到 Ace Data Cloud 控制台 获取您的 API Token,留作备用。
如果你尚未登录或注册,会自动跳转到登录页面邀请你注册和登录,完成后会自动返回当前页面。
一个 API Token 即可调用平台所有服务,无需为每个服务单独申请。 首次申请会赠送免费额度,可免费体验;额度不足时可在 控制台 充值通用余额。
📘 完整文档:AI Chat v2 API →
基本使用
最简单的用法和 v1 完全一致:传model + question,拿到 {answer, id}。
CURL 示例:
model 取值可在右侧的 Try 面板下拉里直接看到,常用类别包括:
- OpenAI:
gpt-5.4-mini、gpt-5.4-nano、gpt-5.2-pro、gpt-5.1-all、gpt-5-all、gpt-4.1、gpt-4o、gpt-4o-image、o3、o4-mini等 - Anthropic:
claude-opus-4-8、claude-opus-4-7、claude-opus-4-6、claude-opus-4-5-20251101、claude-sonnet-4-6、claude-sonnet-4-5-20250929、claude-haiku-4-5-20251001等 - Google:
gemini-3.1-pro、gemini-3.1-pro-preview、gemini-3.1-flash-image-preview、gemini-3-pro-preview、gemini-2.5-flash-lite等 - xAI:
grok-4等 - DeepSeek:
deepseek-v4-flash、deepseek-v3.2-exp、deepseek-r1-0528等 - Moonshot:
kimi-k3、kimi-k2.6、kimi-k2.5等 - Zhipu:
glm-5.1、glm-5、glm-5-turbo、glm-4.7、glm-4.5v等
多轮对话
和 v1 一样,传stateful: true 开启会话保存,API 会返回一个 id;后续请求把 id 带回来即可继续对话,无需自己维护 messages 历史。
第一次请求:
id:
stateful默认是true,省略和显式传true等价。如果你不希望服务端保存这一轮对话,可以显式设置stateful: false。
流式响应
v2 支持两种流式格式,按照accept 头选择:
NDJSON 示例
text_delta:
SSE 示例
浏览器端使用EventSource 不支持自定义请求体,建议使用 fetch + 手动按 \n\n 切片解析:
流式事件类型
对于只关心最终答案的客户端,把所有
text_delta 的 content 拼接起来就和 application/json 模式下的 answer 等价。
多模态输入
如果用户输入包含图片或文件,传message(数组)代替 question。每个数组元素是一个内容块:
text— 普通文本,必填text字段。image_url— 图片,必填image_url.url。file_url— 文件(PDF、CSV、TXT 等),必填file_url.url。
与 v1 references 的关系
为了兼容旧客户端,v2 仍然识别 references: ["https://...", ...] 字段:
- URL 后缀是
jpg / jpeg / png / gif / bmp / webp / svg / heic / heif,自动转成image_url块; - 其他扩展名转成
file_url块; - 如果还同时提供了
question,则把它作为一个text块前置。
/aichat2/conversations 即可,原 references 用法照常工作。
需要更精细控制(比如把多张图片放在文本之间、或者顺序很重要)就直接用 message 数组。
工具调用与 MCP
v2 的核心增强点是模型可以自主调用工具完成多步任务,这是默认开启的,不需要客户端在请求里做任何额外配置。常见场景:- 用户问「帮我搜一下最近上海有什么新展览」→ 模型调用内置 web search → 把结果整理成回答。
- 用户问「读一下这个 PDF 然后写个摘要」→ 模型调用 file_read → 写摘要。
- 用户已在 Connections 里授权了 Google Drive / GitHub / Notion 等 → 模型可调用对应的 MCP 工具读写其数据。
tool_use 和 tool_result 两类事件呈现,例如:
tool_use / tool_result / card / citation 这几类事件即可,模型最终输出依然通过 text_delta 流出。
max_turns 可以限制本次请求里模型最多自我调用工具几轮,默认上限由平台决定。把它设小(比如 max_turns: 1)可以强制单次回答、不允许任何工具调用。
异步执行与无人值守授权
如果你的调用来自告警 Webhook、CI/CD、监控系统或其他后台任务,可以设置async: true 让接口立即返回任务 ID,后台继续执行:
action: retrieve + id 查询会话结果;也可以提供 callback_url,任务完成后平台会把 { status, answer, usage, error } POST 到你的回调地址。callback_url 必须使用 http / https,且不能直接填写 localhost 或私有 IP 字面地址。
后台任务通常没有人能点击确认。如果你希望某些 Skill 或 MCP Server 在无人值守模式下执行发送、发布、写入等动作,请在请求体里显式传预授权列表:
allowed_skills 里的值是已连接 Skill 的 slug;allowed_mcp_servers 里的值是已连接 MCP Server 的 slug。未列入预授权的 Skill / MCP Server 在无人值守模式下仍只能预览、dry-run 或拒绝执行写操作。
如果需要更细的控制,也可以使用等价的 unattended_policy 对象:
--unattended-confirm 或对应的安全机制;否则它会继续 dry-run,不会直接执行写操作。
恢复暂停的对话
某些工具会让模型「反问用户」,模型这时会发出一个ask_user_question 事件,对话被冻结在 awaiting_user_input 状态:
id 发起下一次请求,把答案通过 tool_results 回填:
tool_use_id 必须和暂停时的 tool_id 完全一致;不一致会返回 400。当请求里同时存在 tool_results 时,question / message / references 都会被忽略。
如果用户决定放弃这个问题,直接传一个新的 question / message 即可,平台会自动把暂停的工具调用标记为「用户跳过」。
会话管理(CRUD)
v2 在同一个 endpoint 上通过action 字段提供轻量级会话管理,无需另外开 API。
action: retrieve —— 拉取一个会话
messages 历史、model、title、tools_used 等)。
action: retrieve_batch —— 列出会话摘要
{ items: [...], total }。摘要不包含 messages,适合做侧边栏列表;如果用户点开某条会话,再用 action: retrieve 单独拉取它的完整消息。
可选过滤参数:user_id、application_id、model_group、model。
action: update —— 改标题或重写历史
messages 也可以传,但服务端会做严格的 schema 校验(必须是折叠后的 ToolUseContent 形态),不符合会返回 400。一般只建议用来改 title。
action: delete —— 删除一个会话
{ id, success: true }。删除后无法恢复,请确认后再调用。
从 v1 平滑迁移
如果你已经在使用/aichat/conversations,迁移到 v2 几乎不需要改代码:
- 把 URL 由
https://api.acedata.cloud/aichat/conversations改成https://api.acedata.cloud/aichat2/conversations。 - 如果你之前传的是 v1 模型名(如
gpt-3.5、gpt-4-browsing等),切换到 v2 时建议升级到当代模型(如gpt-5.4、claude-opus-4-8、gemini-3.1-pro等)。 - NDJSON 流的字段保持向后兼容:每个
text_delta事件依然带delta_answer与id,因此原来按行解析delta_answer的客户端无需改动。
message、SSE、工具调用、action CRUD),按节奏推进即可。
错误处理
错误响应统一为:400 bad_request:缺少必填字段、tool_use_id不匹配、messagesschema 非法等。401 invalid_token:authorization头不正确。404 not_found:action: retrieve / update / delete时id对应的会话不存在。429 too_many_requests:触发了速率限制。500 chat_error:上游 LLM 报错或本轮completion_tokens=0(按未消费处理,不会扣费)。
{"type":"error","message":"..."} 事件发出,紧接着流就会结束。

