Skip to content

2 · 第一次 API 调用

目标:用最少代码向 VOLO AI Agent 发送一条消息,并接收流式响应。


2.1 核心端点 · submitIntent

VOLO AI 主对话通道是 单端点 POST SSE(对齐 OpenAI / Anthropic / Vercel AI SDK 行业主流):

POST /api/agent/chat/volo-ai/{sessionId}/intent
Content-Type: application/json
Accept: text/event-stream
Authorization: Bearer $VOLO_API_KEY

请求体(ChatRequest):

json
{
  "sessionId": "550e8400-e29b-41d4-a716-446655440000",
  "userMessage": "你好,请用一句话介绍 VOLO AI",
  "parentTurnId": null,
  "executionMode": "AUTO"
}
字段类型说明
sessionIdUUID会话 ID,需先创建(见下方)
userMessagestring用户文本
parentTurnIdUUID | null接续的父 turn(首条为 null)
executionModeFAST | MAX | AUTO执行档位,AUTO 自动路由

2.2 cURL 跑通

bash
# 1. 准备 sessionId(任意 UUID,首次自动创建)
export SESSION_ID=$(uuidgen | tr '[:upper:]' '[:lower:]')

# 2. POST SSE 流式对话
curl -N -X POST "https://api.volo.ai/api/agent/chat/volo-ai/$SESSION_ID/intent" \
  -H "Authorization: Bearer $VOLO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: text/event-stream" \
  -d '{
    "userMessage": "你好,请用一句话介绍 VOLO AI",
    "executionMode": "AUTO"
  }'

-N 关键——禁用缓冲,让 SSE 帧实时打印。


2.3 SSE 响应帧

返回流(节选):

event: PROGRESS
data: {"type":"PROGRESS","traceInfo":{...},"message":"正在思考..."}

event: ASSISTANT_DELTA
data: {"type":"ASSISTANT_DELTA","content":"VOLO"}

event: ASSISTANT_DELTA
data: {"type":"ASSISTANT_DELTA","content":" AI"}

event: ASSISTANT_DELTA
data: {"type":"ASSISTANT_DELTA","content":" 是面向生产的多智能体协作平台。"}

event: COMPLETE
data: {"type":"COMPLETE","traceInfo":{...}}

每行 data: 后是 JSON,按 AgentExecutionEvent 协议序列化。完整 34 种 EventTypeAPI · Chat


2.4 TypeScript SDK 等价代码

typescript
import { VoloClient } from '@volo-ai/sdk'

const client = new VoloClient({
  apiKey: process.env.VOLO_API_KEY!,
  baseURL: 'https://api.volo.ai',
})

const stream = await client.chat.stream({
  sessionId: crypto.randomUUID(),
  userMessage: '你好,请用一句话介绍 VOLO AI',
  executionMode: 'AUTO',
})

for await (const event of stream) {
  if (event.type === 'ASSISTANT_DELTA') {
    process.stdout.write(event.content)
  }
  if (event.type === 'COMPLETE') {
    console.log('\n[stream complete]')
  }
}

完整 SDK 用法 → SDK · TypeScript


2.5 流式工具调用拦截

VOLO AI Agent 在 LLM 调用工具时会发送 TOOL_START / TOOL_END 事件,可用于实时显示工具调用动画:

typescript
for await (const event of stream) {
  switch (event.type) {
    case 'ASSISTANT_DELTA':
      // 主消息流
      break
    case 'TOOL_START':
      console.log(`[工具] 调用 ${event.toolName}...`)
      break
    case 'TOOL_END':
      console.log(`[工具] ${event.toolName} 完成`)
      break
    case 'RENDER_UI':
      // AI 主动渲染 UI 组件
      break
  }
}

事件正交性规范见 协议 · 事件协议正交性


2.6 错误处理

状态码含义处理建议
401API Key 无效 / 已撤销检查 Authorization Header
403配额耗尽升级订阅或等待月度重置
429速率限制(默认 60 次/分钟)退避重试
500 + event:ERROR后端异常data.message 为用户友好错误信息

下一步 → 第一个 Skill

Released under the Proprietary License.