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 keyProgramu-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 firstThunderPhone 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
| Hoja | Maana |
|---|---|
api_key | Ufunguo wa siri (sk_live_...). Chaguo-msingi ni THUNDERPHONE_API_KEY. |
agent_id | Endesha ejenti iliyohifadhiwa. Haiwezi kutumika pamoja na product na voice. |
product | Injini ya vipindi vya ndani: spark, bolt au storm. |
voice | Jina la sauti ya ThunderPhone kwa vipindi vya ndani. |
language | Dokezo la lugha kuu kwa vipindi vya ndani, kwa mfano es. |
from_number, to_number | Namba za kurekodi kwenye simu wakati chumba kinatumia laini ya simu. |
live_transcripts | Tiririsha vipande vya manukuu ya mpigaji simu katikati ya usemi (hutozwa ziada). |
base_url | Badilisha 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_detectionkwenyeAgentSession) 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.