Skip to content

实时与语音智能体

Supported in ADKPython v0.5.0Java v0.2.0Experimental

ADK 是用于构建实时和语音智能体的框架。实时智能体与用户之间保持着开放的双向连接:用户和智能体可以同时说话、倾听和回应,而不是发送消息后等待回复,用户还可以在智能体说话中途打断它,就像人们在真实对话中互相打断一样。实时智能体接受文本、音频和视频输入,并以文本或语音进行回复。

实时智能体就是 ADK 智能体,使用与其他场景相同的智能体、工具和会话抽象来构建。你只需描述智能体的行为;ADK 在底层管理实时连接、工具执行和会话状态。目前该连接运行在 Gemini Live API 上;ADK 处理所有连接细节,使你的智能体代码在平台演进时保持不变。

构建实时智能体

  • 快速开始


    构建你的第一个实时智能体,并在浏览器中与它对话。

  • 构建指南


    按照你大概需要的顺序排列的功能页面。

    • 会话 — run_live()、会话恢复、规模化
    • 事件 — 返回内容及其处理方式
    • 工具 — 自动执行和流式工具
    • 工作流 — 实时连接下的多智能体协作
    • 音频和视频 — 格式与流式传输
    • 配置 — RunConfig、语音、转录、轮次检测
  • 生产部署


    将实时智能体从 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、内存存储
多智能体 不支持 工作流、子智能体、转移

演示与资源

  • LensMosaic:基于实时 AI 的视觉购物


    将实时摄像头输入、语音和产品发现融为一体。将摄像头对准任何物体即可找到类似商品。基于 ADK 实时智能体、Gemini Embedding、向量搜索和 FastAPI 构建。

  • 双向流式传输可视化指南


    通过图表和插图介绍流式传输的工作原理,以及如何使用 ADK 构建交互式智能体。

  • Google ADK + Gemini Live API


    使用实时智能体进行实时音视频处理,包含一个基于 LiveRequestQueue 构建的 Python 服务器示例。