From 1788ba6c5c9356f011d9b9f7c5a8b1e056b16b11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Thu, 29 May 2025 10:39:18 -0700 Subject: [PATCH] add new pipecat.examples package and make runner public --- CHANGELOG.md | 3 + .../foundational/01-say-one-thing-piper.py | 2 +- .../foundational/01-say-one-thing-rime.py | 2 +- examples/foundational/01-say-one-thing.py | 2 +- examples/foundational/01c-fastpitch.py | 2 +- examples/foundational/02-llm-say-one-thing.py | 2 +- examples/foundational/03-still-frame.py | 2 +- .../foundational/03b-still-frame-imagen.py | 2 +- .../foundational/05-sync-speech-and-image.py | 2 +- .../foundational/06-listen-and-respond.py | 2 +- examples/foundational/06a-image-sync.py | 2 +- .../07-interruptible-cartesia-http.py | 2 +- examples/foundational/07-interruptible.py | 2 +- .../07b-interruptible-langchain.py | 2 +- .../07c-interruptible-deepgram-vad.py | 2 +- .../07c-interruptible-deepgram.py | 2 +- .../07d-interruptible-elevenlabs-http.py | 2 +- .../07d-interruptible-elevenlabs.py | 2 +- .../07e-interruptible-playht-http.py | 2 +- .../foundational/07e-interruptible-playht.py | 2 +- .../foundational/07f-interruptible-azure.py | 2 +- .../foundational/07g-interruptible-openai.py | 2 +- .../07h-interruptible-openpipe.py | 2 +- .../foundational/07i-interruptible-xtts.py | 2 +- .../foundational/07j-interruptible-gladia.py | 2 +- .../foundational/07k-interruptible-lmnt.py | 2 +- .../foundational/07l-interruptible-groq.py | 2 +- .../foundational/07m-interruptible-aws.py | 2 +- .../foundational/07n-interruptible-google.py | 2 +- .../07o-interruptible-assemblyai.py | 2 +- .../foundational/07p-interruptible-krisp.py | 2 +- .../07q-interruptible-rime-http.py | 2 +- .../foundational/07q-interruptible-rime.py | 2 +- .../07r-interruptible-riva-nim.py | 2 +- .../07s-interruptible-google-audio-in.py | 2 +- .../foundational/07t-interruptible-fish.py | 2 +- .../07u-interruptible-ultravox.py | 2 +- .../07v-interruptible-neuphonic-http.py | 2 +- .../07v-interruptible-neuphonic.py | 2 +- .../foundational/07w-interruptible-fal.py | 2 +- .../foundational/07y-interruptible-minimax.py | 2 +- .../foundational/07z-interruptible-sarvam.py | 2 +- examples/foundational/09-mirror.py | 2 +- examples/foundational/09a-local-mirror.py | 2 +- examples/foundational/10-wake-phrase.py | 2 +- examples/foundational/11-sound-effects.py | 2 +- examples/foundational/12-describe-video.py | 4 +- .../12a-describe-video-gemini-flash.py | 4 +- .../foundational/12b-describe-video-gpt-4o.py | 4 +- .../12c-describe-video-anthropic.py | 4 +- .../foundational/13-whisper-transcription.py | 2 +- .../13b-deepgram-transcription.py | 2 +- .../foundational/13c-gladia-transcription.py | 2 +- .../foundational/13c-gladia-translation.py | 2 +- .../13d-assemblyai-transcription.py | 2 +- examples/foundational/13e-whisper-mlx.py | 2 +- examples/foundational/14-function-calling.py | 2 +- .../14a-function-calling-anthropic.py | 2 +- .../14b-function-calling-anthropic-video.py | 4 +- .../14c-function-calling-together.py | 2 +- .../14d-function-calling-video.py | 4 +- .../14e-function-calling-gemini.py | 4 +- .../foundational/14f-function-calling-groq.py | 2 +- .../foundational/14g-function-calling-grok.py | 2 +- .../14h-function-calling-azure.py | 2 +- .../14i-function-calling-fireworks.py | 2 +- .../foundational/14j-function-calling-nim.py | 2 +- .../14k-function-calling-cerebras.py | 2 +- .../14l-function-calling-deepseek.py | 2 +- .../14m-function-calling-openrouter.py | 2 +- .../14n-function-calling-perplexity.py | 2 +- ...o-function-calling-gemini-openai-format.py | 2 +- .../14p-function-calling-gemini-vertex-ai.py | 2 +- .../foundational/14q-function-calling-qwen.py | 2 +- .../foundational/14r-function-calling-aws.py | 2 +- examples/foundational/15-switch-voices.py | 2 +- examples/foundational/15a-switch-languages.py | 2 +- .../16-gpu-container-local-bot.py | 2 +- examples/foundational/17-detect-user-idle.py | 2 +- examples/foundational/18-gstreamer-filesrc.py | 2 +- .../18a-gstreamer-videotestsrc.py | 2 +- .../foundational/19-openai-realtime-beta.py | 2 +- .../foundational/19a-azure-realtime-beta.py | 2 +- .../20a-persistent-context-openai.py | 2 +- .../20b-persistent-context-openai-realtime.py | 2 +- .../20c-persistent-context-anthropic.py | 2 +- .../20d-persistent-context-gemini.py | 4 +- .../20e-persistent-context-aws-nova-sonic.py | 2 +- .../foundational/21a-tavus-video-service.py | 2 +- .../foundational/22-natural-conversation.py | 2 +- .../22b-natural-conversation-proposal.py | 2 +- .../22c-natural-conversation-mixed-llms.py | 2 +- .../22d-natural-conversation-gemini-audio.py | 2 +- .../foundational/23-bot-background-sound.py | 2 +- examples/foundational/24-stt-mute-filter.py | 2 +- examples/foundational/25-google-audio-in.py | 2 +- .../foundational/26-gemini-multimodal-live.py | 2 +- ...6a-gemini-multimodal-live-transcription.py | 2 +- ...gemini-multimodal-live-function-calling.py | 2 +- .../26c-gemini-multimodal-live-video.py | 2 +- .../26d-gemini-multimodal-live-text.py | 2 +- .../26e-gemini-multimodal-google-search.py | 2 +- examples/foundational/27-simli-layer.py | 2 +- .../28-transcription-processor.py | 2 +- .../foundational/29-turn-tracking-observer.py | 2 +- examples/foundational/30-observer.py | 2 +- .../32-gemini-grounding-metadata.py | 2 +- examples/foundational/33-gemini-rag.py | 2 +- examples/foundational/34-audio-recording.py | 2 +- .../35-pattern-pair-voice-switching.py | 2 +- .../foundational/36-user-email-gathering.py | 2 +- examples/foundational/37-mem0.py | 2 +- examples/foundational/38-smart-turn-fal.py | 2 +- .../38a-smart-turn-local-coreml.py | 2 +- examples/foundational/38b-smart-turn-local.py | 2 +- examples/foundational/39-mcp-stdio.py | 2 +- examples/foundational/39a-mcp-run-sse.py | 2 +- examples/foundational/39b-multiple-mcp.py | 2 +- examples/foundational/40-aws-nova-sonic.py | 2 +- examples/foundational/41a-text-only-webrtc.py | 2 +- .../foundational/41b-text-and-audio-webrtc.py | 2 +- examples/open-telemetry/jaeger/bot.py | 2 +- examples/open-telemetry/langfuse/bot.py | 2 +- examples/open-telemetry/run.py | 235 ------------------ src/pipecat/examples/__init__.py | 0 .../pipecat/examples}/daily_runner.py | 0 .../pipecat/examples}/run.py | 2 +- 127 files changed, 134 insertions(+), 366 deletions(-) delete mode 100644 examples/open-telemetry/run.py create mode 100644 src/pipecat/examples/__init__.py rename {examples/foundational => src/pipecat/examples}/daily_runner.py (100%) rename {examples/foundational => src/pipecat/examples}/run.py (99%) diff --git a/CHANGELOG.md b/CHANGELOG.md index abf343513..7c160c7d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- The examples runner is now public from the `pipecat.examples` package. This + allows everyone to build their own examples and run them easily. + - It is now possible to push `OutputDTMFFrame` or `OutputDTMFUrgentFrame` with `DailyTransport`. This will be sent properly if a Daily dial-out connection has been established. diff --git a/examples/foundational/01-say-one-thing-piper.py b/examples/foundational/01-say-one-thing-piper.py index ad5ed2278..5093a9612 100644 --- a/examples/foundational/01-say-one-thing-piper.py +++ b/examples/foundational/01-say-one-thing-piper.py @@ -55,6 +55,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/01-say-one-thing-rime.py b/examples/foundational/01-say-one-thing-rime.py index 6d09a20d9..67542e596 100644 --- a/examples/foundational/01-say-one-thing-rime.py +++ b/examples/foundational/01-say-one-thing-rime.py @@ -56,6 +56,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/01-say-one-thing.py b/examples/foundational/01-say-one-thing.py index be501dec7..4a34a3c3d 100644 --- a/examples/foundational/01-say-one-thing.py +++ b/examples/foundational/01-say-one-thing.py @@ -53,6 +53,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/01c-fastpitch.py b/examples/foundational/01c-fastpitch.py index 62e4ea1ec..0795097fb 100644 --- a/examples/foundational/01c-fastpitch.py +++ b/examples/foundational/01c-fastpitch.py @@ -50,6 +50,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/02-llm-say-one-thing.py b/examples/foundational/02-llm-say-one-thing.py index 0e4675fba..b76385d7d 100644 --- a/examples/foundational/02-llm-say-one-thing.py +++ b/examples/foundational/02-llm-say-one-thing.py @@ -63,6 +63,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/03-still-frame.py b/examples/foundational/03-still-frame.py index 34c5da3b0..106250e11 100644 --- a/examples/foundational/03-still-frame.py +++ b/examples/foundational/03-still-frame.py @@ -68,6 +68,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/03b-still-frame-imagen.py b/examples/foundational/03b-still-frame-imagen.py index 7042bd078..83c68ef19 100644 --- a/examples/foundational/03b-still-frame-imagen.py +++ b/examples/foundational/03b-still-frame-imagen.py @@ -68,6 +68,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/05-sync-speech-and-image.py b/examples/foundational/05-sync-speech-and-image.py index a87869d0b..d4c816714 100644 --- a/examples/foundational/05-sync-speech-and-image.py +++ b/examples/foundational/05-sync-speech-and-image.py @@ -174,6 +174,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/06-listen-and-respond.py b/examples/foundational/06-listen-and-respond.py index 5bdcd4b77..b660459cf 100644 --- a/examples/foundational/06-listen-and-respond.py +++ b/examples/foundational/06-listen-and-respond.py @@ -137,6 +137,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/06a-image-sync.py b/examples/foundational/06a-image-sync.py index baabd1a56..61ba1c6f4 100644 --- a/examples/foundational/06a-image-sync.py +++ b/examples/foundational/06a-image-sync.py @@ -156,6 +156,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07-interruptible-cartesia-http.py b/examples/foundational/07-interruptible-cartesia-http.py index c0108d8f4..75f8a0ddb 100644 --- a/examples/foundational/07-interruptible-cartesia-http.py +++ b/examples/foundational/07-interruptible-cartesia-http.py @@ -109,6 +109,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07-interruptible.py b/examples/foundational/07-interruptible.py index a86651c85..9429f5a33 100644 --- a/examples/foundational/07-interruptible.py +++ b/examples/foundational/07-interruptible.py @@ -108,6 +108,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07b-interruptible-langchain.py b/examples/foundational/07b-interruptible-langchain.py index de1b12fea..2a5e72c1a 100644 --- a/examples/foundational/07b-interruptible-langchain.py +++ b/examples/foundational/07b-interruptible-langchain.py @@ -141,6 +141,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07c-interruptible-deepgram-vad.py b/examples/foundational/07c-interruptible-deepgram-vad.py index 53697283e..f228dcecd 100644 --- a/examples/foundational/07c-interruptible-deepgram-vad.py +++ b/examples/foundational/07c-interruptible-deepgram-vad.py @@ -120,6 +120,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07c-interruptible-deepgram.py b/examples/foundational/07c-interruptible-deepgram.py index 8eaea32e6..f523f2aa5 100644 --- a/examples/foundational/07c-interruptible-deepgram.py +++ b/examples/foundational/07c-interruptible-deepgram.py @@ -106,6 +106,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07d-interruptible-elevenlabs-http.py b/examples/foundational/07d-interruptible-elevenlabs-http.py index 7f76dbdcd..eb7e03bf5 100644 --- a/examples/foundational/07d-interruptible-elevenlabs-http.py +++ b/examples/foundational/07d-interruptible-elevenlabs-http.py @@ -113,6 +113,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07d-interruptible-elevenlabs.py b/examples/foundational/07d-interruptible-elevenlabs.py index a8a004417..945c0e47b 100644 --- a/examples/foundational/07d-interruptible-elevenlabs.py +++ b/examples/foundational/07d-interruptible-elevenlabs.py @@ -109,6 +109,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07e-interruptible-playht-http.py b/examples/foundational/07e-interruptible-playht-http.py index 0662ea27a..534cd6927 100644 --- a/examples/foundational/07e-interruptible-playht-http.py +++ b/examples/foundational/07e-interruptible-playht-http.py @@ -109,6 +109,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07e-interruptible-playht.py b/examples/foundational/07e-interruptible-playht.py index b5c96c689..1bbb04fe2 100644 --- a/examples/foundational/07e-interruptible-playht.py +++ b/examples/foundational/07e-interruptible-playht.py @@ -111,6 +111,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07f-interruptible-azure.py b/examples/foundational/07f-interruptible-azure.py index 32f97fb2e..0da653f4d 100644 --- a/examples/foundational/07f-interruptible-azure.py +++ b/examples/foundational/07f-interruptible-azure.py @@ -115,6 +115,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07g-interruptible-openai.py b/examples/foundational/07g-interruptible-openai.py index 203556e99..5d028603e 100644 --- a/examples/foundational/07g-interruptible-openai.py +++ b/examples/foundational/07g-interruptible-openai.py @@ -110,6 +110,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07h-interruptible-openpipe.py b/examples/foundational/07h-interruptible-openpipe.py index a73a78eb0..e488ad6db 100644 --- a/examples/foundational/07h-interruptible-openpipe.py +++ b/examples/foundational/07h-interruptible-openpipe.py @@ -114,6 +114,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07i-interruptible-xtts.py b/examples/foundational/07i-interruptible-xtts.py index 0efe516f2..32c7a6348 100644 --- a/examples/foundational/07i-interruptible-xtts.py +++ b/examples/foundational/07i-interruptible-xtts.py @@ -112,6 +112,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07j-interruptible-gladia.py b/examples/foundational/07j-interruptible-gladia.py index 38b0f506e..6975cfec7 100644 --- a/examples/foundational/07j-interruptible-gladia.py +++ b/examples/foundational/07j-interruptible-gladia.py @@ -116,6 +116,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07k-interruptible-lmnt.py b/examples/foundational/07k-interruptible-lmnt.py index f7fc4b8aa..c3c46ab15 100644 --- a/examples/foundational/07k-interruptible-lmnt.py +++ b/examples/foundational/07k-interruptible-lmnt.py @@ -105,6 +105,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07l-interruptible-groq.py b/examples/foundational/07l-interruptible-groq.py index d649ddce8..3e73194ab 100644 --- a/examples/foundational/07l-interruptible-groq.py +++ b/examples/foundational/07l-interruptible-groq.py @@ -109,6 +109,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07m-interruptible-aws.py b/examples/foundational/07m-interruptible-aws.py index dbdd0ba40..78ef705a1 100644 --- a/examples/foundational/07m-interruptible-aws.py +++ b/examples/foundational/07m-interruptible-aws.py @@ -112,6 +112,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07n-interruptible-google.py b/examples/foundational/07n-interruptible-google.py index 30d09943a..7e032513c 100644 --- a/examples/foundational/07n-interruptible-google.py +++ b/examples/foundational/07n-interruptible-google.py @@ -113,6 +113,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07o-interruptible-assemblyai.py b/examples/foundational/07o-interruptible-assemblyai.py index 0e195fa57..72963c0dc 100644 --- a/examples/foundational/07o-interruptible-assemblyai.py +++ b/examples/foundational/07o-interruptible-assemblyai.py @@ -111,6 +111,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07p-interruptible-krisp.py b/examples/foundational/07p-interruptible-krisp.py index 57cc0910e..21046a3b9 100644 --- a/examples/foundational/07p-interruptible-krisp.py +++ b/examples/foundational/07p-interruptible-krisp.py @@ -109,6 +109,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07q-interruptible-rime-http.py b/examples/foundational/07q-interruptible-rime-http.py index 248214d1a..132b743ab 100644 --- a/examples/foundational/07q-interruptible-rime-http.py +++ b/examples/foundational/07q-interruptible-rime-http.py @@ -114,6 +114,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07q-interruptible-rime.py b/examples/foundational/07q-interruptible-rime.py index cdc083b2e..d859b83aa 100644 --- a/examples/foundational/07q-interruptible-rime.py +++ b/examples/foundational/07q-interruptible-rime.py @@ -108,6 +108,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07r-interruptible-riva-nim.py b/examples/foundational/07r-interruptible-riva-nim.py index f93809d03..1d202bcb5 100644 --- a/examples/foundational/07r-interruptible-riva-nim.py +++ b/examples/foundational/07r-interruptible-riva-nim.py @@ -105,6 +105,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07s-interruptible-google-audio-in.py b/examples/foundational/07s-interruptible-google-audio-in.py index eeb4d6c48..9f8c9fbbf 100644 --- a/examples/foundational/07s-interruptible-google-audio-in.py +++ b/examples/foundational/07s-interruptible-google-audio-in.py @@ -282,6 +282,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07t-interruptible-fish.py b/examples/foundational/07t-interruptible-fish.py index 48c02d33c..50eee52ec 100644 --- a/examples/foundational/07t-interruptible-fish.py +++ b/examples/foundational/07t-interruptible-fish.py @@ -109,6 +109,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07u-interruptible-ultravox.py b/examples/foundational/07u-interruptible-ultravox.py index bedabe1e3..23bc409f3 100644 --- a/examples/foundational/07u-interruptible-ultravox.py +++ b/examples/foundational/07u-interruptible-ultravox.py @@ -97,6 +97,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07v-interruptible-neuphonic-http.py b/examples/foundational/07v-interruptible-neuphonic-http.py index 39afa9987..453caa00d 100644 --- a/examples/foundational/07v-interruptible-neuphonic-http.py +++ b/examples/foundational/07v-interruptible-neuphonic-http.py @@ -109,6 +109,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07v-interruptible-neuphonic.py b/examples/foundational/07v-interruptible-neuphonic.py index 5049020d8..934875db4 100644 --- a/examples/foundational/07v-interruptible-neuphonic.py +++ b/examples/foundational/07v-interruptible-neuphonic.py @@ -108,6 +108,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07w-interruptible-fal.py b/examples/foundational/07w-interruptible-fal.py index bd967aa10..2b00c4b27 100644 --- a/examples/foundational/07w-interruptible-fal.py +++ b/examples/foundational/07w-interruptible-fal.py @@ -111,6 +111,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07y-interruptible-minimax.py b/examples/foundational/07y-interruptible-minimax.py index b8c9ded40..b01a51b57 100644 --- a/examples/foundational/07y-interruptible-minimax.py +++ b/examples/foundational/07y-interruptible-minimax.py @@ -115,6 +115,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/07z-interruptible-sarvam.py b/examples/foundational/07z-interruptible-sarvam.py index 69a233991..02225b209 100644 --- a/examples/foundational/07z-interruptible-sarvam.py +++ b/examples/foundational/07z-interruptible-sarvam.py @@ -114,6 +114,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/09-mirror.py b/examples/foundational/09-mirror.py index 406293351..67c21945c 100644 --- a/examples/foundational/09-mirror.py +++ b/examples/foundational/09-mirror.py @@ -96,6 +96,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/09a-local-mirror.py b/examples/foundational/09a-local-mirror.py index 06855bbb7..ae82ac646 100644 --- a/examples/foundational/09a-local-mirror.py +++ b/examples/foundational/09a-local-mirror.py @@ -119,6 +119,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/10-wake-phrase.py b/examples/foundational/10-wake-phrase.py index 7851687cc..186ff97aa 100644 --- a/examples/foundational/10-wake-phrase.py +++ b/examples/foundational/10-wake-phrase.py @@ -104,6 +104,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/11-sound-effects.py b/examples/foundational/11-sound-effects.py index 02ab18341..3ca4f8855 100644 --- a/examples/foundational/11-sound-effects.py +++ b/examples/foundational/11-sound-effects.py @@ -162,6 +162,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/12-describe-video.py b/examples/foundational/12-describe-video.py index 276508873..467330765 100644 --- a/examples/foundational/12-describe-video.py +++ b/examples/foundational/12-describe-video.py @@ -10,9 +10,9 @@ from typing import Optional from dotenv import load_dotenv from loguru import logger -from run import get_transport_client_id, maybe_capture_participant_video from pipecat.audio.vad.silero import SileroVADAnalyzer +from pipecat.examples.run import get_transport_client_id, maybe_capture_participant_video from pipecat.frames.frames import Frame, TextFrame, UserImageRequestFrame from pipecat.pipeline.pipeline import Pipeline from pipecat.pipeline.runner import PipelineRunner @@ -125,6 +125,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/12a-describe-video-gemini-flash.py b/examples/foundational/12a-describe-video-gemini-flash.py index 1e3d9d494..9558e883b 100644 --- a/examples/foundational/12a-describe-video-gemini-flash.py +++ b/examples/foundational/12a-describe-video-gemini-flash.py @@ -10,9 +10,9 @@ from typing import Optional from dotenv import load_dotenv from loguru import logger -from run import get_transport_client_id, maybe_capture_participant_video from pipecat.audio.vad.silero import SileroVADAnalyzer +from pipecat.examples.run import get_transport_client_id, maybe_capture_participant_video from pipecat.frames.frames import Frame, TextFrame, UserImageRequestFrame from pipecat.pipeline.pipeline import Pipeline from pipecat.pipeline.runner import PipelineRunner @@ -128,6 +128,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/12b-describe-video-gpt-4o.py b/examples/foundational/12b-describe-video-gpt-4o.py index d912ee91b..705b8926c 100644 --- a/examples/foundational/12b-describe-video-gpt-4o.py +++ b/examples/foundational/12b-describe-video-gpt-4o.py @@ -10,9 +10,9 @@ from typing import Optional from dotenv import load_dotenv from loguru import logger -from run import get_transport_client_id, maybe_capture_participant_video from pipecat.audio.vad.silero import SileroVADAnalyzer +from pipecat.examples.run import get_transport_client_id, maybe_capture_participant_video from pipecat.frames.frames import Frame, TextFrame, UserImageRequestFrame from pipecat.pipeline.pipeline import Pipeline from pipecat.pipeline.runner import PipelineRunner @@ -128,6 +128,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/12c-describe-video-anthropic.py b/examples/foundational/12c-describe-video-anthropic.py index bf921df83..cb90faea2 100644 --- a/examples/foundational/12c-describe-video-anthropic.py +++ b/examples/foundational/12c-describe-video-anthropic.py @@ -10,9 +10,9 @@ from typing import Optional from dotenv import load_dotenv from loguru import logger -from run import get_transport_client_id, maybe_capture_participant_video from pipecat.audio.vad.silero import SileroVADAnalyzer +from pipecat.examples.run import get_transport_client_id, maybe_capture_participant_video from pipecat.frames.frames import Frame, TextFrame, UserImageRequestFrame from pipecat.pipeline.pipeline import Pipeline from pipecat.pipeline.runner import PipelineRunner @@ -128,6 +128,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/13-whisper-transcription.py b/examples/foundational/13-whisper-transcription.py index 003d9ebb2..8a5b951a8 100644 --- a/examples/foundational/13-whisper-transcription.py +++ b/examples/foundational/13-whisper-transcription.py @@ -72,6 +72,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/13b-deepgram-transcription.py b/examples/foundational/13b-deepgram-transcription.py index 2318041cb..ae8953f0a 100644 --- a/examples/foundational/13b-deepgram-transcription.py +++ b/examples/foundational/13b-deepgram-transcription.py @@ -66,6 +66,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/13c-gladia-transcription.py b/examples/foundational/13c-gladia-transcription.py index 14237a5f0..2e4f5b375 100644 --- a/examples/foundational/13c-gladia-transcription.py +++ b/examples/foundational/13c-gladia-transcription.py @@ -66,6 +66,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/13c-gladia-translation.py b/examples/foundational/13c-gladia-translation.py index 0deb03c71..74e9437c0 100644 --- a/examples/foundational/13c-gladia-translation.py +++ b/examples/foundational/13c-gladia-translation.py @@ -87,6 +87,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/13d-assemblyai-transcription.py b/examples/foundational/13d-assemblyai-transcription.py index 0a803d7d3..de22b9bb6 100644 --- a/examples/foundational/13d-assemblyai-transcription.py +++ b/examples/foundational/13d-assemblyai-transcription.py @@ -65,6 +65,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/13e-whisper-mlx.py b/examples/foundational/13e-whisper-mlx.py index f8db6b924..5d7dc53e3 100644 --- a/examples/foundational/13e-whisper-mlx.py +++ b/examples/foundational/13e-whisper-mlx.py @@ -99,6 +99,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14-function-calling.py b/examples/foundational/14-function-calling.py index 64d2c4e4f..7c80416b1 100644 --- a/examples/foundational/14-function-calling.py +++ b/examples/foundational/14-function-calling.py @@ -139,6 +139,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14a-function-calling-anthropic.py b/examples/foundational/14a-function-calling-anthropic.py index 7cfd5bce5..f46a42db1 100644 --- a/examples/foundational/14a-function-calling-anthropic.py +++ b/examples/foundational/14a-function-calling-anthropic.py @@ -132,6 +132,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14b-function-calling-anthropic-video.py b/examples/foundational/14b-function-calling-anthropic-video.py index 660d8fb96..427bf0047 100644 --- a/examples/foundational/14b-function-calling-anthropic-video.py +++ b/examples/foundational/14b-function-calling-anthropic-video.py @@ -10,11 +10,11 @@ import os from dotenv import load_dotenv from loguru import logger -from run import get_transport_client_id, maybe_capture_participant_video from pipecat.adapters.schemas.function_schema import FunctionSchema from pipecat.adapters.schemas.tools_schema import ToolsSchema from pipecat.audio.vad.silero import SileroVADAnalyzer +from pipecat.examples.run import get_transport_client_id, maybe_capture_participant_video from pipecat.pipeline.pipeline import Pipeline from pipecat.pipeline.runner import PipelineRunner from pipecat.pipeline.task import PipelineParams, PipelineTask @@ -200,6 +200,6 @@ If you need to use a tool, simply use the tool. Do not tell the user the tool yo if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14c-function-calling-together.py b/examples/foundational/14c-function-calling-together.py index 538af5737..54545b0b2 100644 --- a/examples/foundational/14c-function-calling-together.py +++ b/examples/foundational/14c-function-calling-together.py @@ -132,6 +132,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14d-function-calling-video.py b/examples/foundational/14d-function-calling-video.py index 034171808..67173685a 100644 --- a/examples/foundational/14d-function-calling-video.py +++ b/examples/foundational/14d-function-calling-video.py @@ -10,11 +10,11 @@ import os from dotenv import load_dotenv from loguru import logger -from run import get_transport_client_id, maybe_capture_participant_video from pipecat.adapters.schemas.function_schema import FunctionSchema from pipecat.adapters.schemas.tools_schema import ToolsSchema from pipecat.audio.vad.silero import SileroVADAnalyzer +from pipecat.examples.run import get_transport_client_id, maybe_capture_participant_video from pipecat.pipeline.pipeline import Pipeline from pipecat.pipeline.runner import PipelineRunner from pipecat.pipeline.task import PipelineTask @@ -183,6 +183,6 @@ indicate you should use the get_image tool are: if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14e-function-calling-gemini.py b/examples/foundational/14e-function-calling-gemini.py index 40d414f87..df39677b3 100644 --- a/examples/foundational/14e-function-calling-gemini.py +++ b/examples/foundational/14e-function-calling-gemini.py @@ -10,11 +10,11 @@ import os from dotenv import load_dotenv from loguru import logger -from run import get_transport_client_id, maybe_capture_participant_video from pipecat.adapters.schemas.function_schema import FunctionSchema from pipecat.adapters.schemas.tools_schema import ToolsSchema from pipecat.audio.vad.silero import SileroVADAnalyzer +from pipecat.examples.run import get_transport_client_id, maybe_capture_participant_video from pipecat.frames.frames import TTSSpeakFrame from pipecat.pipeline.pipeline import Pipeline from pipecat.pipeline.runner import PipelineRunner @@ -193,6 +193,6 @@ indicate you should use the get_image tool are: if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14f-function-calling-groq.py b/examples/foundational/14f-function-calling-groq.py index c0099697b..698845028 100644 --- a/examples/foundational/14f-function-calling-groq.py +++ b/examples/foundational/14f-function-calling-groq.py @@ -141,6 +141,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14g-function-calling-grok.py b/examples/foundational/14g-function-calling-grok.py index d9643e0ad..ce3349ecb 100644 --- a/examples/foundational/14g-function-calling-grok.py +++ b/examples/foundational/14g-function-calling-grok.py @@ -134,6 +134,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14h-function-calling-azure.py b/examples/foundational/14h-function-calling-azure.py index 3f79f30ef..a54fb1429 100644 --- a/examples/foundational/14h-function-calling-azure.py +++ b/examples/foundational/14h-function-calling-azure.py @@ -140,6 +140,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14i-function-calling-fireworks.py b/examples/foundational/14i-function-calling-fireworks.py index 13ed83b32..5467e685a 100644 --- a/examples/foundational/14i-function-calling-fireworks.py +++ b/examples/foundational/14i-function-calling-fireworks.py @@ -139,6 +139,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14j-function-calling-nim.py b/examples/foundational/14j-function-calling-nim.py index e5e663ec8..f9b437f83 100644 --- a/examples/foundational/14j-function-calling-nim.py +++ b/examples/foundational/14j-function-calling-nim.py @@ -137,6 +137,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14k-function-calling-cerebras.py b/examples/foundational/14k-function-calling-cerebras.py index b30bd9ca7..7aa5a2af4 100644 --- a/examples/foundational/14k-function-calling-cerebras.py +++ b/examples/foundational/14k-function-calling-cerebras.py @@ -147,6 +147,6 @@ Start by asking me for my location. Then, use 'get_weather_current' to give me a if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14l-function-calling-deepseek.py b/examples/foundational/14l-function-calling-deepseek.py index 6d352835e..0daa814e6 100644 --- a/examples/foundational/14l-function-calling-deepseek.py +++ b/examples/foundational/14l-function-calling-deepseek.py @@ -147,6 +147,6 @@ Start by asking me for my location. Then, use 'get_weather_current' to give me a if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14m-function-calling-openrouter.py b/examples/foundational/14m-function-calling-openrouter.py index fd612aa92..13487b3b6 100644 --- a/examples/foundational/14m-function-calling-openrouter.py +++ b/examples/foundational/14m-function-calling-openrouter.py @@ -141,6 +141,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14n-function-calling-perplexity.py b/examples/foundational/14n-function-calling-perplexity.py index 8539dc2db..c4a70d627 100644 --- a/examples/foundational/14n-function-calling-perplexity.py +++ b/examples/foundational/14n-function-calling-perplexity.py @@ -114,6 +114,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14o-function-calling-gemini-openai-format.py b/examples/foundational/14o-function-calling-gemini-openai-format.py index 08d82eee3..8e1e0fdf1 100644 --- a/examples/foundational/14o-function-calling-gemini-openai-format.py +++ b/examples/foundational/14o-function-calling-gemini-openai-format.py @@ -136,6 +136,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14p-function-calling-gemini-vertex-ai.py b/examples/foundational/14p-function-calling-gemini-vertex-ai.py index 86307e5a4..42567787a 100644 --- a/examples/foundational/14p-function-calling-gemini-vertex-ai.py +++ b/examples/foundational/14p-function-calling-gemini-vertex-ai.py @@ -142,6 +142,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14q-function-calling-qwen.py b/examples/foundational/14q-function-calling-qwen.py index 520e675e0..d3740d25f 100644 --- a/examples/foundational/14q-function-calling-qwen.py +++ b/examples/foundational/14q-function-calling-qwen.py @@ -139,6 +139,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/14r-function-calling-aws.py b/examples/foundational/14r-function-calling-aws.py index 923fb3423..f7796157a 100644 --- a/examples/foundational/14r-function-calling-aws.py +++ b/examples/foundational/14r-function-calling-aws.py @@ -143,6 +143,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/15-switch-voices.py b/examples/foundational/15-switch-voices.py index 44372b120..0735b62c0 100644 --- a/examples/foundational/15-switch-voices.py +++ b/examples/foundational/15-switch-voices.py @@ -172,6 +172,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/15a-switch-languages.py b/examples/foundational/15a-switch-languages.py index fb7a401e8..48bc7e63b 100644 --- a/examples/foundational/15a-switch-languages.py +++ b/examples/foundational/15a-switch-languages.py @@ -160,6 +160,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/16-gpu-container-local-bot.py b/examples/foundational/16-gpu-container-local-bot.py index 2b6f18576..c13c2bbff 100644 --- a/examples/foundational/16-gpu-container-local-bot.py +++ b/examples/foundational/16-gpu-container-local-bot.py @@ -143,6 +143,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/17-detect-user-idle.py b/examples/foundational/17-detect-user-idle.py index 66bc2be52..8f5e3ba1d 100644 --- a/examples/foundational/17-detect-user-idle.py +++ b/examples/foundational/17-detect-user-idle.py @@ -141,6 +141,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/18-gstreamer-filesrc.py b/examples/foundational/18-gstreamer-filesrc.py index 123b76e07..94cbaed84 100644 --- a/examples/foundational/18-gstreamer-filesrc.py +++ b/examples/foundational/18-gstreamer-filesrc.py @@ -66,7 +66,7 @@ async def run_example(transport: BaseTransport, args: argparse.Namespace, handle if __name__ == "__main__": - from run import main + from pipecat.examples.run import main parser = argparse.ArgumentParser(description="Pipecat Bot Runner") parser.add_argument("-i", "--input", type=str, required=True, help="Input video file") diff --git a/examples/foundational/18a-gstreamer-videotestsrc.py b/examples/foundational/18a-gstreamer-videotestsrc.py index f5cf64d60..91b7535bd 100644 --- a/examples/foundational/18a-gstreamer-videotestsrc.py +++ b/examples/foundational/18a-gstreamer-videotestsrc.py @@ -62,6 +62,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/19-openai-realtime-beta.py b/examples/foundational/19-openai-realtime-beta.py index 307eb11d3..f1dd7269d 100644 --- a/examples/foundational/19-openai-realtime-beta.py +++ b/examples/foundational/19-openai-realtime-beta.py @@ -183,6 +183,6 @@ Remember, your responses should be short. Just one or two sentences, usually.""" if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/19a-azure-realtime-beta.py b/examples/foundational/19a-azure-realtime-beta.py index 12cb259ba..76180e397 100644 --- a/examples/foundational/19a-azure-realtime-beta.py +++ b/examples/foundational/19a-azure-realtime-beta.py @@ -182,6 +182,6 @@ Remember, your responses should be short. Just one or two sentences, usually.""" if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/20a-persistent-context-openai.py b/examples/foundational/20a-persistent-context-openai.py index 285d902f7..360d5f659 100644 --- a/examples/foundational/20a-persistent-context-openai.py +++ b/examples/foundational/20a-persistent-context-openai.py @@ -247,6 +247,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/20b-persistent-context-openai-realtime.py b/examples/foundational/20b-persistent-context-openai-realtime.py index 799108066..a1ea1f4c5 100644 --- a/examples/foundational/20b-persistent-context-openai-realtime.py +++ b/examples/foundational/20b-persistent-context-openai-realtime.py @@ -257,6 +257,6 @@ Remember, your responses should be short. Just one or two sentences, usually.""" if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/20c-persistent-context-anthropic.py b/examples/foundational/20c-persistent-context-anthropic.py index ef5ec0ee9..686bed5a7 100644 --- a/examples/foundational/20c-persistent-context-anthropic.py +++ b/examples/foundational/20c-persistent-context-anthropic.py @@ -246,6 +246,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/20d-persistent-context-gemini.py b/examples/foundational/20d-persistent-context-gemini.py index 131f32420..c3bba48cf 100644 --- a/examples/foundational/20d-persistent-context-gemini.py +++ b/examples/foundational/20d-persistent-context-gemini.py @@ -12,10 +12,10 @@ from datetime import datetime from dotenv import load_dotenv from loguru import logger -from run import get_transport_client_id, maybe_capture_participant_video from pipecat.audio.vad.silero import SileroVADAnalyzer from pipecat.audio.vad.vad_analyzer import VADParams +from pipecat.examples.run import get_transport_client_id, maybe_capture_participant_video from pipecat.pipeline.pipeline import Pipeline from pipecat.pipeline.runner import PipelineRunner from pipecat.pipeline.task import PipelineParams, PipelineTask @@ -305,6 +305,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/20e-persistent-context-aws-nova-sonic.py b/examples/foundational/20e-persistent-context-aws-nova-sonic.py index 5c848d6f5..86630ce6d 100644 --- a/examples/foundational/20e-persistent-context-aws-nova-sonic.py +++ b/examples/foundational/20e-persistent-context-aws-nova-sonic.py @@ -270,6 +270,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/21a-tavus-video-service.py b/examples/foundational/21a-tavus-video-service.py index 59109f119..db79d343d 100644 --- a/examples/foundational/21a-tavus-video-service.py +++ b/examples/foundational/21a-tavus-video-service.py @@ -126,6 +126,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/22-natural-conversation.py b/examples/foundational/22-natural-conversation.py index 6fe26e053..0a49f141c 100644 --- a/examples/foundational/22-natural-conversation.py +++ b/examples/foundational/22-natural-conversation.py @@ -172,6 +172,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/22b-natural-conversation-proposal.py b/examples/foundational/22b-natural-conversation-proposal.py index 1c3c9ee6e..58259b266 100644 --- a/examples/foundational/22b-natural-conversation-proposal.py +++ b/examples/foundational/22b-natural-conversation-proposal.py @@ -397,6 +397,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/22c-natural-conversation-mixed-llms.py b/examples/foundational/22c-natural-conversation-mixed-llms.py index 391b39329..7d6a1ce18 100644 --- a/examples/foundational/22c-natural-conversation-mixed-llms.py +++ b/examples/foundational/22c-natural-conversation-mixed-llms.py @@ -604,6 +604,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/22d-natural-conversation-gemini-audio.py b/examples/foundational/22d-natural-conversation-gemini-audio.py index f87a776e6..b6b66db0c 100644 --- a/examples/foundational/22d-natural-conversation-gemini-audio.py +++ b/examples/foundational/22d-natural-conversation-gemini-audio.py @@ -783,6 +783,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/23-bot-background-sound.py b/examples/foundational/23-bot-background-sound.py index e72ea0614..098a62f86 100644 --- a/examples/foundational/23-bot-background-sound.py +++ b/examples/foundational/23-bot-background-sound.py @@ -138,6 +138,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/24-stt-mute-filter.py b/examples/foundational/24-stt-mute-filter.py index 981e91957..c1c4580fd 100644 --- a/examples/foundational/24-stt-mute-filter.py +++ b/examples/foundational/24-stt-mute-filter.py @@ -146,6 +146,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/25-google-audio-in.py b/examples/foundational/25-google-audio-in.py index f97e91832..83005a3ed 100644 --- a/examples/foundational/25-google-audio-in.py +++ b/examples/foundational/25-google-audio-in.py @@ -380,6 +380,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/26-gemini-multimodal-live.py b/examples/foundational/26-gemini-multimodal-live.py index 13036fb43..03c063982 100644 --- a/examples/foundational/26-gemini-multimodal-live.py +++ b/examples/foundational/26-gemini-multimodal-live.py @@ -119,6 +119,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/26a-gemini-multimodal-live-transcription.py b/examples/foundational/26a-gemini-multimodal-live-transcription.py index 6765dbab5..9da336459 100644 --- a/examples/foundational/26a-gemini-multimodal-live-transcription.py +++ b/examples/foundational/26a-gemini-multimodal-live-transcription.py @@ -139,6 +139,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/26b-gemini-multimodal-live-function-calling.py b/examples/foundational/26b-gemini-multimodal-live-function-calling.py index 7087f5766..84c7d5045 100644 --- a/examples/foundational/26b-gemini-multimodal-live-function-calling.py +++ b/examples/foundational/26b-gemini-multimodal-live-function-calling.py @@ -155,6 +155,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/26c-gemini-multimodal-live-video.py b/examples/foundational/26c-gemini-multimodal-live-video.py index 511ae3346..ee25bcb23 100644 --- a/examples/foundational/26c-gemini-multimodal-live-video.py +++ b/examples/foundational/26c-gemini-multimodal-live-video.py @@ -111,6 +111,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/26d-gemini-multimodal-live-text.py b/examples/foundational/26d-gemini-multimodal-live-text.py index da388deda..036e383b9 100644 --- a/examples/foundational/26d-gemini-multimodal-live-text.py +++ b/examples/foundational/26d-gemini-multimodal-live-text.py @@ -142,6 +142,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/26e-gemini-multimodal-google-search.py b/examples/foundational/26e-gemini-multimodal-google-search.py index 5fc1d8d1e..8638dfc11 100644 --- a/examples/foundational/26e-gemini-multimodal-google-search.py +++ b/examples/foundational/26e-gemini-multimodal-google-search.py @@ -126,6 +126,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/27-simli-layer.py b/examples/foundational/27-simli-layer.py index 1b3faba39..9f7f6aa38 100644 --- a/examples/foundational/27-simli-layer.py +++ b/examples/foundational/27-simli-layer.py @@ -113,6 +113,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/28-transcription-processor.py b/examples/foundational/28-transcription-processor.py index 2cb0f3122..d8211071c 100644 --- a/examples/foundational/28-transcription-processor.py +++ b/examples/foundational/28-transcription-processor.py @@ -175,6 +175,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/29-turn-tracking-observer.py b/examples/foundational/29-turn-tracking-observer.py index 267b95f2f..987ef372f 100644 --- a/examples/foundational/29-turn-tracking-observer.py +++ b/examples/foundational/29-turn-tracking-observer.py @@ -124,6 +124,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/30-observer.py b/examples/foundational/30-observer.py index ad0a8cace..c8172d2fa 100644 --- a/examples/foundational/30-observer.py +++ b/examples/foundational/30-observer.py @@ -169,6 +169,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/32-gemini-grounding-metadata.py b/examples/foundational/32-gemini-grounding-metadata.py index 3dba663d9..47b94b979 100644 --- a/examples/foundational/32-gemini-grounding-metadata.py +++ b/examples/foundational/32-gemini-grounding-metadata.py @@ -150,6 +150,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/33-gemini-rag.py b/examples/foundational/33-gemini-rag.py index 9653e5f2f..b1c88f289 100644 --- a/examples/foundational/33-gemini-rag.py +++ b/examples/foundational/33-gemini-rag.py @@ -261,6 +261,6 @@ Your response will be turned into speech so use only simple words and punctuatio if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/34-audio-recording.py b/examples/foundational/34-audio-recording.py index 7922c0b7e..5c6b60d72 100644 --- a/examples/foundational/34-audio-recording.py +++ b/examples/foundational/34-audio-recording.py @@ -188,6 +188,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/35-pattern-pair-voice-switching.py b/examples/foundational/35-pattern-pair-voice-switching.py index b753967a9..2663380be 100644 --- a/examples/foundational/35-pattern-pair-voice-switching.py +++ b/examples/foundational/35-pattern-pair-voice-switching.py @@ -234,6 +234,6 @@ Remember: Use narrator voice for EVERYTHING except the actual quoted dialogue."" if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/36-user-email-gathering.py b/examples/foundational/36-user-email-gathering.py index 58be17224..47996a492 100644 --- a/examples/foundational/36-user-email-gathering.py +++ b/examples/foundational/36-user-email-gathering.py @@ -152,6 +152,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/37-mem0.py b/examples/foundational/37-mem0.py index 35d410297..654a53a80 100644 --- a/examples/foundational/37-mem0.py +++ b/examples/foundational/37-mem0.py @@ -292,6 +292,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/38-smart-turn-fal.py b/examples/foundational/38-smart-turn-fal.py index 12d971232..1fa8a2891 100644 --- a/examples/foundational/38-smart-turn-fal.py +++ b/examples/foundational/38-smart-turn-fal.py @@ -124,6 +124,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/38a-smart-turn-local-coreml.py b/examples/foundational/38a-smart-turn-local-coreml.py index 87e193674..ceedfcfbe 100644 --- a/examples/foundational/38a-smart-turn-local-coreml.py +++ b/examples/foundational/38a-smart-turn-local-coreml.py @@ -137,6 +137,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/38b-smart-turn-local.py b/examples/foundational/38b-smart-turn-local.py index 850f5d640..42fec18ad 100644 --- a/examples/foundational/38b-smart-turn-local.py +++ b/examples/foundational/38b-smart-turn-local.py @@ -137,6 +137,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/39-mcp-stdio.py b/examples/foundational/39-mcp-stdio.py index f71a4f0b4..235a38523 100644 --- a/examples/foundational/39-mcp-stdio.py +++ b/examples/foundational/39-mcp-stdio.py @@ -192,6 +192,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/39a-mcp-run-sse.py b/examples/foundational/39a-mcp-run-sse.py index cae94a037..c02245174 100644 --- a/examples/foundational/39a-mcp-run-sse.py +++ b/examples/foundational/39a-mcp-run-sse.py @@ -123,6 +123,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/39b-multiple-mcp.py b/examples/foundational/39b-multiple-mcp.py index fc2e53122..fe2869a52 100644 --- a/examples/foundational/39b-multiple-mcp.py +++ b/examples/foundational/39b-multiple-mcp.py @@ -202,6 +202,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/40-aws-nova-sonic.py b/examples/foundational/40-aws-nova-sonic.py index 7f57a24d8..38fc4c189 100644 --- a/examples/foundational/40-aws-nova-sonic.py +++ b/examples/foundational/40-aws-nova-sonic.py @@ -173,6 +173,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/41a-text-only-webrtc.py b/examples/foundational/41a-text-only-webrtc.py index f27bcca76..0125a41c4 100644 --- a/examples/foundational/41a-text-only-webrtc.py +++ b/examples/foundational/41a-text-only-webrtc.py @@ -157,6 +157,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/foundational/41b-text-and-audio-webrtc.py b/examples/foundational/41b-text-and-audio-webrtc.py index 1d7e4cfa5..57adbfdfc 100644 --- a/examples/foundational/41b-text-and-audio-webrtc.py +++ b/examples/foundational/41b-text-and-audio-webrtc.py @@ -174,6 +174,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/open-telemetry/jaeger/bot.py b/examples/open-telemetry/jaeger/bot.py index 0fb8bfd2e..74e587410 100644 --- a/examples/open-telemetry/jaeger/bot.py +++ b/examples/open-telemetry/jaeger/bot.py @@ -162,6 +162,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from ..run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/open-telemetry/langfuse/bot.py b/examples/open-telemetry/langfuse/bot.py index eb1ed0748..22ff399a0 100644 --- a/examples/open-telemetry/langfuse/bot.py +++ b/examples/open-telemetry/langfuse/bot.py @@ -159,6 +159,6 @@ async def run_example(transport: BaseTransport, _: argparse.Namespace, handle_si if __name__ == "__main__": - from ..run import main + from pipecat.examples.run import main main(run_example, transport_params=transport_params) diff --git a/examples/open-telemetry/run.py b/examples/open-telemetry/run.py deleted file mode 100644 index 101efc96a..000000000 --- a/examples/open-telemetry/run.py +++ /dev/null @@ -1,235 +0,0 @@ -# -# Copyright (c) 2024–2025, Daily -# -# SPDX-License-Identifier: BSD 2-Clause License -# - -import argparse -import asyncio -import json -import os -import sys -from contextlib import asynccontextmanager -from typing import Callable, Dict, Mapping, Optional - -import aiohttp -import uvicorn -from daily_runner import configure -from dotenv import load_dotenv -from fastapi import BackgroundTasks, FastAPI, WebSocket -from fastapi.middleware.cors import CORSMiddleware -from fastapi.responses import HTMLResponse, RedirectResponse -from loguru import logger - -from pipecat.serializers.twilio import TwilioFrameSerializer -from pipecat.transports.base_transport import TransportParams -from pipecat.transports.network.fastapi_websocket import ( - FastAPIWebsocketParams, - FastAPIWebsocketTransport, -) -from pipecat.transports.network.small_webrtc import SmallWebRTCTransport -from pipecat.transports.network.webrtc_connection import IceServer, SmallWebRTCConnection -from pipecat.transports.services.daily import DailyParams, DailyTransport - -# Load environment variables -load_dotenv(override=True) - - -def run_example_daily( - run_example: Callable, - args: argparse.Namespace, - params: DailyParams, -): - logger.info("Running example with DailyTransport...") - - async def run(): - async with aiohttp.ClientSession() as session: - (room_url, token) = await configure(session) - - # Run example function with DailyTransport transport arguments. - transport = DailyTransport(room_url, token, "Pipecat", params=params) - await run_example(transport, args, True) - - asyncio.run(run()) - - -def run_example_webrtc( - run_example: Callable, - args: argparse.Namespace, - params: TransportParams, -): - logger.info("Running example with SmallWebRTCTransport...") - - from pipecat_ai_small_webrtc_prebuilt.frontend import SmallWebRTCPrebuiltUI - - app = FastAPI() - - # Store connections by pc_id - pcs_map: Dict[str, SmallWebRTCConnection] = {} - - ice_servers = [ - IceServer( - urls="stun:stun.l.google.com:19302", - ) - ] - - # Mount the frontend at / - app.mount("/client", SmallWebRTCPrebuiltUI) - - @app.get("/", include_in_schema=False) - async def root_redirect(): - return RedirectResponse(url="/client/") - - @app.post("/api/offer") - async def offer(request: dict, background_tasks: BackgroundTasks): - pc_id = request.get("pc_id") - - if pc_id and pc_id in pcs_map: - pipecat_connection = pcs_map[pc_id] - logger.info(f"Reusing existing connection for pc_id: {pc_id}") - await pipecat_connection.renegotiate( - sdp=request["sdp"], - type=request["type"], - restart_pc=request.get("restart_pc", False), - ) - else: - pipecat_connection = SmallWebRTCConnection(ice_servers) - await pipecat_connection.initialize(sdp=request["sdp"], type=request["type"]) - - @pipecat_connection.event_handler("closed") - async def handle_disconnected(webrtc_connection: SmallWebRTCConnection): - logger.info(f"Discarding peer connection for pc_id: {webrtc_connection.pc_id}") - pcs_map.pop(webrtc_connection.pc_id, None) - - # Run example function with SmallWebRTC transport arguments. - transport = SmallWebRTCTransport(params=params, webrtc_connection=pipecat_connection) - background_tasks.add_task(run_example, transport, args, False) - - answer = pipecat_connection.get_answer() - # Updating the peer connection inside the map - pcs_map[answer["pc_id"]] = pipecat_connection - - return answer - - @asynccontextmanager - async def lifespan(app: FastAPI): - yield # Run app - coros = [pc.close() for pc in pcs_map.values()] - await asyncio.gather(*coros) - pcs_map.clear() - - uvicorn.run(app, host=args.host, port=args.port) - - -def run_example_twilio( - run_example: Callable, - args: argparse.Namespace, - params: FastAPIWebsocketParams, -): - logger.info("Running example with FastAPIWebsocketTransport (Twilio)...") - - app = FastAPI() - - app.add_middleware( - CORSMiddleware, - allow_origins=["*"], # Allow all origins for testing - allow_credentials=True, - allow_methods=["*"], - allow_headers=["*"], - ) - - @app.post("/") - async def start_call(): - logger.debug("POST TwiML") - - xml_content = f""" - - - - - - - """ - return HTMLResponse(content=xml_content, media_type="application/xml") - - @app.websocket("/ws") - async def websocket_endpoint(websocket: WebSocket): - await websocket.accept() - - logger.debug("WebSocket connection accepted") - - # Reading Twilio data. - start_data = websocket.iter_text() - await start_data.__anext__() - call_data = json.loads(await start_data.__anext__()) - print(call_data, flush=True) - stream_sid = call_data["start"]["streamSid"] - call_sid = call_data["start"]["callSid"] - - # Create websocket transport and update params. - params.add_wav_header = False - params.serializer = TwilioFrameSerializer( - stream_sid=stream_sid, - call_sid=call_sid, - account_sid=os.getenv("TWILIO_ACCOUNT_SID", ""), - auth_token=os.getenv("TWILIO_AUTH_TOKEN", ""), - ) - transport = FastAPIWebsocketTransport(websocket=websocket, params=params) - await run_example(transport, args, False) - - uvicorn.run(app, host=args.host, port=args.port) - - -def run_main( - run_example: Callable, - args: argparse.Namespace, - transport_params: Mapping[str, Callable] = {}, -): - if args.transport not in transport_params: - logger.error(f"Transport '{args.transport}' not supported by this example") - return - - params = transport_params[args.transport]() - match args.transport: - case "daily": - run_example_daily(run_example, args, params) - case "webrtc": - run_example_webrtc(run_example, args, params) - case "twilio": - run_example_twilio(run_example, args, params) - - -def main( - run_example: Callable, - *, - parser: Optional[argparse.ArgumentParser] = None, - transport_params: Mapping[str, Callable] = {}, -): - if not parser: - parser = argparse.ArgumentParser(description="Pipecat Bot Runner") - parser.add_argument( - "--host", default="localhost", help="Host for HTTP server (default: localhost)" - ) - parser.add_argument( - "--port", type=int, default=7860, help="Port for HTTP server (default: 7860)" - ) - parser.add_argument( - "--transport", - "-t", - type=str, - choices=["daily", "webrtc", "twilio"], - default="webrtc", - help="The transport this example should use", - ) - parser.add_argument( - "--proxy", "-x", help="A public proxy host name (no protocol, e.g. proxy.example.com)" - ) - parser.add_argument("--verbose", "-v", action="count", default=0) - args = parser.parse_args() - - # Log level - logger.remove(0) - logger.add(sys.stderr, level="TRACE" if args.verbose else "DEBUG") - - # Import the bot file - run_main(run_example, args, transport_params) diff --git a/src/pipecat/examples/__init__.py b/src/pipecat/examples/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/examples/foundational/daily_runner.py b/src/pipecat/examples/daily_runner.py similarity index 100% rename from examples/foundational/daily_runner.py rename to src/pipecat/examples/daily_runner.py diff --git a/examples/foundational/run.py b/src/pipecat/examples/run.py similarity index 99% rename from examples/foundational/run.py rename to src/pipecat/examples/run.py index 65a4e94b3..4d215e8b1 100644 --- a/examples/foundational/run.py +++ b/src/pipecat/examples/run.py @@ -58,7 +58,7 @@ def run_example_daily( ): logger.info("Running example with DailyTransport...") - from daily_runner import configure + from pipecat.examples.daily_runner import configure async def run(): async with aiohttp.ClientSession() as session: