PIPECAT adalah kerangka kerja Python open source untuk membangun suara dan agen percakapan multimodal. Ini menangani orkestrasi kompleks layanan AI, transportasi jaringan, pemrosesan audio, dan interaksi multimodal, memungkinkan Anda fokus pada menciptakan pengalaman yang menarik.
Ingin membangun percakapan terstruktur? Lihatlah aliran Pipecat untuk mengelola keadaan percakapan yang kompleks dan transisi.
Anda dapat memulai dengan Pipecat yang berjalan di mesin lokal Anda, kemudian memindahkan proses agen Anda ke cloud saat Anda siap. Anda juga bisa menambahkan? Nomor telepon, "output gambar, input video, menggunakan LLM yang berbeda, dan banyak lagi.
# Install the module
pip install pipecat-ai
# Set up your environment
cp dot-env.template .envAgar hal -hal tetap ringan, hanya kerangka kerja inti yang disertakan secara default. Jika Anda memerlukan dukungan untuk layanan AI pihak ketiga, Anda dapat menambahkan dependensi yang diperlukan dengan:
pip install " pipecat-ai[option,...] "Opsi yang tersedia meliputi:
| Kategori | Layanan | Instal Contoh Perintah |
|---|---|---|
| Pidato-ke-teks | Assemblyai, Azure, Deepgram, Gladia, Whisper | pip install "pipecat-ai[deepgram]" |
| Llms | Anthropic, Azure, Fireworks AI, Gemini, Ollama, Openai, Together AI | pip install "pipecat-ai[openai]" |
| Teks-ke-speech | AWS, Azure, Cartesia, Deepgram, Elevenlabs, Google, LMNT, Openai, Playht, Rime, XTTS | pip install "pipecat-ai[cartesia]" |
| Pidato-ke-Speech | Openai Realtime | pip install "pipecat-ai[openai]" |
| Mengangkut | Daily (WEBRTC), Websocket, Lokal | pip install "pipecat-ai[daily]" |
| Video | Tavus | pip install "pipecat-ai[tavus]" |
| Visi & Gambar | Moondream, fal | pip install "pipecat-ai[moondream]" |
| Pemrosesan audio | Silero Vad, Krisp, Noisereduce | pip install "pipecat-ai[silero]" |
| Analisis & Metrik | AI kanonik, penjaga | pip install "pipecat-ai[canonical]" |
Lihat Dokumentasi Layanan Lengkap →
Berikut adalah bot Pipecat yang sangat mendasar yang menyapa pengguna ketika mereka bergabung dengan sesi real-time. Kami akan menggunakan setiap hari untuk transportasi media real-time, dan Cartesia untuk teks-ke-bicara.
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 ())Jalankan dengan:
python app.py Daily menyediakan antarmuka pengguna WebRTC Prebuilt. Saat aplikasi sedang berjalan, Anda dapat berkunjung di https://<yourdomain>.daily.co/<room_url> dan dengarkan bot menyapa!
Websockets baik untuk komunikasi server-ke-server atau untuk pengembangan awal. Tetapi untuk penggunaan produksi, Anda membutuhkan audio klien-server untuk menggunakan protokol yang dirancang untuk transportasi media real-time. (Untuk penjelasan tentang perbedaan antara WebSockets dan WebRTC, lihat posting ini.)
Salah satu cara untuk bangun dan berjalan dengan cepat dengan WEBRTC adalah dengan mendaftar untuk akun pengembang harian. Daily memberi Anda SDK dan infrastruktur global untuk perutean audio (dan video). Setiap akun mendapat 10.000 menit audio/video/transkripsi gratis setiap bulan.
Daftar di sini dan buat kamar di dasbor pengembang.
Perhatikan bahwa Anda mungkin perlu mengatur lingkungan virtual sebelum mengikuti instruksi di bawah ini. Misalnya, Anda mungkin perlu menjalankan yang berikut dari akar repo:
python3 -m venv venv
source venv/bin/activateDari akar repo ini, jalankan yang berikut:
pip install -r dev-requirements.txt
python -m buildIni membangun paket. Untuk menggunakan paket secara lokal (misalnya untuk menjalankan file sampel), jalankan
pip install --editable " .[option,...] "Jika Anda ingin menggunakan paket ini dari direktori lain, Anda dapat menjalankan:
pip install " path_to_this_repo[option,...] "Dari direktori root, jalankan:
pytest --doctest-modules --ignore-glob= " *to_be_updated* " --ignore-glob= * pipeline_source * src testsProyek ini menggunakan pemformatan PEP 8 yang ketat melalui Ruff.
Anda dapat menggunakan Penggunaan Paket untuk menginstal paket Emacs-Lazy-Ruff dan mengkonfigurasi argumen ruff :
( 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 dipasang di lingkungan venv yang dijelaskan sebelumnya, jadi Anda harus dapat menggunakan Pyvenv-Auto untuk secara otomatis memuat lingkungan itu di dalam Emacs.
( use-package pyvenv-auto
:ensure t
:defer t
:hook (( python-mode . pyvenv-auto-run)))
Pasang ekstensi ruff. Kemudian edit pengaturan pengguna ( ctrl-shift-p Open User Settings (JSON) ) dan atur sebagai formatter python default, dan aktifkan pemformatan pada simpan:
"[python]" : {
"editor.defaultFormatter" : " charliermarsh.ruff " ,
"editor.formatOnSave" : true
}Kami menyambut kontribusi dari komunitas! Apakah Anda memperbaiki bug, meningkatkan dokumentasi, atau menambahkan fitur baru, inilah cara Anda dapat membantu:
Sebelum mengirimkan permintaan tarik, silakan periksa masalah dan PR yang ada untuk menghindari duplikat.
Kami bertujuan untuk meninjau semua kontribusi segera dan memberikan umpan balik konstruktif untuk membantu perubahan Anda digabungkan.
➡️ Bergabunglah dengan Perselisihan Kami
➡️ Baca dokumen
➡️ mencapai kami di x