LiveKit Agents-இலிருந்து ThunderPhone-ஐப் பயன்படுத்துங்கள்
LiveKit அறைகள், SIP மற்றும் தொலைபேசி வசதிகளுடன், LiveKit Agents அமர்வின் நிகழ்நேர (பேச்சிலிருந்து பேச்சுக்கு) மாதிரியாக ThunderPhone குரல் ஏஜென்ட்டை இயக்குங்கள்.
LiveKit Agents என்பது LiveKit அறைகளின் மேல் இயங்கும் நிகழ்நேர குரல் ஏஜென்ட்களுக்கான திறந்த-மூல ஃப்ரேம்வொர்க் ஆகும். ThunderPhone ஒரு நிகழ்நேர மாடலாக இணைகிறது: ஃப்ரேம்வொர்க் பங்கேற்பாளரின் ஆடியோவை அனுப்புகிறது, ThunderPhone ஏஜென்டின் குரல், உரைப் பதிவுகள் மற்றும் செயல்பாட்டு அழைப்புகளைத் திருப்பி அனுப்புகிறது; LiveKit அறை, SIP டிரங்குகள் மற்றும் தொலைபேசி அமைப்பு ஆடியோவை எடுத்துச் செல்கின்றன. பேச்சு அங்கீகாரம், மொழி மாடல், குரல், முறை மாறுதல், 47 மொழிகள் மற்றும் கருவிகள் அனைத்தும் ThunderPhone-இல் இயங்குகின்றன.
இந்த முறையில் செய்யப்படும் அழைப்புகள் அழைப்பு வரலாற்றில் தோன்றும்; மற்ற எந்த நிகழ்நேர அழைப்பைப் போலவும் உங்கள் தயாரிப்பின் நிமிடக் கட்டண விகிதத்தில் கட்டணம் விதிக்கப்படும். சந்தாவோ ThunderPhone தொலைபேசி எண்ணோ இதில் இல்லை.
நிறுவுக
pip install livekit-plugins-thunderphone
export THUNDERPHONE_API_KEY=sk_live_... # a secret API keyThunderPhone-இன் Realtime WebSocket அதே நெறிமுறையில் செயல்படுவதால்,
இந்த செருகுநிரல் LiveKit-இன் OpenAI Realtime மாடலைச் சுற்றுகிறது. இதற்கு livekit-agents 1.8
அல்லது அதற்குப் புதிய பதிப்பு தேவை.
சேமிக்கப்பட்ட ஏஜென்டை இயக்குக
ஏஜென்ட் செய்யும் அனைத்தும் (prompt, குரல், என்ஜின், மொழிகள், கருவிகள், வாழ்த்து, அமைதி சரிபார்ப்புகள்) ThunderPhone-இல் உள்ளமைக்கப்படுகின்றன. அமர்வு ஆடியோவை மட்டும் நகர்த்துகிறது.
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))சேமிக்கப்பட்ட ஏஜென்ட் ThunderPhone-இல் வாழ்த்தி, தனது கருவிகளை இயக்குகிறது; LiveKit
Agent-இன் அறிவுறுத்தல்களும் கருவிகளும் அனுப்பப்படாது. ThunderPhone ஏஜென்ட் அழைப்பைத் துண்டிக்கும்போது
அழைப்பு முடிவடைகிறது; அதனுடன் அமர்வும் மூடப்படுகிறது.
அமர்வை நேரடியாக உள்ளமைக்குக
agent_id இல்லாமல், அறிவுறுத்தல்களும் கருவிகளும் OpenAI-க்கான முறையைப் போலவே LiveKit Agent-இலிருந்து
வருகின்றன. product என்ஜினைத் தேர்ந்தெடுக்கிறது; voice 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 அறிவுறுத்தல்களையும் கருவிகளையும் உறையவைக்கிறது; எனவே
update_instructions, update_tools மற்றும் அவற்றை மாற்றும் ஏஜென்ட் மாற்றங்கள் அழைப்பின் நடுவில்
ஆதரிக்கப்படாது. நேரடி அமர்வுகள் கிளையன்ட் வழிநடத்தப்பட்டவை: நீங்கள் generate_reply()-ஐ அழைக்கும்போது
அல்லது பங்கேற்பாளர் ஒரு முறையை முடிக்கும்போது ஏஜென்ட் பேசுகிறது.
விருப்பங்கள்
| அளவுரு | பொருள் |
|---|---|
api_key | ரகசிய விசை (sk_live_...). இயல்பாக THUNDERPHONE_API_KEY. |
agent_id | சேமிக்கப்பட்ட ஏஜென்டை இயக்கவும். product மற்றும் voice உடன் பரஸ்பரம் முரணானது. |
product | இன்லைன் அமர்வுகளுக்கான இயந்திரம்: spark, bolt அல்லது storm. |
voice | இன்லைன் அமர்வுகளுக்கான ThunderPhone குரல் பெயர். |
language | இன்லைன் அமர்வுகளுக்கான முதன்மை மொழிக் குறிப்பு, உதாரணமாக es. |
from_number, to_number | அறை ஒரு தொலைபேசி இணைப்பை முன்னிலைப்படுத்தும்போது அழைப்பில் பதிவு செய்ய வேண்டிய எண்கள். |
live_transcripts | பேசுபவர் உரையின் துண்டுகளை உச்சரிப்பு நடுவில் ஸ்ட்ரீம் செய்யவும் (கூடுதல் கட்டணம் வசூலிக்கப்படும்). |
base_url | எண்ட்பாயிண்ட் மேலெழுதுதல், இயல்புநிலை wss://api.thunderphone.com/v1/realtime. |
நிகழ்வுகள்
நிகழ்நேர நெறிமுறைக்கு மேல் ThunderPhone தள நிகழ்வுகளைச் சேர்க்கிறது. அமர்வு அவற்றை வெளியிடுகிறது:
@session.llm.session.on("thunderphone_call_ended") # or on the RealtimeSession you hold
def on_call_ended(event):
print("call ended:", event["reason"])அமர்வு செயல்பாட்டுக்கு வந்ததும் RealtimeSession, call_id-ஐ வழங்கும். அழைப்புக்குப் பிறகு பதிவை,
உரையாடல் பதிவை மற்றும் தரத்தைப் பெற, அதை
GET /v1/calls/{call_id} உடன் பயன்படுத்தவும். மற்ற எல்லா call.* நிகழ்வுகளும் (மாற்றுதல்,
விசைப்பலகை, புறக்கணிக்கப்பட்ட பேச்சு) thunderphone_call_event ஆக வரும்.
வரம்புகள்
- முறை கண்டறிதல் சர்வர் பக்கத்தில் நடைபெறும், எப்போதும் இயக்கத்தில் இருக்கும்; ஃப்ரேம்வொர்க் பக்க முறை கண்டறிதல்
(
AgentSession-இல் உள்ளturn_detection) புறக்கணிக்கப்படும். - அழைப்பு தொடங்கியதும் வழிமுறைகளையும் கருவிகளையும் மாற்ற முடியாது.
- இரு திசைகளிலும் ஒலி 24 kHz-ல் 16-பிட் மோனோ PCM ஆகும்.
- வீடியோ ஃப்ரேம்கள் புறக்கணிக்கப்படும்.