AI News HubLIVE
站內改寫2 分鐘閱讀

用GPT Realtime 2和AG2在三行程式碼中構建低延遲語音代理

OpenAI推出了GPT Realtime 2,提供更低延遲、更自然的語音互動。AG2 Beta透過LiveAgent封裝了該模型,實現雙向連續音訊會話。本文介紹瞭如何使用三行程式碼構建語音代理,支援工具呼叫和子代理委託,並比較了即時模式與傳統STT-TTS架構。

來源Hacker News AI作者: Lancetnik

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