用GPT Realtime 2和AG2在三行代码中构建低延迟语音代理
OpenAI推出了GPT Realtime 2,提供更低延迟、更自然的语音交互。AG2 Beta通过LiveAgent封装了该模型,实现双向连续音频会话。本文介绍了如何使用三行代码构建语音代理,支持工具调用和子代理委托,并比较了实时模式与传统STT-TTS架构。
OpenAI近期在API中推出了先进语音智能技术,包括GPT Realtime 2,用于实现更低延迟、更自然的语音交互。AG2 Beta通过LiveAgent封装了该模型:一个双向会话,连续音频输入输出,以及提供端的语音活动检测(VAD),用户可以在通话中打断和插话,就像打电话一样,而不是对讲机。
本文探讨了语音代理的重要性、LiveAgent与传统STT→Agent→TTS架构的对比,以及如何在保持实时语音界面不动的情况下添加工具和子代理风格的委托。
语音是许多场景下摩擦最小的渠道,例如驾驶、烹饪、现场工作、无障碍环境,以及手机上快速“告诉我”的时刻。用户期望低延迟、自然的轮流说话,以及在模型出错或新信息到达时能够插话。如果每次发言都等待完整的记录→转录→推理→合成周期,感觉就像填表格,而不是对话。
提供端的实时API将这种节奏推入模型和传输层:流式音频、内置VAD、以及打断语义(如果支持),使得应用程序无需在用户空间重新实现一半的电话栈。
基本代码示例
安装依赖后,导入LiveAgent、SoundDevicePlayer、SoundDeviceRecorder以及autogen.beta.live中的OpenAI配置助手。运行会话只需三行:构建代理,在单个异步with中打开会话和共享I/O,然后阻塞直到取消。
agent = LiveAgent("assistant", "You are a helpful voice assistant.", config=openai.RealTimeConfig("gpt-realtime-2", output=openai.AudioOutput(voice="ballad")))
async with agent.run() as context, SoundDevicePlayer(context=context), SoundDeviceRecorder(context=context):
await asyncio.Future() # run until cancelled这就是完整的“将麦克风和扬声器连接到GPT Realtime 2”的循环。包含导入和asyncio.run的自包含脚本如下所示(略)。
除了默认设置,你还可以调整助手的声音和说话时机:OpenAI实时AudioOutput接受voice和speed参数,InputConfig携带VAD/轮换检测选项(例如带有打断功能的语义VAD)。
工具和子代理的工作方式
工具
LiveAgent使用与文本Agent相同的@agent.tool装饰器。调用通过AG2的正常工具执行器;结果自动发送回实时会话——因此你在堆栈其他部分使用的中间件和人机交互模式可以保持一致。
@agent.tool
async def sum_numbers(a: int, b: int) -> int:
"""Add two integers and return the result."""
return a + b子代理(委托)
LiveAgent围绕实时音频会话构建,而不是与文本Agent相同的ask()循环。当语音表面需要更深层的推理、更长上下文的工作,或者你更希望将工具保留在文本端时,将单独的Agent暴露为可调用的工具(使用Agent.as_tool()),并通过tools=[...]传递给LiveAgent。实时模型发出工具调用;AG2运行该嵌套的Agent并将结果发送回实时会话。
researcher = Agent(name="researcher", prompt="You research topics thoroughly and return concise bullet facts.", config=OpenAIConfig("gpt-4o-mini"))
research_tool = researcher.as_tool(description="Use for multi-step research or when the user needs cited-style facts in text form.")
voice = LiveAgent(name="voice", prompt="You are a low-latency voice assistant. Call research when the user needs deep fact-finding.", config=OpenAIRealTimeConfig("gpt-realtime-2"), tools=[research_tool])这提供了子代理风格的委托,而无需假装实时会话是一个完整的Agent.ask循环。
支持的提供商
LiveAgent接受任何RealtimeConfig。AG2 Beta目前提供OpenAI和Gemini实现。
- OpenAI — gpt-realtime-2,带AudioOutput用于语音和速度,或TextOutput用于纯文本回复;InputConfig控制VAD和轮换检测(默认倾向于带有打断功能的语义VAD)。
- Gemini — 例如gemini-3.1-flash-live-preview,支持实时音频。
LiveAgent还是STT-TTS
AG2 Beta支持两种语音模式:
- STT→Agent→TTS:离散轮次,转录、调用文本Agent、合成。每轮典型延迟1-3秒。
- LiveAgent(实时):整个对话一个全双工会话,典型延迟低于500毫秒。
两者互补而非竞争。当每轮需要所有Agent功能(结构化输出、丰富中间件、任意模型路由)时,选择STT-TTS。当延迟和对话流畅性最重要,并且你乐于通过实时模型(如gpt-realtime-2)驱动会话时,选择LiveAgent。
下一步
- 阅读文档:从LiveAgent — Realtime Voice Sessions和Voice & Realtime overview开始。
- 安装试用:pip install "ag2[openai] sounddevice[numpy]",然后运行AG2仓库examples/live_playground/下的示例。
- Star仓库:如果LiveAgent有用,在github.com/ag2ai/ag2上点星有助于他人发现项目。
- 加入社区:在AG2 Discord上分享构建、提问和交流心得。