Pipecat-integratie
Gebruik een Pipecat-pipeline als het LLM-brein achter Speech Engine.
In deze handleiding lees je hoe je Pipecat gebruikt als LLM-pipeline in een Speech Engine-brainserver. Speech Engine verwerkt de spraakcyclus — spraak-naar-tekst, beurtwisseling en tekst-naar-spraak — terwijl Pipecat tekst genereert via een samenstelbare pipeline van processors (LLM-aanroepen, RAG, functieaanroepen, guardrails, contentfilters).
Deze handleiding is alleen voor Python, omdat Pipecat aan de serverkant een Python-framework is. Er is geen
Node-equivalent voor de pipelineprocessors; er bestaat wel een pakket pipecat-client-js, maar dat is een
browserclient die met een Pipecat-server communiceert, niet een manier om pipelines in TypeScript te bouwen.
Architectuur
De Speech Engine SDK vormt de buitenste laag — de callback on_transcript wordt uitgevoerd telkens wanneer de gebruiker is uitgesproken. In de callback bouw je een Pipecat-pipeline, voer je de conversatiegeschiedenis in als een LLMContextFrame en stream je de tekstoutput van de pipeline terug naar Speech Engine. ElevenLabs zet de tekst om in spraak en speelt die af voor de gebruiker.
De Pipecat-pipeline wordt alleen uitgevoerd voor de duur van één beurt. Wanneer een nieuw transcript binnenkomt, wordt de vorige pipeline geannuleerd voordat de volgende wordt uitgevoerd — zo wordt de onderbrekingsafhandeling van Speech Engine doorgegeven aan de pipeline.
Wanneer je dit patroon gebruikt
Pipecat is ideaal wanneer je brein meer nodig heeft dan één LLM-aanroep:
- Samenstelbare processors voor retrieval-augmented generation, functieaanroepen of guardrails
- Framegebaseerde middleware die verkeer bij elke stap kan inspecteren, transformeren of blokkeren
- Herbruikbare pipelinefragmenten die door meerdere agents worden gedeeld
Als je brein bestaat uit “transcript erin, LLM-aanroep eruit”, is de Snelstartgids voor Speech Engine eenvoudiger. Kies Pipecat wanneer de pipeline zelf het interessante onderdeel is.
Vereisten
- Een Speech Engine. Volg de Snelstartgids voor Speech Engine om er een te maken.
- Python 3.10+ (vereist door
pipecat-ai). - Publieke HTTPS-tunnel voor de brainserver (bijv. ngrok).
Afhankelijkheden installeren
pipecat-ai[openai] installeert de OpenAI LLM-service. Vervang de extra door die van een andere provider (anthropic, google, enzovoort) als je dat liever wilt.
Het Pipecat-brein bouwen
Het brein bestaat uit twee onderdelen: een TextSink-processor die gestreamde tekst naar een asyncio.Queue doorstuurt, en een coroutine run_pipecat_brain die een pipeline voor één beurt bouwt en chunks als async iterator oplevert.
De pipeline bevat alleen de LLM-service en de sink — geen STT- of TTS-processors, omdat Speech Engine die verwerkt. LLMContextFrame is de input; LLMTextFrame-chunks zijn de output.
run_pipecat_brain is een async generator. Elke opgeleverde chunk gaat rechtstreeks naar Speech Engine, zodat de agent begint te spreken voordat het volledige antwoord klaar is.
Koppel het aan de Speech Engine-server
De functie send_response van de Speech Engine SDK accepteert een string of een willekeurige async iterable van strings, dus je kunt run_pipecat_brain(transcript) rechtstreeks doorgeven. Zet de ConversationMessage-objecten die Speech Engine verstrekt om naar gewone dicts voordat je ze aan het brein doorgeeft.
De Speech Engine SDK annuleert de taak van de vorige beurt wanneer een nieuw transcript binnenkomt. Daarmee worden de async generator en de onderliggende PipelineTask geannuleerd via het blok try/finally in run_pipecat_brain.
De server uitvoeren
Maak vanuit een browser verbinding met Speech Engine met hetzelfde tokenendpoint en dezelfde clientcode als in de snelstartgids. De Pipecat-pipeline draait aan de serverkant; de browser ziet een gewone Speech Engine-conversatie.
De pipeline uitbreiden
Een Pipecat-pipeline met alleen tekst kan elke frameprocessor bevatten die werkt met LLMTextFrame of LLMContextFrame. Enkele veelvoorkomende toevoegingen:
- Guardrails: een
FrameProcessorvóór de LLM dieLLMContextFrameinspecteert en onveilige context vervangt of blokkeert. - Functieaanroepen: registreer tools bij de
OpenAILLMServiceen Pipecat verwerkt tool-call-frames standaard. De uiteindelijke assistenttekst komt nog steeds binnen alsLLMTextFrame. - Redeneren in meerdere fasen: koppel twee
OpenAILLMService-instanties, met daartussen een aangepaste processor die de context herschrijft voor de tweede doorgang. - Outputfiltering: een
FrameProcessorna de LLM die elkeLLMTextFrameinspecteert en niet-toegestane content verwijdert of herschrijft voordat dieTextSinkbereikt.
De vorm van de pipeline blijft hetzelfde — Pipeline([processor_a, llm, processor_b, sink]) — en run_pipecat_brain verandert niet.
Overwegingen voor productie
- Veilig annuleren:
PipelineTask.cancel()kan vastlopen als deze wordt aangeroepen voordat de pipeline volledig is gestart (pipecat-ai/pipecat#4276). Het bovenstaande patroon mettry/finallyis veilig, omdatcancel()pas wordt uitgevoerd nadat er minstens één frame in de wachtrij is geplaatst. - Promptinjectie: spraak-naar-tekst-output is gebruikersinvoer. Valideer of normaliseer het transcript voordat je het aan de LLM doorgeeft, vooral als een downstreamprocessor de tekst gebruikt in toolaanroepen of databasequeries.
- Authenticatie voor de brainserver: stel een gedeeld geheim in voor Speech Engine en controleer dit in de brainserver om ongeautoriseerde verbindingen met je
/ws-endpoint te voorkomen: - LLM-provider:
pipecat-ai[openai]bevatOpenAILLMService. Installeer voor Anthropicpipecat-ai[anthropic]en gebruikAnthropicLLMService; de rest van de pipeline blijft ongewijzigd.