Kasuta ThunderPhone
Käivita ThunderPhone
Pipecat on avatud lähtekoodiga raamistik, millega saab koostalitlusvõimelistest teenustest häälagente luua. ThunderPhone ühendub kõne-kõne LLM-teenusena: Pipecat saadab helistaja heli, ThunderPhone tagastab agendi hääle, transkriptsioonid ja funktsioonikutsed ning Pipecati transpordikiht (Daily, LiveKit, Twilio, WebRTC, kohalik mikrofon) edastab heli. Kõnetuvastus, keelemudel, hääl, vooruvahetus, 47 keelt ja tööriistad töötavad kõik ThunderPhone'is.
Sel viisil tehtud kõned kuvatakse kõneajaloos ja nende eest esitatakse arve sinu toote minutihinna alusel nagu iga muu reaalajakõne eest. Tellimust ega ThunderPhone'i telefoninumbrit ei ole vaja.
Paigalda
pip install pipecat-thunderphone
export THUNDERPHONE_API_KEY=sk_live_... # a secret API keyPakett kasutab Pipecati OpenAI Realtime'i teenust, sest ThunderPhone'i
Realtime WebSocket kasutab sama protokolli. See
vajab pipecat-ai versiooni 1.8 või uuemat.
Käivita salvestatud agent
Kõik, mida agent teeb (viip, hääl, mootor, keeled, tööriistad, tervitus, vaikuse kontrollid), seadistatakse ThunderPhone'is. Andmetöötlusahel liigutab ainult heli.
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))Salvestatud agent alustab kõnet oma ajastuse järgi, seega teenus ei küsi
Pipecatilt alustavat vastust. Kui soovid seda siiski teha, edasta
greet_on_connect=True.
Seadista seanss otse koodis
Ilma agent_id-ta tulevad juhised ja tööriistad Pipecati kontekstist samamoodi
nagu OpenAI puhul. product valib mootori ja voice valib ThunderPhone'i
hääle.
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"],
)
]),
)Otse koodis seadistatud seansse juhib klient: agent räägib esimesena, sest Pipecat küsib vastust konteksti saabumisel, ning püsib vaikuse ajal vait, kui sa ei lisa sõnumit ega küsi uut vastust.
Valikud
| Argument | Tähendus |
|---|---|
api_key | Salajane võti (sk_live_...). Vaikimisi kasutatakse THUNDERPHONE_API_KEY. |
agent_id | Käivita salvestatud agent. Ei saa kasutada koos väärtustega product ja voice. |
product | Mootor sisesessioonide jaoks: spark, bolt või storm. |
voice | ThunderPhone'i hääle nimi sisesessioonide jaoks. |
language | Esmane keele vihje sisesessioonide jaoks, nt es. |
from_number, to_number | Numbrid, mis salvestatakse kõnes, kui konveier on telefoniliini ees. |
live_transcripts | Edasta helistaja transkriptsiooni fragmendid kõne ajal (lisatasu eest). |
greet_on_connect | Taotle esimest vastust kohe, kui sessioon on valmis. |
end_task_on_call_ended | Saada EndWorkerFrame, kui ThunderPhone lõpetab kõne (vaikimisi sisse lülitatud). |
Sündmused
ThunderPhone lisab reaalajaprotokollile platvormi sündmused. Teenus edastab need töötlejatele:
@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 määratakse, kui sessioon on aktiivne. Kasuta seda koos
GET /v1/calls/{call_id}, et tuua pärast kõnet
salvestis, transkriptsioon ja hinne.
Piirangud
- Voorude tuvastamine toimub serveris ja on alati sisse lülitatud; Pipecati juhitud voorud
(
turn_detection=False) ei ole toetatud. - Teenuses registreeritud funktsioonid töötavad ainult sisesessioonide puhul. Salvestatud agent käivitab ThunderPhone'is oma tööriistad.
- Heli on mõlemas suunas 16-bitine mono PCM sagedusel 24 kHz.
- Videokaadreid eiratakse.