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 असतो.
  • व्हिडिओ फ्रेम्स दुर्लक्षित केल्या जातात.