用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上分享構建、提問和交流心得。