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