摘要:在这个逐步快速入门指南中,我们将使用 Vision Agents,构建并运行一个 实时语音 AI 代理,该代理可以加入视频/音频通话,通过语音与用户互动,并使用 Google 的 Gemini 音频生成模型 进行响应。
在这个逐步快速入门指南中,我们将使用 Vision Agents,构建并运行一个 实时语音 AI 代理,该代理可以加入视频/音频通话,通过语音与用户互动,并使用 Google 的 Gemini 音频生成模型 进行响应。
Vision Agents 是一个 开源 的视频 AI 框架,用于构建实时语音和视频应用。它由 Stream 团队开发和维护。它以 Stream Video 作为默认的低延迟传输方式,由 Stream 的全球边缘网络提供支持。但是,您也可以将其与您喜欢的任何网络传输架构一起使用。
让我们构建一个 AI 代理,通过 Gemini Live API 与其进行对话并提供实时响应。Python 框架开箱即用地支持实时语音 API,如 OpenAI Realtime 和 Gemini Live。只需少量努力,您还可以使用上述图像中领先的 AI 提供商和平台,为语音转文本 (STT)、文本转语音 (TTS) 和语音转语音 (STS) 应用程序设置自定义管道。
要使用 Vision Agents 框架 构建您的第一个语音/视频 AI 应用程序,您可以从 PyPi 安装该包。建议使用 uv 作为包管理器。uv 也是开源且免费使用的。要开始,请运行 uv init 并在 .env 文件中设置所需的 API 凭据。您项目的文件夹结构将类似于:
在 .env 文件中,您应添加以下 API 密钥:
# Stream API 凭据 #STREAM_API_KEY= #STREAM_API_SECRET= EXAMPLE_BASE_URL=https://pronto-staging.getstream.io # Gemini #GOOGLE_API_KEY=注册您的 Stream API 密钥和密钥, 和 Gemini API 密钥。下一节中的简单语音代理实现没有显示上述凭证的任何实例,因为它们存储在 Shell 配置文件中。在 Mac 上,您可以将它们存储在 .zshrc 或 .zprofile 中。
uv add vision-agents默认情况下,SDK 不会安装任何包。要安装包,您可以运行以下命令:
uv add "vision-agents[getstream, gemini, openai, elevenlabs, deepgram]"我们简单的语音代理只需要 GetStream 和 Gemini 安装,所以运行这个命令。
uv add "vision-agents[getstream, gemini]"我们的语音代理将通过 Stream Video 接收用户的音频输入。使用 Vision Agents 时,Stream Video 是默认传输方式。您也可以使用自定义传输实现。用户的语音输入将被发送到 Gemini 的一个音频生成模型进行实时转录和处理。由于 Gemini Live API 支持工具使用,您可以轻松执行函数调用、网络搜索和代码执行,如上图所示。最终,代理的语音输出是用户将听到的内容。
在您的项目的 main.py 中,用以下示例代码替换内容。
import asyncio import logging from uuid import uuid4 from vision_agents.core.edge.types import User from vision_agents.plugins import getstream, gemini from vision_agents.core import agents, cli logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) async def start_agent -> None: llm = gemini.Realtime # 创建一个代理,使用 Stream 的边缘,Gemini llm agent = agents.Agent( edge=getstream.Edge, # 低延迟边缘。适用于 React、iOS、Android、RN、Flutter 等客户端 agent_user=User(name="我的快乐 AI 朋友", id="agent"), # 代理的用户对象(名称、图像等) instructions="你是一个语音 AI 助手。保持回答简短且口语化。不要使用特殊字符或格式。友好且有帮助。", processors=, # 处理器可以获取额外数据,检查图像/音频数据或转换视频 # 带有 tts 和 stt 的 llm。如果您使用的是实时(sts 能力)llm,则不需要 tts、stt 和 vad llm=llm, ) await agent.create_user # 创建一个通话 call = agent.edge.client.video.call("default", str(uuid4)) # 打开演示 UI await agent.edge.open_demo(call) # 让代理加入通话/房间 with await agent.join(call): # 示例 1:标准化的简单响应 await agent.llm.simple_response("和用户聊聊天气。") # 运行直到通话结束 await agent.finish if __name__ == "__main__": asyncio.run(cli.start_dispatcher(start_agent))总之,我们导入了所需的项目包并配置了语音代理,使其通过 Stream Video 通话与用户互动。我们指定了一个异步函数,包含代理的定义。代理的实例包括其身份、要使用的边缘传输、指令和可选的处理器。您还可以在构建高级语音应用程序时包含其他参数。例如,您可以使用 Ultralytics、Roboflow、Moondream 和 Gemini Robotics 模型 等平台实现一个物理代理或视觉 AI 项目的处理器。
添加新代理后,我们创建一个视频通话并打开 Stream Video 的网页 UI 与代理交谈。运行 main.py:
uv run main.py您应该看到类似此 YouTube 教程 中的示例演示的输出。
5、结束语Vision Agents 使结合实时视频、语音和 LLM 到强大的交互式 AI 体验变得简单。开箱即用,它支持领先的实时模型,如 OpenAI Realtime 和 Gemini Live,并与 Deepgram、Cartesia 和 Ultralytics YOLO 等工具集成。只需几行 Python,您就可以创建一个能够看见、听见并实时响应的 AI 代理。
来源:新缸中之脑一点号