Pipecat ist ein Open -Source -Python -Framework zum Aufbau von Sprach- und multimodale Konversationsmittel. Es kümmert sich um die komplexe Orchestrierung von KI -Diensten, Netzwerktransport, Audioverarbeitung und multimodale Interaktionen, sodass Sie sich darauf konzentrieren können, ansprechende Erlebnisse zu schaffen.
Möchten Sie strukturierte Gespräche bauen? Schauen Sie sich die Pipecat -Flüsse zur Verwaltung komplexer Konversationszustände und Übergänge an.
Sie können mit Pipecat auf Ihrem lokalen Computer beginnen und dann Ihre Agentenprozesse in die Cloud verschieben, wenn Sie bereit sind. Sie können auch eine hinzufügen? Telefonnummer, ️ -Bildausgabe, Videoeingabe, Verwenden Sie verschiedene LLMs und mehr.
# Install the module
pip install pipecat-ai
# Set up your environment
cp dot-env.template .envUm die Dinge leicht zu halten, ist nur das Kerngerüst standardmäßig enthalten. Wenn Sie Unterstützung für KI-Dienste von Drittanbietern benötigen, können Sie die erforderlichen Abhängigkeiten mit:
pip install " pipecat-ai[option,...] "Zu den verfügbaren Optionen gehören:
| Kategorie | Dienstleistungen | Befehlsbeispiel installieren |
|---|---|---|
| Sprache zu Text | Assemblyai, Azure, Deepgram, Gladia, Flüstern | pip install "pipecat-ai[deepgram]" |
| Llms | Anthropic, Azure, Fireworks AI, Gemini, Ollama, Openai, zusammen KI | pip install "pipecat-ai[openai]" |
| Text-to-Speech | AWS, Azure, Cartesia, Deepgram, Elevenlabs, Google, LMNT, Openai, Playht, Rime, XTTS | pip install "pipecat-ai[cartesia]" |
| Sprache zu Sprache | Openai Echtzeit | pip install "pipecat-ai[openai]" |
| Transport | Täglich (Webrtc), Websocket, lokal | pip install "pipecat-ai[daily]" |
| Video | Tavus | pip install "pipecat-ai[tavus]" |
| Vision & Image | Moondream, Fal | pip install "pipecat-ai[moondream]" |
| Audioverarbeitung | Silero Vad, Krisp, Loisereduc | pip install "pipecat-ai[silero]" |
| Analytics & Metriken | Kanonische KI, Wachposten | pip install "pipecat-ai[canonical]" |
Dokumentation der vollständigen Dienste anzeigen →
Hier ist ein sehr einfacher Pipecat-Bot, der einen Benutzer begrüßt, wenn er einer Echtzeitsitzung beiträgt. Wir werden täglich für Echtzeit-Medientransport und Cartesia für Text-to-Speech verwenden.
import asyncio
from pipecat . frames . frames import EndFrame , TextFrame
from pipecat . pipeline . pipeline import Pipeline
from pipecat . pipeline . task import PipelineTask
from pipecat . pipeline . runner import PipelineRunner
from pipecat . services . cartesia import CartesiaTTSService
from pipecat . transports . services . daily import DailyParams , DailyTransport
async def main ():
# Use Daily as a real-time media transport (WebRTC)
transport = DailyTransport (
room_url = ...,
token = "" , # leave empty. Note: token is _not_ your api key
bot_name = "Bot Name" ,
params = DailyParams ( audio_out_enabled = True ))
# Use Cartesia for Text-to-Speech
tts = CartesiaTTSService (
api_key = ...,
voice_id = ...
)
# Simple pipeline that will process text to speech and output the result
pipeline = Pipeline ([ tts , transport . output ()])
# Create Pipecat processor that can run one or more pipelines tasks
runner = PipelineRunner ()
# Assign the task callable to run the pipeline
task = PipelineTask ( pipeline )
# Register an event handler to play audio when a
# participant joins the transport WebRTC session
@ transport . event_handler ( "on_first_participant_joined" )
async def on_first_participant_joined ( transport , participant ):
participant_name = participant . get ( "info" , {}). get ( "userName" , "" )
# Queue a TextFrame that will get spoken by the TTS service (Cartesia)
await task . queue_frame ( TextFrame ( f"Hello there, { participant_name } !" ))
# Register an event handler to exit the application when the user leaves.
@ transport . event_handler ( "on_participant_left" )
async def on_participant_left ( transport , participant , reason ):
await task . queue_frame ( EndFrame ())
# Run the pipeline task
await runner . run ( task )
if __name__ == "__main__" :
asyncio . run ( main ())Führen Sie es mit:
python app.py Täglich bietet eine vorgefertigte WEBRTC -Benutzeroberfläche. Während die App läuft, können Sie unter https://<yourdomain>.daily.co/<room_url> besuchen und den Bot Say Hallo!
Websockets eignen sich für die Kommunikation mit Server-Server oder für die erste Entwicklung. Für die Produktionsnutzung benötigen Sie jedoch ein Client-Server-Audio, um ein Protokoll für Echtzeit-Medientransport zu verwenden. (Eine Erklärung des Unterschieds zwischen Websockets und Webrtc finden Sie in diesem Beitrag.)
Eine Möglichkeit, schnell mit WEBRTC aufzustehen, besteht darin, sich für ein tägliches Entwicklerkonto anzumelden. Täglich gibt Ihnen SDKs und globale Infrastruktur für Audio- (und Video-) Routing. Jedes Konto erhält jeden Monat 10.000 Audio-/Video-/Transkriptionsminuten kostenlos.
Melden Sie sich hier an und erstellen Sie einen Raum im Entwickler -Dashboard.
Beachten Sie, dass Sie möglicherweise eine virtuelle Umgebung einrichten müssen, bevor Sie den folgenden Anweisungen befolgen. Zum Beispiel müssen Sie möglicherweise Folgendes aus der Wurzel des Repo ausführen:
python3 -m venv venv
source venv/bin/activateFühren Sie aus der Wurzel dieses Repo Folgendes aus:
pip install -r dev-requirements.txt
python -m buildDies baut das Paket auf. Um das Paket lokal zu verwenden (zB zum Ausführen von Beispieldateien), laufen Sie aus
pip install --editable " .[option,...] "Wenn Sie dieses Paket aus einem anderen Verzeichnis verwenden möchten, können Sie ausführen:
pip install " path_to_this_repo[option,...] "Aus dem Root -Verzeichnis führen Sie aus:
pytest --doctest-modules --ignore-glob= " *to_be_updated* " --ignore-glob= * pipeline_source * src testsDieses Projekt verwendet strenge Pep 8 -Formatierung über Ruff.
Sie können verwenden, um das EMACS-Lazy-Ruff-Paket zu installieren und ruff -Argumente zu konfigurieren:
( use-package lazy-ruff
:ensure t
:hook (( python-mode . lazy-ruff-mode))
:config
( setq lazy-ruff-format-command " ruff format " )
( setq lazy-ruff-only-format-block t )
( setq lazy-ruff-only-format-region t )
( setq lazy-ruff-only-format-buffer t )) ruff wurde in der zuvor beschriebenen venv Umgebung installiert, sodass Sie Pyvenv-Auto verwenden können, um diese Umgebung automatisch innerhalb von EMACs zu laden.
( use-package pyvenv-auto
:ensure t
:defer t
:hook (( python-mode . pyvenv-auto-run)))
Installieren Sie die Ruff -Erweiterung. Bearbeiten Sie dann die Benutzereinstellungen ( Strg-Shift-P Open User Settings (JSON) ) und setzen Sie sie als Standard-Python-Formatierer ein und aktivieren Sie die Formatierung beim Speichern:
"[python]" : {
"editor.defaultFormatter" : " charliermarsh.ruff " ,
"editor.formatOnSave" : true
}Wir begrüßen Beiträge aus der Community! Unabhängig davon, ob Sie Fehler beheben, die Dokumentation verbessern oder neue Funktionen hinzufügen, können Sie hier helfen:
Überprüfen Sie vor dem Einreichen einer Pull -Anfrage die vorhandenen Probleme und PRs, um Duplikate zu vermeiden.
Wir wollen alle Beiträge umgehend überprüfen und konstruktives Feedback geben, um Ihre Änderungen zu verschmelzen.
➡️ Treten Sie unserer Zwietracht bei
➡️ Lesen Sie die Dokumente
➡️ Erreichen Sie uns auf x