ThunderPhone 2.0 sasa inapatikana.Anza kuitumia mwenyewe, kuanzia senti 2 kwa dakika.Soma tangazo

Connect tools & data

Tumia ThunderPhone kutoka LiveKit Agents

Endesha ejenti ya sauti ya ThunderPhone kama modeli ya wakati halisi (hotuba-kwa-hotuba) ya kipindi cha LiveKit Agents, ikiwa na vyumba vya LiveKit, SIP na telefoni kuizunguka.

LiveKit Agents ni fremu ya chanzo huria ya ejenti za sauti za wakati halisi inayotumia vyumba vya LiveKit. ThunderPhone huunganishwa kama muundo wa wakati halisi: fremu hutuma sauti ya mshiriki, ThunderPhone hurejesha sauti ya ejenti, transkripti na miito ya function, huku chumba cha LiveKit, trunk za SIP na telefoni zikisafirisha sauti. Utambuzi wa usemi, muundo wa lugha, sauti, ubadilishanaji wa zamu, lugha 47 na zana zote huendeshwa kwenye ThunderPhone.

Simu zinazopigwa kwa njia hii huonekana katika historia ya simu na hutozwa kwa kiwango cha bidhaa yako kwa dakika kama simu nyingine yoyote ya wakati halisi. Hakuna usajili wala nambari ya simu ya ThunderPhone inayohusika.

Sakinisha

pip install livekit-plugins-thunderphone
export THUNDERPHONE_API_KEY=sk_live_...   # a secret API key

Programu-jalizi inafunika muundo wa OpenAI Realtime wa LiveKit, kwa sababu Realtime WebSocket ya ThunderPhone hutumia itifaki hiyohiyo. Inahitaji livekit-agents 1.8 au toleo jipya zaidi.

Endesha ejenti iliyohifadhiwa

Kila kitu ambacho ejenti hufanya (prompt, sauti, injini, lugha, zana, salamu, ukaguzi wa ukimya) husanidiwa kwenye ThunderPhone. Kikao huhamisha sauti pekee.

from livekit.agents import Agent, AgentSession, JobContext, WorkerOptions, cli
from livekit.plugins import thunderphone
 
 
async def entrypoint(ctx: JobContext):
    session = AgentSession(llm=thunderphone.RealtimeModel(agent_id=12))
    await session.start(agent=Agent(instructions=""), room=ctx.room)
 
 
if __name__ == "__main__":
    cli.run_app(WorkerOptions(entrypoint_fnc=entrypoint))

Ejenti iliyohifadhiwa husalimia na kuendesha zana zake kwenye ThunderPhone; maelekezo na zana za Agent ya LiveKit hazitumwi. Simu huisha ejenti ya ThunderPhone inapokata simu, na kikao hufungwa pamoja nayo.

Sanidi kikao moja kwa moja

Bila agent_id, maelekezo na zana hutoka kwenye Agent ya LiveKit, kwa njia hiyohiyo kama zilivyo kwa OpenAI. product huchagua injini na voice huchagua sauti ya ThunderPhone.

from livekit.agents import Agent, AgentSession, RunContext, function_tool
from livekit.plugins import thunderphone
 
 
class Receptionist(Agent):
    def __init__(self):
        super().__init__(instructions="You are Acme Dental's receptionist. Be brief.")
 
    @function_tool
    async def check_availability(self, context: RunContext, date: str) -> dict:
        """Free appointment slots on a date."""
        return {"slots": await calendar.free_slots(date)}
 
 
async def entrypoint(ctx: JobContext):
    session = AgentSession(
        llm=thunderphone.RealtimeModel(product="bolt", voice="olivia", language="es"),
    )
    await session.start(agent=Receptionist(), room=ctx.room)
    await session.generate_reply()   # the agent speaks first

ThunderPhone hufungia maelekezo na zana simu inapoanza, hivyo update_instructions, update_tools na uhamishaji wa ejenti unaozibadilisha hauauniwi katikati ya simu. Vipindi vya moja kwa moja hudhibitiwa na mteja: ejenti huzungumza unapopiga generate_reply() au mshiriki anapomaliza zamu.

Chaguo

HojaMaana
api_keyUfunguo wa siri (sk_live_...). Chaguo-msingi ni THUNDERPHONE_API_KEY.
agent_idEndesha ejenti iliyohifadhiwa. Haiwezi kutumika pamoja na product na voice.
productInjini ya vipindi vya ndani: spark, bolt au storm.
voiceJina la sauti ya ThunderPhone kwa vipindi vya ndani.
languageDokezo la lugha kuu kwa vipindi vya ndani, kwa mfano es.
from_number, to_numberNamba za kurekodi kwenye simu wakati chumba kinatumia laini ya simu.
live_transcriptsTiririsha vipande vya manukuu ya mpigaji simu katikati ya usemi (hutozwa ziada).
base_urlBadilisha endpoint, chaguo-msingi ni wss://api.thunderphone.com/v1/realtime.

Matukio

ThunderPhone huongeza matukio ya jukwaa juu ya itifaki ya muda halisi. Kipindi huyatoa:

@session.llm.session.on("thunderphone_call_ended")  # or on the RealtimeSession you hold
def on_call_ended(event):
    print("call ended:", event["reason"])

RealtimeSession hutoa call_id mara kipindi kinapoanza. Itumie pamoja na GET /v1/calls/{call_id} kupata rekodi, manukuu na tathmini baada ya simu. Kila tukio lingine la call.* (uhamisho, kitufe cha namba, usemi uliopuuzwa) huwasili kama thunderphone_call_event.

Vikomo

  • Utambuzi wa zamu hufanywa upande wa seva na huwa umewashwa daima; utambuzi wa zamu upande wa fremu (turn_detection kwenye AgentSession) hupuuzwa.
  • Maagizo na zana haziwezi kubadilishwa baada ya simu kuanza.
  • Sauti ni PCM ya mono ya biti 16 kwa 24 kHz katika pande zote mbili.
  • Fremu za video hupuuzwa.