Галоўная / Артыкулы

Галасавыя агенты на GPT-Live-1: сесіі, рэжымы дэлегавання і рэальны кошт тэлефоннай лініі

Практычны агляд поўнадуплекснай галасавой мадэлі OpenAI: як праходзіць сесія, Responses супраць дэлегавання кліенту, разлік кошту і пасткі ў дакументацыі.

Выдавец: REACTAPP.TOP8 хв чытання1874 слоў

Крыніцы: How to Use GPT-Live-1: Build a Voice Agent That Listens While It Talks

Кожны, хто звоніў у рэсторан і потрапіў на голасовага бота, знае гэты момент. Вы ўсё кажаеце, настае пауза, а потым бот пачынае адпавядаць на запітанне, якое вы задалі пяць секунд раней, самэй тады, калі намагаецеся пасправіць ся. Большасць людзей у канцы канцоў нажымае 0, каб прабаваць павярсіцца з людзьмом.

Гэты незгодзіцельны рытм ўжо ўбудованы ў стандартную конструкцыю. Класычны голасовы бот чакае, пакуль вы замовкнеце, перакладае аудыя на тэкст, размышляе, перакладае адпаведзь назад у мову і воспроізнае яе. Ніхто не можа перакрыць голас іншага.

GPT-Live-1 — гэта спроба OpenAI стварыць іншую форму. Гэта мадэль, якая стоіць за ChatGPT Voice і якая доступна праз API; яна слухае, калі вы гаворыце. На гэтай сторанцы паказана, чым яна відрóżнаецца, як працюе сесія, як яна перадае складныя запітанні на бэкенд-мадэль і скількі коштаў бы маленькі тэлефонны лінійкі.

Што такое GPT-Live-1

Гэта мадэль голасу з падтрымкам двунаправленай свяронкі. Двунаправленая свяронка означае, што обе стороны можаць гаварыць адночасова, як у звычным тэлефонным разыянні. Калі абонент перакінуе: «Насправды, нехай будзе чатыро чалавек», мадэль зупініцца, скорэктуецца і продзеяць далей.

Мадэль таксама перакладае складныя вычынкі на іншага. Калі для выпання запіту трэба рэальныя зусіллі — будзь то пошук, запыт у сістэме броніравання чыму-небудзь або рэтэльныя выважэнні — задача пераходзіць да адзінокай мадэлі на заднім фоне. У матэрыялах OpenAI прыводзіцца паўтарэнне прыблізна 0,8 секунды, што менейш за апошнюю мадэль голасу з прыблізна 1,4 секунды. Гэта можна спрыяць як даны віробніка.

Практычны наследк — голас і «мозг» стаюць адзінаковымі задачамі. Голас керуе разыяннем, а задні фон керуе выважэннямі і інструментамі.

Дэлегаванне: голас, які гаварыць, і «мозг», які выважае

Перадача задачы — гэта тое, што OpenAI называе дэлегаваннем. Пастойчыя, за калекі секунды, мадэль голасу вырашае, чы гэта застаць у тышыні і слухаць, зупініцца, гаварыць, чы працяваць з задачай у бэкэндзе. Калі задача выконваецца, размова ніколі не зупіняецца, бо голас можа сказаць «дазвольце пераканацца» і продаваць чат.

Уявіце, калі абонент запытае працавальніка рэсторана, чы ёсць вольны стол на чатырох у пятніцу о 7:30. Мадэль кажае «дазвольце пераканацца», надае запіт пра наявнасць стола у бэкэндзе і паведамляе абоненту рэзультат, калі той вяртаецца.

Такая структура таксама рашае проблэму актуальнасці інформацыі. За данымі сторонніцы мадэлі, знанні мадэлі голасу заканчваюцца 31 ліпня 2025 года, таму ўсе актуальнае вынужана прыходзіць з бэкэндза.

Прыступленне да працы голасовай сесіі

Варыянты з’яўлення з’яўляюцца ў відэа-дзяўанні: WebRTC для прыемлікаў у браузерэ, WebSockets для адліку ад сервера, а таксі SIP для рэальных тэлефонных номераў. Незалежна ад выбору, фармат з’яўлення аднойчыны схожы, таму ніжныя крокі будуць адпаведныя.

Крок 1: зберагчы кантрольны ключ на серверэ

Кантрольны ключ не трэба трываць у браузерах. Свой надзеяны сервер стварае сесію, а браузер займаецца толькі мікрафонам і дынамікам. Патрэбны платны акаунт, адтолькі ўсільнія версіі не падтрымваныя, а ліміты кількасці одночасных жывых сесій зростаюць з рангам акаунта.

Крок 2: запуск сесіі

Пасля з’яўлення з’яўлення вы адправляеце адзін эвэнт session.start, які містыць вашы настройкі.

{
  "type": "session.start",
  "session": {
    "model": "gpt-live-1",
    "instructions": "Be concise and ask before taking an external action.",
    "audio": { "output": { "voice": "marin" } },
    "delegation": { "type": "client" }
  }
}

Эйтан падзея выбірае мадэль, задае інструкцыі, выбірае голас і выявляе, хто выконвае працу на адміністратыўнай стороне. Чакайце з выказванням, пакуль не будзе павернута значэнне session.started. Мадэль, інструкцыі і голас застаюцца незменнымі пасля пачатку сесіі, таму новыя правіла дадаюцца праз session.instructions.append, а не заменяюць первісны тэкст.

Шаг 3: трансляція аудыю у обох направленнях

За дапамою WebRTC прыглед за аудыям ведае браузер. Праз WebSockets вы адправляеце маленькія фрагменты праз зместы session.input_audio.append. Фармат ўскладнены: неапраныя монафонічныя 16-бітныя даны PCM, закодаваныя у базе64, без заголовка WAV, пры частоце дзеяння, якую вы насталі пад час запуску (стандартна — 24 кгц). Голас модэлю вяртаецца такім жа способам, праз зместы session.output_audio.delta. Калі ваш аудыявыхадны кантэнт выкарыстоўвае іншую частоту, перэкантэнтавайце яго самі, таму што змена настаўкі фармата не перакантэнтавае вашыя байты.

Шаг 4: чытанне транскрыпцый

Тэкст у рэальным часе для обох сторон прыходзіце праз зместы session.input_transcript.delta і session.output_transcript.delta. Не існуе зместу „фаза завершана“, таму што обе стороны можаць гаварыць адночасова. Калі ваша прыкладка патрэбуе апранутых фаз для логаў, групаваце фрагменты на вашай стороне.

Шаг 5: чыстая закрыцця

Адаптуйце session.close і продовжайце чытаць, пакуль не з’явіцца session.closed. Гэтыя апошнія падзеі маюць у сабе даныя пра выкарыстанне, за якія будзе вырачана плата. Калі з’ўязак проста з’явіцца раней, чым прыйдуць гэтыя падзеі, вы не отрымаеце падтверджэння пра выкарыстанне, што мае значэнне пад час узгадкі рахунку.

Спраба, якую люды часта забываюць, — гэта чатверты крок, які заключаецца у стварэнні чытабельных фрагментаў з транскрыпцыі.

Перадача заданняў на бэкэнд

Тут GPT-Live-1 перастае быць проста прыемлівым голасам і стае корыстным агентам. Пад час пачатку сесіі выбіраецца адны з двух рэжымаў дэлегавання, і яго нельга зменіць пасля пачатку. Чырвоніць рэжым можна толькі пачынкам новай сесіі.

Варыянт А: Дэлегаванне адпаведзенняў

Вы называеце модэль адпаведзенняў, якую голас павінен вызываць, а таксама інструменты, якія ён можа вікорыстоўваць. Канфігурацыя знаходзіцца ў об’екце сесіі разам з іменем модэля.

"delegation": {
  "type": "responses",
  "responses": {
    "model": "gpt-5.5",
    "instructions": "Use tools when current information is required.",
    "tools": [{ "type": "web_search" }],
    "tool_choice": "auto"
  }
}

З таго часу запіт абонента, якій трэба адказа пасля пошуку, обрабатваецца бэкэндам, а рэзультат прыносіцца ў трываючую розмову. Адзінаковыя сітуацыі з індывідуальнымі функцыямі. Функцыя на кшталт check_table не выкананае бэкэндам. Я ваша прыкладна програма прыме вызов, выканае яе, вярнуе рэзультат і пасля чаго паведаміце бэкэнду прыняць рашэнне.

Уявіце сабе, калі абонент спытае, чы будзе дошча ў пятнічны вечар, калі група можа сядзець на вуліцы. Бэкэнд адрабатвае пошук у інтэрнэтэ, голас адпаведзае, што пасля шасці чакаецца лёгкая дошча, таму можа быць безпечней застацца ў будынку, і абонент не мусіць чакаць дзяўнай тышы.

Варыянт B: дэлегаванне кліентам

У гэтым случае ваша сопрацоўная програма выступае бэкэндам. Калі модэлю патрабуецца дапамога, вы прымайце запіс session.delegation.created з ідэнтыфікатарам. Вы выкананыя працу на свой выбар і адправляеце адказ з тым самым ідэнтыфікатарам.

{
  "type": "session.commentary.append",
  "delegation_id": "item_delegation_123",
  "content": "Table for 4 is confirmed at 7:30 pm Friday."
}

Паведамленне-каментар значыць, што модэль должна выгаварыць тэкст уголас. Калі модэль должна чагось знайсці тыха, session.thinking.append выконвае гэта заместа. Кожна паведамленне можа складацца з прыблізна 500 токенаў. У прынцыпе, адпаведальны за кліента можа перадаць задачу фрэймворку агента, які вы выбералі, але такая комбінацыя выклікае патрэбу ў самастойным тэставанні пры тым, прычым вы яе будзеце вікорыстоўваць.

Розумны падход — пачаць з кераванняя адпаведзямі і перайсці да кераванняя кліентам, калі вам патрэбна большая контроль над правамі, паўтарэннямі або самым працэсам.

Калі гэта коштае

Слуховы слой коштае $0,05 за хвіліну, рахуецца за секунду. Гэта дае $3 за гадзіну, або $72 за дзень для лініі, якая застаецца ачытайцаю цілы час. Модэлі і інструменты бэкэнду рахуецца окрэма, таму рэальныя затраты залежаць ад таго, як часта калінкі патрабуюць дапамогі.

Прыклад на практыцы, з вымовленымі цыфрамі:

  • Падзірцем, лінія рэстарана прыме 2 000 дзвянакоў ў месяц, кожны з якіх трывае або 3 хвіліны. Гэта 6 000 хвілін, таму толькі для голасу трэба 6 000 разоў $0,05, тое $300.
  • Далей падазірцем, што за кожны дзвянак відбуваецца два перадачы інформацыі, кожная з якіх включае прыблізна 3 000 токенав уваходу і 300 токенав выходу, пры чым абслугоўчы сервер коштае $10 за мільйон токенав уваходу і $50 за мільйон токенав выходу. Адна перадача коштае $0,03 плюс $0,015, тое $0,045. Две перадачы коштаюць $0,09 за дзвянак, таму 2 000 дзвянакоў даўаюць $180.
  • Аб’ём расходаў становіць прыблізна $480 ў месяц, тое або прыблізна 24 цэнты за дзвянак.

Колькасць токенав і тарыфы абслугоўчага сервера ўзятыя як апрыксонацыі для простага працэсу броніравання, таму перад тым, як ім даваць веры, памерыце свой сацэс. Частка, якая стосуецца голасу, ёсць прыемлівай, а самым важлівым ёсць абслугоўчы сервер.

Дакладнасці, якія прахоўваюцца ў публікаціях пра запуск

Перыванне не анулюе працу

За інструкцыямі, адзінолька зупінка мовлення асістэнта не завжды зупіняе працу сервера. Абонент, які кажае "некалі", можа все ўсё такі ж побачыць рэзультаты пошуку або броніравання, калі толькі ваша прыкладка гэта не зупініць. Гэта нешкодна для запіта пра пагоду, але серьзёзная для сітуацыі, калі спачатку кажуць "бронюйце", а потым "чакайце, ні".

Прыйняты сігнал не чуецца

Даўанне додатковага рэзультата вяртае падтверджэння, але гэта не абавязкова значыць, што мадэль фактычна яго выгукнула чы ўсё ўсё такі ж хтось яго чуў. Завершэнне адпаведзення сервера — гэта адна рэч, а тое, што абонент яго чуе, — іншая. Для усяго, што трэба падтвердзіць, напрыклад, час броніравання, трэба шукаты гэты тэкст у выходным транскрыпцыі.

Ціфры тэставання разлічаюцца залежна ад крыніцы

Разлічныя показнікі бенчмарка для гэтага модэля па задачах абслугоў кліянтаў, праказаныя ў публікаціях самай OpenAI і ў прасовых матэрыялах, не збігаюцца. У будзь-якім случае, прырост эфектыўнасці па апэлі да старэйшага модэля ёсць вялікі, але гэтыя рэзультаты надаюцца віробнікам, а незалежных тэстаў мало. Апавяданні кліянтаў, напрыклад, ад компаніі з вучэння мов, якая апісвае значна меншыя перэрывы пад час пауз у мышлэнні учняў, ёсць анекдотамі, а не науковымі доследжэннямі.

Тыхі кантэкст — не безпечнае месца для секрэтав

Што бы не было запісана праз session.thinking.append, гэта можа ўплынуць на празьбутнія выказванні. Не трэба туды дадаваць номеры рахункоў і прыватныя нотаткі.

Калі гэта падходзіць, а калі — ні

Гэта падходзіць:

  • Дзвонныя лініі для броніравання, замовленняў і простай падтрымкі
  • Дзеянні для вучэння, дзе корыстувальнікі зупіняюцца і размышляюць між рэчэннямі
  • Команды, якія хочуць заменіць троха разлучных модэляў на адны ўзаўмасвязаны канвейер

Задумайцеся два разы пры:

  • Тэлефанныя разы, дзе адна неправільная дзеянне мае вялікія наследкі, напрыклад, платэжы
  • Продукты, якім зараз трэбаіць індывідуальныя голасы брэнду, адколькі іх практычна перадаюць на адзінокы працэс затверджэння
  • Усё, што патрабуе інфармацыю з адпраўкі звярткаў чы відэа, якія модэль не прымае

Рызыкаваны падход — дазволіць бэкэнду падтвердзіць броніраванне як толькі абоўядчык скажае "годзяцца", не пераканалівшыся ў тым, што ён сказаў пазней. Безпечнейшы варыянт — перачытаць падтверджэнне, чакаць на чыстае "так" і, калі абоўядчык змяніць сваё рашэнне, дазволіць вашаму дапысу анулюваць незавершаную працу. Голас можа быць чудовым, але адпаведальнасць за безпеку все рава несе ваш дапыс.

Ключовыя моманты

  • Абоўядчыкі можа перарваць чы змяніць тэкст рэчы ў паўфразе, адколькі модэль продовжае слухаць, пакуль той гаворыць.
  • Сутэйныя задачы перадаюцца на бэкэндовы модэль, незалежна ад таго, чы ўправляе ім OpenAI чы ваш сопны дапыс.
  • Кожна сесія складаецца з пяці крокаў: пачатак, чаканне на session.started, трансляцыя аудыя, агрэгатаванне фрагментаў транскрыпцыі для выканання кожнага крока і адключэнне сесіі.
  • Вартасць апрацоўкі голасу становіць $0,05 за хвіліну, таму лінія для 2 000 дзвянакоў будзе коштаць апошней прыблізна $480 на месцы, якшча прыймаць вышэўказаныя заставкі і мінімальную навантажэннае на сервер.
  • Калі абоўязак абарвання перарывае, праца сервера продовжваецца, таму ваша прыкладна програма павінна сама кераваць сітуацыяй, калі трэба чакаць або адмовіцца ад далейшай апрацоўкі.