ThunderPhone 2.0 sasa inapatikana.Anza kuitumia mwenyewe, kuanzia senti 2 kwa dakika.Soma tangazo

Connect tools & data

Tumia ThunderPhone kutoka Pipecat

Endesha ejenti ya sauti ya ThunderPhone kama huduma ya sauti-kwa-sauti ndani ya pipeline ya Pipecat, ukitumia transport na simu zako mwenyewe.

Pipecat ni fremu ya chanzo huria ya kutengeneza ejenti za sauti kwa kutumia huduma zinazoweza kuunganishwa. ThunderPhone huunganishwa kama huduma ya LLM ya usemi-kwa-usemi: Pipecat hutuma sauti ya mpigaji, ThunderPhone hurejesha sauti ya ejenti, nakala za mazungumzo na miito ya vitendaji, na usafirishaji wa Pipecat (Daily, LiveKit, Twilio, WebRTC, kipaza sauti cha ndani) hubeba sauti. Utambuzi wa usemi, modeli ya lugha, sauti, ubadilishanaji wa zamu, lugha 47 na zana zote huendeshwa kwenye ThunderPhone.

Simu zinazopigwa kwa njia hii huonekana katika historia ya simu na hutozwa kwa kiwango cha kila dakika cha bidhaa yako kama simu nyingine yoyote ya wakati halisi. Hakuna usajili wala nambari ya simu ya ThunderPhone inayohusika.

Sakinisha

pip install pipecat-thunderphone
export THUNDERPHONE_API_KEY=sk_live_...   # a secret API key

Kifurushi hiki hufunika huduma ya OpenAI Realtime ya Pipecat, kwa sababu Realtime WebSocket ya ThunderPhone hutumia itifaki sawa. Kinahitaji pipecat-ai 1.8 au toleo jipya zaidi.

Endesha ejenti iliyohifadhiwa

Kila kitu ambacho ejenti hufanya (prompt, sauti, injini, lugha, zana, salamu, ukaguzi wa ukimya) husanidiwa kwenye ThunderPhone. Pipeline husogeza sauti pekee.

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))

Ejenti iliyohifadhiwa huanza simu kwa ratiba yake yenyewe, kwa hivyo huduma haiombi jibu la kuanzisha kutoka Pipecat. Pitisha greet_on_connect=True ikiwa unataka hilo hata hivyo.

Sanidi kikao ndani ya msimbo

Bila agent_id, maelekezo na zana hutoka kwenye muktadha wa Pipecat, kwa njia sawa na zinavyofanya kwa OpenAI. product huchagua injini na voice huchagua sauti ya 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"],
        )
    ]),
)

Vikao vya ndani huongozwa na mteja: ejenti huzungumza kwanza kwa sababu Pipecat huomba jibu muktadha unapowasili, na hubaki kimya wakati wa ukimya isipokuwa uongeze ujumbe au uombe jibu jingine.

Chaguo

HojaMaana
api_keyUfunguo wa siri (sk_live_...). Chaguo-msingi ni THUNDERPHONE_API_KEY.
agent_idEndesha ejenti iliyohifadhiwa. Haiwezi kutumiwa pamoja na product na voice.
productInjini ya vipindi vya ndani ya mstari: spark, bolt au storm.
voiceJina la sauti la ThunderPhone kwa vipindi vya ndani ya mstari.
languageKidokezo cha lugha kuu kwa vipindi vya ndani ya mstari, kwa mfano es.
from_number, to_numberNambari za kurekodi kwenye simu wakati pipeline inashughulikia laini ya simu.
live_transcriptsTiririsha vipande vya manukuu ya mpigaji simu katikati ya matamshi (hutozwa ziada).
greet_on_connectOmba jibu la kwanza mara tu kipindi kinapokuwa tayari.
end_task_on_call_endedTuma EndWorkerFrame wakati ThunderPhone inamaliza simu (imewashwa kwa chaguo-msingi).

Matukio

ThunderPhone huongeza matukio ya jukwaa juu ya itifaki ya wakati halisi. Huduma huyafikisha kwa vishughulikiaji:

@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 huwekwa mara tu kipindi kinapokuwa hai. Itumie pamoja na GET /v1/calls/{call_id} kupata rekodi, manukuu na tathmini baada ya simu.

Vikomo

  • Utambuzi wa zamu hufanywa upande wa seva na huwa umewashwa daima; zamu zinazoendeshwa na Pipecat (turn_detection=False) hazitumiki.
  • Functions zilizosajiliwa kwenye huduma huendeshwa kwa vipindi vya ndani ya mstari pekee. Ejenti iliyohifadhiwa hutekeleza zana zake yenyewe kwenye ThunderPhone.
  • Sauti ni PCM ya mono ya biti 16 kwa 24 kHz katika pande zote mbili.
  • Fremu za video hupuuzwa.