Pipecat-integrering
Använd en Pipecat-pipeline som LLM-hjärna bakom Speech Engine.
Den här guiden visar hur du använder Pipecat som LLM-pipeline i en Speech Engine-hjärnserver. Speech Engine hanterar röstflödet — tal-till-text, turordning och text-till-tal — medan Pipecat hanterar textgenerering via en sammansättningsbar pipeline med processorer (LLM-anrop, RAG, funktionsanrop, skyddsräcken och innehållsfilter).
Den här guiden gäller endast Python eftersom Pipecat är ett Python-ramverk på serversidan. Det finns ingen
Node-motsvarighet för pipeline-processorerna. Paketet pipecat-client-js finns, men är en
webbläsarklient som kommunicerar med en Pipecat-server, inte ett sätt att bygga pipelines i TypeScript.
Arkitektur
Speech Engine SDK fungerar som det yttre lagret — dess on_transcript-callback aktiveras varje gång användaren har talat klart. I callbacken bygger du en Pipecat-pipeline, matar in konversationshistoriken som en LLMContextFrame och streamar pipelinens textutdata tillbaka till Speech Engine. ElevenLabs omvandlar texten till tal och spelar upp den för användaren.
Pipecat-pipelinen körs endast under en tur. När ett nytt transkript kommer avbryts den föregående pipelinen innan nästa körs — så sprids Speech Engines hantering av avbrott till pipelinen.
När du bör använda det här mönstret
Pipecat är utmärkt när din hjärna behöver mer än ett enda LLM-anrop:
- Sammansättningsbara processorer för retrieval-augmented generation, funktionsanrop eller skyddsräcken
- Rambaserad mellanprogramvara som kan granska, omvandla eller blockera trafik i varje steg
- Återanvändbara pipeline-fragment som delas mellan flera agenter
Om din hjärna är ”transkript in, LLM-anrop ut” är Speech Engine-snabbstarten enklare. Välj Pipecat när själva pipelinen är den intressanta delen.
Förutsättningar
- En Speech Engine. Följ Speech Engine-snabbstarten för att skapa en.
- Python 3.10+ (krävs av
pipecat-ai). - Offentlig HTTPS-tunnel för hjärnservern (t.ex. ngrok).
Installera beroenden
pipecat-ai[openai] installerar OpenAI LLM-tjänsten. Byt ut tillägget mot en annan leverantör (anthropic, google osv.) om du föredrar det.
Bygg Pipecat-hjärnan
Hjärnan har två delar: en TextSink-processor som tömmer streamad text till en asyncio.Queue, och korutinen run_pipecat_brain som bygger en pipeline för en tur och ger delar som en asynkron iterator.
Pipelinen innehåller endast LLM-tjänsten och sinken — inga STT- eller TTS-processorer, eftersom Speech Engine hanterar dem. LLMContextFrame är indata och LLMTextFrame-delar är utdata.
run_pipecat_brain är en asynkron generator. Varje del som skickas vidare går direkt till Speech Engine, så agenten börjar tala innan hela svaret är klart.
Koppla den till Speech Engine-servern
Speech Engine SDK:s send_response accepterar en sträng eller valfri asynkron itererbar samling av strängar, så du kan skicka run_pipecat_brain(transcript) direkt. Konvertera ConversationMessage-objekten som Speech Engine tillhandahåller till vanliga dict-objekt innan du skickar dem till hjärnan.
Speech Engine SDK avbryter den föregående turens uppgift när ett nytt transkript kommer, vilket avbryter den asynkrona generatorn och den underliggande PipelineTask via try/finally-blocket i run_pipecat_brain.
Kör servern
Anslut till Speech Engine från en webbläsare med samma tokenändpunkt och klientkod som visas i snabbstarten. Pipecat-pipelinen körs på serversidan; webbläsaren ser en vanlig Speech Engine-konversation.
Utöka pipelinen
En Pipecat-pipeline med enbart text kan innehålla valfri ramprocessor som arbetar med LLMTextFrame eller LLMContextFrame. Några vanliga tillägg:
- Skyddsräcken: en
FrameProcessorföre LLM:en som granskarLLMContextFrameoch ersätter eller blockerar osäkert sammanhang. - Funktionsanrop: registrera verktyg på
OpenAILLMService, så hanterar Pipecat verktygsanropsramar direkt. Den slutliga assistenttexten kommer fortfarande somLLMTextFrame. - Resonemang i flera steg: kedja två
OpenAILLMService-instanser, med en anpassad processor emellan som skriver om sammanhanget för den andra körningen. - Utdatafiltrering: en
FrameProcessorefter LLM:en som granskar varjeLLMTextFrameoch tar bort eller skriver om otillåtet innehåll innan det nårTextSink.
Pipelineformen förblir densamma — Pipeline([processor_a, llm, processor_b, sink]) — och run_pipecat_brain ändras inte.
Att tänka på för produktion
- Säker avbrytning:
PipelineTask.cancel()kan låsa sig om den anropas innan pipelinen har startat helt (pipecat-ai/pipecat#4276). Mönstrettry/finallyovan är säkert eftersomcancel()körs först efter att minst en ram har köats. - Promptinjektion: tal-till-text-utdata är användarinmatning. Validera eller normalisera transkriptet innan du matar det till LLM:en, särskilt om någon efterföljande processor använder texten i verktygsanrop eller databasfrågor.
- Autentisering för hjärnservern: ange en delad hemlighet i Speech Engine och kontrollera den i hjärnservern för att förhindra obehöriga anslutningar till din
/ws-ändpunkt: - LLM-leverantör:
pipecat-ai[openai]innehållerOpenAILLMService. För Anthropic installerar dupipecat-ai[anthropic]och använderAnthropicLLMService; resten av pipelinen är oförändrad.