实时与语音智能体¶
Supported in ADKPython v0.5.0Java v0.2.0Experimental
ADK 是用于构建实时和语音智能体的框架。实时智能体与用户之间保持着开放的双向连接:用户和智能体可以同时说话、倾听和回应,而不是发送消息后等待回复,用户还可以在智能体说话中途打断它,就像人们在真实对话中互相打断一样。实时智能体接受文本、音频和视频输入,并以文本或语音进行回复。
实时智能体就是 ADK 智能体,使用与其他场景相同的智能体、工具和会话抽象来构建。你只需描述智能体的行为;ADK 在底层管理实时连接、工具执行和会话状态。目前该连接运行在 Gemini Live API 上;ADK 处理所有连接细节,使你的智能体代码在平台演进时保持不变。
构建实时智能体¶
-
快速开始
构建你的第一个实时智能体,并在浏览器中与它对话。
-
构建指南
按照你大概需要的顺序排列的功能页面。
-
生产部署
将实时智能体从
adk web推向生产环境。
你需要哪种流式传输?¶
"流式传输"在 ADK 中涵盖三种不同的含义,选错类型是常见的困惑来源。
| 功能说明 | 用户可打断? | 适用场景 | 位置 | |
|---|---|---|---|---|
| 服务端流式传输 | 从服务端到客户端的单向数据流,类似实时推送。 | 否 | 你需要推送仪表盘或数据流更新,而非对话。 | ADK 外部 |
| 逐字流式传输 | 文本逐词送达,但你需要等它完成后才能继续发送。 | 否 | 你需要响应式文本聊天。 | StreamingMode.SSE(配置) |
| 双向流式传输 | 双方通过同一连接同时说话、倾听和回应。 | 是 | 你正在构建语音或视频对话。 | runner.run_live() — 本页面 |
本页面介绍的是第三种。
sequenceDiagram
participant Client as 用户
participant Agent as 智能体
Client->>Agent: "解释一下日本的历史"
Agent->>Client: "好的!日本的历史是..."(部分内容)
Client->>Agent: "啊,等一下。"
Agent->>Client: "好的,有什么可以帮您?" [已打断: true]
为什么在 ADK 上构建实时智能体¶
Live API 提供了流式传输协议。ADK 在其基础上提供了所有其他能力,让你专注于编写智能体行为,而非流式基础设施。
原始 Live API (google-genai) |
ADK | |
|---|---|---|
| 工具执行 | 手动 | 自动 |
| 重连 | 手动 | 自动会话恢复 |
| 事件 | 自定义结构 | 统一事件模型 |
| 异步协调 | 手动 | LiveRequestQueue + run_live() |
| 会话持久化 | 手动 | SQL、Agent Platform、内存存储 |
| 多智能体 | 不支持 | 工作流、子智能体、转移 |