AI 智能体

具备长期记忆的多工具编排,可跨多轮对话使用。

智能体在服务器端维护对话状态:它会调用模型,自动执行其内置工具(记忆功能),并且只有在存在最终回复,或需要执行您自己定义的工具时,才会将控制权交还给您。

创建一个对话

http
POST /v1/agents/conversations
json
{
  "model": null,
  "routing_strategy": "auto",
  "system_prompt": "Tu es un assistant utile et concis.",
  "tools": []
}

tools 用于声明您自己的自定义工具(见下文)——内置工具(记忆、视频生成)始终可用,无需另行声明。

发送一条消息

http
POST /v1/agents/conversations/{id}/messages
json
{ "content": "Retiens que mon fournisseur prefere est Anthropic." }

响应始终是该对话的完整状态:

json
{
  "id": "1a63c0df-...",
  "model": null,
  "routing_strategy": "auto",
  "status": "idle",
  "messages": [
    { "id": "...", "role": "user", "content": "Retiens que mon fournisseur prefere est Anthropic.", "tool_calls": null, "tool_call_id": null },
    { "id": "...", "role": "assistant", "content": "", "tool_calls": [{ "id": "call_1", "name": "remember", "arguments": { "content": "Fournisseur prefere : Anthropic" } }], "tool_call_id": null },
    { "id": "...", "role": "tool", "content": "Memoire enregistree (id=...)", "tool_call_id": "call_1" },
    { "id": "...", "role": "assistant", "content": "C'est note !", "tool_calls": null, "tool_call_id": null }
  ],
  "created_at": "...",
  "updated_at": "..."
}

status 的取值为 idle(可发送新消息)、requires_action您的某个自定义工具正在等待结果),或 generating_media(正在进行视频生成,见下文)。

内置工具

  • search_memory — 在智能体的长期记忆中检索(参数 query,可选 top_k
  • remember — 保存一条信息(参数 content
  • generate_video — 发起一次视频生成(参数与 POST /v1/video/generate 相同:promptduration_secondsnarration_textscenes — 参见视频指南)

这三个工具均由服务器自动执行——您无需进行任何操作,对话会自行继续(generate_video 除外,它会在任务完成期间将对话置于 generating_media 状态;请轮询 GET /v1/agents/conversations/{id} 直到状态变为 idle)。

自定义工具

在创建对话时声明您自己的工具(tools)。当模型调用它们时,状态会变为 requires_action,对话随即暂停——需要由您执行该工具并返回结果:

http
POST /v1/agents/conversations/{id}/tool-outputs
json
{
  "outputs": [
    { "tool_call_id": "call_2", "output": "18C, nuageux" }
  ]
}
如果对话不处于 idle 状态,POST .../messages 会返回 409 conflict——请等待待处理的工具调用得到解决后再发送新消息。

列出 / 查看

bash
GET /v1/agents/conversations          # liste (resume, sans les messages)
GET /v1/agents/conversations/{id}      # detail complet