VisionAgents 开源视频AI框架
在这个逐步快速入门指南中,我们将使用 Vision Agents,构建并运行一个 实时语音 AI 代理,该代理可以加入视频/音频通话,通过语音与用户互动,并使用 Google 的 Gemini 音频生成模型 进行响应。
1、Vision Agents 概述
Vision Agents 是一个 开源 的视频 AI 框架,用于构建实时语音和视频应用。它由 Stream 团队开发和维护。它以 Stream Video 作为默认的低延迟传输方式,由 Stream 的全球边缘网络提供支持。但是,您也可以将其与您喜欢的任何网络传输架构一起使用。
让我们构建一个 AI 代理,通过 Gemini Live API 与其进行对话并提供实时响应。Python 框架开箱即用地支持实时语音 API,如 OpenAI Realtime 和 Gemini Live。只需少量努力,您还可以使用上述图像中领先的 AI 提供商和平台,为语音转文本 (STT)、文本转语音 (TTS) 和语音转语音 (STS) 应用程序设置自定义管道。
2、设置和安装 Vision Agents
要使用 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 中。
3、安装 Vision Agents SDK 和插件。
运行此命令以安装核心 Vision Agents SDK
uv add vision-agents
默认情况下,SDK 不会安装任何包。要安装包,您可以运行以下命令:
uv add "vision-agents[getstream, gemini, openai, elevenlabs, deepgram]"
我们简单的语音代理只需要 GetStream 和 Gemini 安装,所以运行这个命令。
uv add "vision-agents[getstream, gemini]"
4、构建一个简单的语音代理
我们的语音代理将通过 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 代理。
原文链接:Build Your First Voice and Video Call AI Agent in Python
汇智网翻译整理,转载请标明出处