Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

AI SDK v6 协议

AI SDK v6 适配层会把 Awaken 的 AgentEvent 流转换成 Vercel AI SDK v6 UI Message Stream 格式。这样 useChatuseAssistant 等前端无需自定义解析器就能直接消费 Awaken 的输出。

入口

POST /v1/ai-sdk/chat

请求体

{
  "messages": [{ "role": "user", "content": "Hello" }],
  "threadId": "optional-thread-id",
  "agentId": "optional-agent-id"
}
字段类型必填说明
messagesAiSdkMessage[]输入消息。内容可以是字符串或 content parts 数组。
threadIdstring继续已有 thread。省略时会创建新 thread。
agentIdstring指定 agent。省略时使用默认 agent。

响应

SSE 流(text/event-stream),每一行是一个 JSON 编码的 UIStreamEvent

辅助路由

路由方法说明
/v1/ai-sdk/threads/:thread_id/runsPOST在指定 thread 上启动 run
/v1/ai-sdk/agents/:agent_id/runsPOST在指定 agent 上启动 run
/v1/ai-sdk/chat/:thread_id/streamGET按 thread ID 续接 SSE
/v1/ai-sdk/threads/:thread_id/streamGET同上,thread 路由别名
/v1/ai-sdk/threads/:thread_id/messagesGET读取 thread 消息历史
/v1/ai-sdk/threads/:thread_id/cancelPOST取消 thread
/v1/ai-sdk/threads/:thread_id/interruptPOST中断 thread

事件映射

AiSdkEncoder 会把 AgentEvent 映射到 UIStreamEvent

AgentEventUIStreamEvent
RunStartMessageStart + Data("run-info", ...)
TextDeltaTextStart(如果 block 未打开)+ TextDelta
ReasoningDeltaReasoningStart(如果 block 未打开)+ ReasoningDelta
ReasoningEncryptedValueReasoningStart(如果未打开)+ ReasoningDelta
ToolCallStart关闭当前 text/reasoning block,然后发 ToolCallStart
ToolCallDeltaToolCallDelta
ToolCallDoneToolCallEnd
StepStart(无直接映射)
StepEnd(无直接映射)
InferenceCompleteData("inference-complete", ...)
MessagesSnapshotData("messages-snapshot", ...)
StateSnapshotData("state-snapshot", ...)
StateDeltaData("state-delta", ...)
ActivitySnapshotData("activity-snapshot", ...)
ActivityDeltaData("activity-delta", ...)
RunFinish关闭当前 block,然后发 Data("finish", ...)Finish

UIStreamEvent 类型

  • start
  • text-start / text-delta / text-end
  • reasoning-start / reasoning-delta / reasoning-end
  • tool-call-start / tool-call-delta / tool-call-end
  • data
  • finish

文本块生命周期

编码器会自动管理文本块边界:

  1. 第一个 TextDelta 会打开一个 text block。
  2. 后续 delta 追加到同一个 block。
  3. 遇到 ToolCallStart 会先关闭当前 block。
  4. 工具结束后的新文本会重新开一个新 block。

相关