ThunderPhone 2.0 on nüüd saadaval.Iseteenindus alates 2 sendist minutis.Loe uudist

Connect tools & data

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 key

Pakett 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

ArgumentTähendus
api_keySalajane võti (sk_live_...). Vaikimisi kasutatakse THUNDERPHONE_API_KEY.
agent_idKäivita salvestatud agent. Ei saa kasutada koos väärtustega product ja voice.
productMootor sisesessioonide jaoks: spark, bolt või storm.
voiceThunderPhone'i hääle nimi sisesessioonide jaoks.
languageEsmane keele vihje sisesessioonide jaoks, nt es.
from_number, to_numberNumbrid, mis salvestatakse kõnes, kui konveier on telefoniliini ees.
live_transcriptsEdasta helistaja transkriptsiooni fragmendid kõne ajal (lisatasu eest).
greet_on_connectTaotle esimest vastust kohe, kui sessioon on valmis.
end_task_on_call_endedSaada 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.