Pipecat - это рамка Python с открытым исходным кодом для создания голоса и мультимодальных разговорных агентов. Он обрабатывает сложную оркестровку услуг искусственного интеллекта, сетевого транспорта, обработки аудио и мультимодальных взаимодействий, позволяя вам сосредоточиться на создании привлекательного опыта.
Хотите построить структурированные разговоры? Проверьте потоки Pipecat для управления сложными разговорными состояниями и переходами.
Вы можете начать работу с Pipecat, работающим на локальной машине, а затем перенести процессы вашего агента в облако, когда вы будете готовы. Вы также можете добавить? Номер телефона,?
# Install the module
pip install pipecat-ai
# Set up your environment
cp dot-env.template .envЧтобы сохранить легкие вещи, только основная структура включена по умолчанию. Если вам нужна поддержка сторонних услуг искусственного интеллекта, вы можете добавить необходимые зависимости с помощью:
pip install " pipecat-ai[option,...] "Доступные варианты включают:
| Категория | Услуги | Установить пример команды |
|---|---|---|
| Речи к тексту | Ассамблея, лазур, Дипграм, Глдиция, Шепот | pip install "pipecat-ai[deepgram]" |
| LLMS | Антропный, лазурный, фейерверк ИИ, Близнецы, Оллама, Openai, вместе AI | pip install "pipecat-ai[openai]" |
| Текст в речь | AWS, Azure, Cartesia, Deepgram, ElevenLabs, Google, LMNT, Openai, Playht, Rime, XTTS | pip install "pipecat-ai[cartesia]" |
| Речь в речь | Openai Realtime | pip install "pipecat-ai[openai]" |
| Транспорт | Daily (WEBRTC), WebSocket, Local | pip install "pipecat-ai[daily]" |
| Видео | Тавус | pip install "pipecat-ai[tavus]" |
| Видение и образ | Moondream, Fal | pip install "pipecat-ai[moondream]" |
| Аудио -обработка | Silero Vad, Krisp, Noisereduce | pip install "pipecat-ai[silero]" |
| Аналитика и метрики | Канонический ИИ, Сентри | pip install "pipecat-ai[canonical]" |
Просмотреть документацию полной службы →
Вот очень простой бот Pipecat, который приветствует пользователя, когда они присоединяются к сеансу в реальном времени. Мы используем ежедневно для медиа-транспорта в реальном времени и картезии для текста в речь.
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 ())Запустить это с:
python app.py Daily предоставляет предварительно построенный пользовательский интерфейс Webrtc. Пока приложение работает, вы можете посетить по https://<yourdomain>.daily.co/<room_url> и послушать бот, скажи привет!
Веб-питания хорошо подходят для связи с сервером к серверу или для начальной разработки. Но для использования в производстве вам понадобится аудио-аудио-сервер для клиента для использования протокола, предназначенного для медиа-транспорта в реальном времени. (Объяснение разницы между WebSockets и WEBRTC, см. Этот пост.)
Один из способов быстро встать и работать с WEBRTC - подписаться на ежедневную учетную запись разработчика. Daily дает вам SDK и глобальную инфраструктуру для аудио (и видео) маршрутизации. Каждая учетная запись получает 10 000 аудио/видео/протокол транскрипции бесплатно каждый месяц.
Зарегистрируйтесь здесь и создайте комнату на приборной панели разработчика.
Обратите внимание, что вам может потребоваться настроить виртуальную среду, прежде чем следовать приведенным ниже инструкциям. Например, вам может потребоваться запустить следующее из корня репо:
python3 -m venv venv
source venv/bin/activateИз корня этого репо, запустите следующее:
pip install -r dev-requirements.txt
python -m buildЭто строит пакет. Чтобы использовать пакет локально (например, для запуска образцов файлов), запустите
pip install --editable " .[option,...] "Если вы хотите использовать этот пакет из другого каталога, вы можете запустить:
pip install " path_to_this_repo[option,...] "Из корневого каталога запустите:
pytest --doctest-modules --ignore-glob= " *to_be_updated* " --ignore-glob= * pipeline_source * src testsВ этом проекте используется строгая форматирование PEP 8 через Ruff.
Вы можете использовать use-package для установки пакета Emacs-Lazy-Ruff и настройки аргументов 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 был установлен в среде venv , описанную ранее, поэтому вы должны иметь возможность использовать Pyvenv-Auto для автоматической загрузки этой среды внутри Emacs.
( use-package pyvenv-auto
:ensure t
:defer t
:hook (( python-mode . pyvenv-auto-run)))
Установите расширение езды. Затем отредактируйте настройки пользователя ( CTRL-Shift-P Open User Settings (JSON) ) и установите их в качестве форматета Python по умолчанию и включите форматирование на сохранении:
"[python]" : {
"editor.defaultFormatter" : " charliermarsh.ruff " ,
"editor.formatOnSave" : true
}Мы приветствуем вклад сообщества! Если вы исправляете ошибки, улучшаете документацию или добавляете новые функции, вот как вы можете помочь:
Прежде чем отправить запрос на привлечение, пожалуйста, проверьте существующие проблемы и PRS, чтобы избежать дубликатов.
Мы стремимся быстро пересмотреть все взносы и предоставить конструктивную обратную связь, чтобы помочь объединить ваши изменения.
➡ Присоединяйтесь к нашим разногласиям
➡ Читайте документы
➡ Достичь нас на x