Pipecat-இலிருந்து ThunderPhone-ஐப் பயன்படுத்தவும்
உங்கள் சொந்த டிரான்ஸ்போர்ட் மற்றும் டெலிபோனியுடன், Pipecat பைப்லைனுக்குள் பேச்சிலிருந்து பேச்சுக்கான சேவையாக ThunderPhone குரல் ஏஜென்டை இயக்கவும்.
Pipecat என்பது இணைக்கக்கூடிய சேவைகளைக் கொண்டு குரல் ஏஜென்ட்களை உருவாக்குவதற்கான திறந்த மூலக் கட்டமைப்பாகும். ThunderPhone ஒரு பேச்சிலிருந்து பேச்சுக்கான LLM சேவையாக இணைகிறது: Pipecat அழைப்பாளரின் ஆடியோவை அனுப்புகிறது, ThunderPhone ஏஜென்ட்டின் குரல், உரைப் பதிவுகள் மற்றும் செயல்பாட்டு அழைப்புகளைத் திருப்பியனுப்புகிறது, மேலும் Pipecat-இன் போக்குவரத்து (Daily, LiveKit, Twilio, WebRTC, உள்ளூர் மைக்ரோஃபோன்) ஆடியோவை எடுத்துச் செல்கிறது. பேச்சு அறிதல், மொழி மாதிரி, குரல், உரையாடல் முறைமாற்றம், 47 மொழிகள் மற்றும் கருவிகள் அனைத்தும் ThunderPhone-இல் இயங்குகின்றன.
இந்த முறையில் செய்யப்படும் அழைப்புகள் அழைப்பு வரலாற்றில் தோன்றும்; மற்ற நிகழ்நேர அழைப்புகளைப் போலவே உங்கள் தயாரிப்பின் நிமிடக் கட்டண விகிதத்தில் கட்டணமிடப்படும். இதில் சந்தாவோ ThunderPhone தொலைபேசி எண்ணோ இல்லை.
நிறுவுக
pip install pipecat-thunderphone
export THUNDERPHONE_API_KEY=sk_live_... # a secret API keyThunderPhone-இன் நிகழ்நேர WebSocket அதே நெறிமுறையைப் பயன்படுத்துவதால், இந்தத் தொகுப்பு Pipecat-இன் OpenAI நிகழ்நேர சேவையைச் சுற்றிப் பொதிகிறது. இதற்கு pipecat-ai 1.8 அல்லது அதற்குப் புதிய பதிப்பு தேவை.
சேமித்த ஏஜென்ட்டை இயக்குக
ஏஜென்ட் செய்யும் அனைத்தும் (prompt, குரல், இயந்திரம், மொழிகள், கருவிகள், வரவேற்பு, அமைதி சரிபார்ப்புகள்) ThunderPhone-இல் உள்ளமைக்கப்படுகின்றன. செயலாக்கத் தொடர் ஆடியோவை மட்டுமே நகர்த்துகிறது.
from pipecat.pipeline.pipeline import Pipeline
from pipecat.pipeline.worker import PipelineParams, PipelineWorker
from pipecat.processors.aggregators.llm_context import LLMContext
from pipecat.processors.aggregators.llm_response_universal import LLMContextAggregatorPair
from pipecat_thunderphone import ThunderPhoneRealtimeLLMService
llm = ThunderPhoneRealtimeLLMService(agent_id=12)
context = LLMContext()
aggregators = LLMContextAggregatorPair(context)
pipeline = Pipeline([
transport.input(),
aggregators.user(),
llm,
aggregators.assistant(),
transport.output(),
])
worker = PipelineWorker(pipeline, params=PipelineParams(allow_interruptions=True))சேமித்த ஏஜென்ட் தனது திட்டமிடலின்படி அழைப்பைத் தொடங்கும்; எனவே சேவை Pipecat-இடம்
தொடக்கப் பதிலைக் கோராது. இருப்பினும் ஒன்று வேண்டுமெனில் greet_on_connect=True ஐ அனுப்பவும்.
அமர்வை நேரடியாக உள்ளமைக்குக
agent_id இல்லாமல், OpenAI-க்குச் செயல்படுவது போலவே வழிமுறைகளும் கருவிகளும் Pipecat சூழலிலிருந்து வருகின்றன. product இயந்திரத்தைத் தேர்ந்தெடுக்கிறது; voice ThunderPhone குரலைத் தேர்ந்தெடுக்கிறது.
from pipecat.adapters.schemas.function_schema import FunctionSchema
from pipecat.adapters.schemas.tools_schema import ToolsSchema
from pipecat.services.llm_service import FunctionCallParams
llm = ThunderPhoneRealtimeLLMService(product="bolt", voice="olivia", language="es")
async def check_availability(params: FunctionCallParams):
slots = await calendar.free_slots(params.arguments["date"])
await params.result_callback({"slots": slots})
llm.register_function("check_availability", check_availability)
context = LLMContext(
messages=[{"role": "system", "content": "You are Acme Dental's receptionist."}],
tools=ToolsSchema(standard_tools=[
FunctionSchema(
name="check_availability",
description="Free appointment slots on a date",
properties={"date": {"type": "string"}},
required=["date"],
)
]),
)நேரடி அமர்வுகள் கிளையன்ட் வழிநடத்துபவை: சூழல் வந்தவுடன் Pipecat பதிலைக் கோருவதால் ஏஜென்ட் முதலில் பேசும்; நீங்கள் ஒரு செய்தியைச் சேர்க்காவிட்டால் அல்லது மற்றொரு பதிலைக் கோராவிட்டால் அமைதியின்போது அமைதியாக இருக்கும்.
விருப்பங்கள்
| அளவுரு | பொருள் |
|---|---|
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 | பேச்சு முடிவதற்கு முன்பே அழைப்பாளரின் உரைநகல் துண்டுகளை ஸ்ட்ரீம் செய்யவும் (கூடுதல் கட்டணம் வசூலிக்கப்படும்). |
greet_on_connect | அமர்வு தயாரானவுடன் முதல் பதிலை கோரவும். |
end_task_on_call_ended | ThunderPhone அழைப்பை முடிக்கும்போது EndWorkerFrame-ஐ அனுப்பவும் (இயல்பாக இயக்கத்தில் இருக்கும்). |
நிகழ்வுகள்
ThunderPhone நிகழ்நேர நெறிமுறைக்கு மேல் பிளாட்ஃபார்ம் நிகழ்வுகளைச் சேர்க்கிறது. சேவை அவற்றை ஹேண்ட்லர்களுக்கு வழங்குகிறது:
@llm.event_handler("on_call_ended")
async def on_call_ended(service, event):
print("call ended:", event["reason"], "call id:", service.call_id)அமர்வு நேரலையானதும் service.call_id அமைக்கப்படும். அழைப்புக்குப் பிறகு பதிவு,
உரைநகல் மற்றும் மதிப்பீட்டைப் பெற இதை
GET /v1/calls/{call_id} உடன் பயன்படுத்தவும்.
வரம்புகள்
- டர்ன் கண்டறிதல் சர்வர் பக்கத்தில் நடைபெறும், எப்போதும் இயக்கத்தில் இருக்கும்; Pipecat இயக்கும் டர்ன்கள்
(
turn_detection=False) ஆதரிக்கப்படாது. - சேவையில் பதிவு செய்யப்பட்ட ஃபங்க்ஷன்கள் இன்லைன் அமர்வுகளுக்கு மட்டும் இயங்கும். சேமித்த ஏஜென்ட் ThunderPhone-ல் தனது சொந்த கருவிகளை இயக்கும்.
- ஆடியோ இரு திசைகளிலும் 24 kHz-ல் 16-பிட் மோனோ PCM ஆகும்.
- வீடியோ ஃப்ரேம்கள் புறக்கணிக்கப்படும்.