ThunderPhone 2.0 sasa inapatikana.Anza mwenyewe, kuanzia 2¢/dakika.Soma tangazo

Connect tools & data

Tumia ThunderPhone na wateja wa OpenAI Realtime

Elekeza mteja wa seva unaooana na OpenAI Realtime kwenye ThunderPhone, ukitumia ama ejenti iliyohifadhiwa au usanidi wa kipindi uliowekwa ndani.

ThunderPhone hutekeleza seti ndogo iliyolengwa ya modeli ya matukio ya OpenAI Realtime. Mteja wa upande wa seva aliyepo anaweza kudumisha mtiririko wake wa matukio ya WebSocket, sauti, sesheni na majibu huku akitumia ejenti ya sauti ya ThunderPhone.

Kabla ya kuunganisha

Unahitaji ufunguo wa API wa siri wa shirika la ThunderPhone na mazingira ya utekelezaji ya seva yanayoweza kufungua WebSocket. Usiunganishe kutoka kwenye msimbo wa kivinjari au kufichua ufunguo kwa kivinjari. Ili kutumia ejenti iliyohifadhiwa, isambaze kwanza kisha unakili kitambulisho chake cha nambari.

Unganisha kwa:

wss://api.thunderphone.com/v1/realtime

Thibitisha uboreshaji wa WebSocket kutoka kwenye seva yako:

Authorization: Bearer sk_live_YOUR_API_KEY

Uthibitishaji wa query string unapatikana kwa wateja wasioweza kuweka vichwa vya handshake, lakini URL ni rahisi zaidi kuvuja kwenye logi.

Chagua anayemiliki usanidi

HaliUnganisha kwaChanzo cha usanidi
Ejenti iliyohifadhiwa?agent_id=12Prompt iliyosambazwa, sauti, bidhaa, lugha, maarifa na zana zinazooana zinazoendeshwa na seva
Ndani ya mstariHakuna agent_idsession.update ya kwanza inayokubaliwa kutoka kwa mteja wako

Ejenti iliyohifadhiwa

Unganisha kwa kitambulisho cha ejenti iliyosambazwa:

wss://api.thunderphone.com/v1/realtime?agent_id=12

Ejenti huanza wakati soketi inaunganika. Salamu yake hubaki inapatikana, lakini Realtime huzima ukaguzi wake wa kimya unaosemwa na huacha transfer_call na send_keypad_input. Zana zingine zinazooana huendeshwa kwenye ThunderPhone. Usitume maelekezo ya ndani ya mstari au zana zinazotekelezwa na mteja kwa hali hii.

Weka sauti ya muunganisho kabla ejenti haijaanza kwa vigezo vya query vya input_audio_format, output_audio_format, input_rate, na output_rate. Huwezi kubadilisha usanidi uliohifadhiwa au fomati za sauti baada ya kuunganisha.

Sesheni ya ndani ya mstari

Bila agent_id, subiri session.created, kisha tuma session.update:

{
  "type": "session.update",
  "session": {
    "type": "realtime",
    "instructions": "Answer questions clearly and keep responses brief.",
    "audio": {
      "input": {
        "format": { "type": "audio/pcm", "rate": 24000 }
      },
      "output": {
        "format": { "type": "audio/pcm", "rate": 24000 },
        "voice": "olivia"
      }
    },
    "config": {
      "product": "bolt"
    }
  }
}

Sasisho la kwanza linalokubaliwa huandaa simu. session.updated inamaanisha sesheni inaanza kutumika. Maelekezo, sauti, bidhaa, zana na fomati za sauti haziwezi kubadilishwa baada ya hapo.

Sesheni za ndani ya mstari hazina salamu ya kiotomatiki au ukaguzi wa kimya unaosemwa. Ili kumfanya ejenti aanze kuzungumza, ongeza ujumbe wa mfumo au wa mtumiaji kisha tuma response.create. Sesheni isiyo na shughuli kabisa bado huisha katika kikomo cha simu kimya cha jukwaa, sekunde 600 kwa chaguo-msingi.

Tumia SDK rasmi ya OpenAI

Pitisha URL msingi ya WebSocket inayoishia na /v1; SDK huongeza /realtime. Thamani ya model ni jina la uoanifu na haichagui bidhaa ya ThunderPhone. Chagua bidhaa katika usanidi wa kipindi au ejenti iliyohifadhiwa.

Ukaguzi huu wa muunganisho huunda kipindi cha Bolt cha ndani, huchapisha matukio hadi session.updated ya kwanza, kisha hufunga. Tumia mteja mdogo wa Python kutiririsha sauti.

import asyncio
import os
 
from openai import AsyncOpenAI
 
 
async def main():
    client = AsyncOpenAI(
        api_key=os.environ["THUNDERPHONE_API_KEY"],
        websocket_base_url="wss://api.thunderphone.com/v1",
    )
 
    async with client.realtime.connect(
        model="thunderphone-realtime"
    ) as connection:
        await connection.session.update(session={
            "type": "realtime",
            "instructions": "Listen to the caller and help them complete the call.",
            "config": {"product": "bolt"},
        })
        async for event in connection:
            print(event.type)
            if event.type == "session.updated":
                break
 
 
if __name__ == "__main__":
    asyncio.run(main())

Dumisha ushughulikiaji wako uliopo wa kuongeza sauti ya ingizo, delta za sauti za majibu, ukatizaji, miito ya function, hitilafu, na kufunga socket kwa usafi. Function maalum za ndani hutekelezwa katika mteja wako; rudisha matokeo yake kupitia itifaki ya Realtime. Zana za ejenti iliyohifadhiwa hutekelezwa kwenye ThunderPhone.

Mzunguko wa maisha wa kipindi na hitilafu

WebSocket moja inawakilisha simu moja. Kitambulisho batili cha ejenti au usanidi wa ndani uliokataliwa huzalisha tukio la error. Subiri session.updated kabla ya kuchukulia kipindi kuwa kinafanya kazi. Bainisha fomati halisi za ingizo na towe pamoja na viwango vya sampuli: kutolingana kwa kiwango cha PCM hucheza sauti kwa kasi mno au polepole mno badala ya kuzalisha hitilafu ya uthibitishaji.

Baada ya kipindi kuanza, funga socket kwa usafi programu yako inapomaliza. Vipindi vya ndani vinaweza kutumia function zinazotekelezwa na mteja. Vipindi vya ejenti iliyohifadhiwa hutumia zana zinazooana zinazoendeshwa na ThunderPhone na havitoi uhamisho wala ingizo la keypad.

Jaribu ujumuishaji

Anza na mteja mdogo wa Python WAV na WAV ya mono PCM16 katika kiwango chake cha sampuli kilichobainishwa. Thibitisha:

  1. Seva inakubali usanidi na kutuma session.updated.
  2. Ingizo huzalisha matukio ya nakala na sauti ya jibu kwa kasi inayotarajiwa.
  3. Ukatizaji na kughairi jibu husimamisha sauti ya towe iliyosalia.
  4. Matokeo ya function ya ndani au matokeo ya zana ya ejenti iliyohifadhiwa hurudi kwenye model.
  5. Ingizo batili huzalisha tukio la error ambalo mteja wako hushughulikia.
  6. Mteja wako hufunga socket na simu huonekana katika Historia ya simu.

Marejeleo ya Realtime WebSocket yanaorodhesha matukio yanayokubaliwa, fomati za sauti, sehemu za kipindi, na mifano kamili.

Gharama

Simu za Realtime hutumia kiwango cha kawaida cha kila dakika cha bidhaa iliyochaguliwa. Kuwasha delta za nakala za moja kwa moja huongeza ada ya kila dakika kwa kipindi chote; tazama Nakala za moja kwa moja kwa kiwango na Bei kwa viwango vya bidhaa.

POST /v1/realtime/sessions ni njia tofauti inayosimamiwa ya LiveKit. Huunda chumba na tokeni ya mshiriki yenye upeo maalum; haihitajiki kwa muunganisho wa moja kwa moja wa WebSocket.

Kwa ujumuishaji wa framework, tazama Tumia ThunderPhone kutoka Pipecat na Tumia ThunderPhone kutoka LiveKit Agents.