ThunderPhone 2.0 அறிமுகமாகிவிட்டது.நீங்களே தொடங்கலாம் — நிமிடத்திற்கு 2¢ முதல்.அறிவிப்பைப் படிக்கவும்

Connect tools & data

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 key

ThunderPhone-இன் 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 ஆகும்.
  • வீடியோ ஃப்ரேம்கள் புறக்கணிக்கப்படும்.