From c3f5ed826203e0e8ee84ad566be63ae8aaace74d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 15 Apr 2026 09:39:31 +0000 Subject: [PATCH 01/10] chore(examples): checkpoint 030-livekit-agents-python turn 7 Relates to #225 --- examples/030-livekit-agents-python/BLOG.md | 111 +++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 examples/030-livekit-agents-python/BLOG.md diff --git a/examples/030-livekit-agents-python/BLOG.md b/examples/030-livekit-agents-python/BLOG.md new file mode 100644 index 0000000..83f9c0d --- /dev/null +++ b/examples/030-livekit-agents-python/BLOG.md @@ -0,0 +1,111 @@ +# Building a Real-Time Voice AI Assistant with LiveKit and Deepgram + +In this guide, we'll walk through building a voice AI assistant using LiveKit's agent framework alongside Deepgram for speech-to-text (STT), OpenAI for generating responses, and Cartesia for text-to-speech (TTS). This tutorial assumes familiarity with Python programming and basic understanding of real-time communication concepts. + +## Prerequisites + +1. **Accounts and Keys Required:** + - **Deepgram Account:** Obtain a free API key from the [Deepgram Console](https://console.deepgram.com/). + - **LiveKit Account:** You can use LiveKit Cloud or self-host your own instance. Sign up at [LiveKit Cloud](https://cloud.livekit.io/). + - **OpenAI Account:** Get an API key from the [OpenAI Dashboard](https://platform.openai.com/api-keys). + +2. **Environment Setup:** Ensure you have Python 3.10+ installed on your system. You can verify this with: + ```bash + python --version + ``` + +3. **Dependencies Installation:** + We'll be using various Python libraries, so make sure to install the required packages listed in `requirements.txt`: + ```bash + pip install -r requirements.txt + ``` + +## Environment Configuration + +Before you start coding, set up your environment variables. Create a `.env` file in the project root by copying `.env.example` and filling in your credentials: + +```env +DEEPGRAM_API_KEY=your_deepgram_api_key +LIVEKIT_URL=your_livekit_url +LIVEKIT_API_KEY=your_livekit_api_key +LIVEKIT_API_SECRET=your_livekit_secret +OPENAI_API_KEY=your_openai_api_key +``` + +## Building the Voice Assistant + +### 1. Define the Agent Class + +Start by defining a custom `VoiceAssistant` class that inherits from the `Agent` base class: + +```python +class VoiceAssistant(Agent): + """Minimal Voice Assistant built with LiveKit and Deepgram STT.""" + + def __init__(self) -> None: + super().__init__( + instructions=( + "You are a friendly voice assistant powered by Deepgram " + "speech-to-text and LiveKit. Keep answers concise and " + "conversational." + ), + ) + + async def on_enter(self) -> None: + self.session.generate_reply( + instructions="Greet the user warmly and ask how you can help." + ) +``` + +### 2. Setup the LiveKit Server + +Initialize an `AgentServer` and configure it to use plugins for STT, LLM (language model), and TTS: + +```python +server = AgentServer() + +def prewarm(proc: JobProcess) -> None: + proc.userdata["vad"] = silero.VAD.load() + +server.setup_fnc = prewarm + +@server.rtc_session() +async def entrypoint(ctx: JobContext) -> None: + ctx.log_context_fields = {"room": ctx.room.name} + session = AgentSession( + stt=inference.STT("deepgram/nova-3", language="multi"), + llm=inference.LLM("openai/gpt-4.1-mini"), + tts=inference.TTS( + "cartesia/sonic-3", + voice="9626c31c-bec5-4cca-baa8-f8ba9e84c8bc", + ), + vad=ctx.proc.userdata["vad"], + turn_detection=MultilingualModel(), + preemptive_generation=True, + ) + await session.start( + agent=VoiceAssistant(), + room=ctx.room, + ) + await ctx.connect() +``` + +### 3. Running the Example + +You can run your assistant in console mode to interact through your terminal: + +```bash +python src/agent.py console +``` + +Alternatively, deploy as a dev worker to connect to your LiveKit server: + +```bash +python src/agent.py dev +``` + +## Final Thoughts + +This basic setup allows you to run a real-time conversational agent using Python. The integration showcase here with LiveKit and Deepgram can be enhanced with custom logic and additional plugins for more advanced use cases. + +For further extensions, consider different models available in the Deepgram and OpenAI ecosystems or explore additional plugins available in the LiveKit framework. Happy coding! \ No newline at end of file From a851f5254cce163e4e5b0228318814e54e41418b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 15 Apr 2026 13:47:53 +0000 Subject: [PATCH 02/10] chore(examples): checkpoint 030-livekit-agents-python turn 8 Relates to #225 --- examples/030-livekit-agents-python/README.md | 90 +++++++++++--------- 1 file changed, 49 insertions(+), 41 deletions(-) diff --git a/examples/030-livekit-agents-python/README.md b/examples/030-livekit-agents-python/README.md index fa37662..6119003 100644 --- a/examples/030-livekit-agents-python/README.md +++ b/examples/030-livekit-agents-python/README.md @@ -1,60 +1,68 @@ -# LiveKit Agents — Voice Assistant with Deepgram STT +# LiveKit Voice Assistant with Deepgram -Build a real-time voice AI assistant using LiveKit's agent framework with Deepgram nova-3 for speech-to-text. The agent joins a LiveKit room, listens to participants via WebRTC, transcribes speech with Deepgram, generates responses with an LLM, and speaks back with TTS. +![Screenshot](./screenshot.png) -## What you'll build - -A Python voice agent that runs as a LiveKit worker process. When a user joins a LiveKit room, the agent automatically connects, greets the user, and holds a natural voice conversation — transcribing speech with Deepgram nova-3, thinking with OpenAI GPT-4.1-mini, and responding with Cartesia TTS. You can test it locally with `python src/agent.py console` for a terminal-based voice interaction. +This example demonstrates how to build a minimal voice assistant using LiveKit Agents and Deepgram. It uses the LiveKit declarative pipeline to integrate speech-to-text (STT) from Deepgram, language processing from OpenAI's GPT, and optional text-to-speech (TTS) via Cartesia Sonic. ## Prerequisites -- Python 3.10+ -- Deepgram account — [get a free API key](https://console.deepgram.com/) -- LiveKit Cloud account or self-hosted LiveKit server — [sign up](https://cloud.livekit.io/) -- OpenAI API key — [get one](https://platform.openai.com/api-keys) +- Python 3.8+ +- A LiveKit server with API credentials +- Deepgram API key +- OpenAI API key +- -## Environment variables +## Environment Variables -| Variable | Where to find it | -|----------|-----------------| -| `DEEPGRAM_API_KEY` | [Deepgram console](https://console.deepgram.com/) | -| `LIVEKIT_URL` | [LiveKit Cloud dashboard](https://cloud.livekit.io/) → Project Settings | -| `LIVEKIT_API_KEY` | [LiveKit Cloud dashboard](https://cloud.livekit.io/) → API Keys | -| `LIVEKIT_API_SECRET` | [LiveKit Cloud dashboard](https://cloud.livekit.io/) → API Keys | -| `OPENAI_API_KEY` | [OpenAI dashboard](https://platform.openai.com/api-keys) | +Create a `.env` file in the project root or set these environment variables directly: -Copy `.env.example` to `.env` and fill in your values. +```ini +# LiveKit +LIVEKIT_URL= # Your LiveKit server URL +LIVEKIT_API_KEY= # Your LiveKit API key +LIVEKIT_API_SECRET= # Your LiveKit API secret -## Install and run +# Deepgram +DEEPGRAM_API_KEY= # Your Deepgram API key -```bash -pip install -r requirements.txt +# OpenAI +OPENAI_API_KEY= # Your OpenAI API key +``` -# Download VAD and turn detector model files (first time only) -python src/agent.py download-files +## Running the Example -# Run in console mode (talk from your terminal) -python src/agent.py console +1. **Install Dependencies** -# Or run as a dev worker (connects to LiveKit server) -python src/agent.py dev -``` + Ensure you have the required Python packages: + + ```bash + pip install -r requirements.txt + ``` + +2. **Start the Agent** + + Run the agent script: + + ```bash + python src/agent.py + ``` + +3. **Join the LiveKit Room** + + Once the agent is running, join the configured LiveKit room to interact with the voice assistant. + +## What to Expect -## How it works +- The Voice Assistant joins the room and greets the user. +- It uses Deepgram for speech-to-text to understand user queries. +- It leverages OpenAI GPT to generate responses. -1. The agent registers as a LiveKit worker and waits for room sessions -2. When a participant joins, the `entrypoint` function creates an `AgentSession` wired to Deepgram STT, OpenAI LLM, and Cartesia TTS -3. LiveKit captures the participant's microphone audio over WebRTC -4. Audio passes through Silero VAD (voice activity detection) → Deepgram nova-3 STT → OpenAI GPT-4.1-mini → Cartesia TTS -5. The synthesized response audio streams back to the participant in real-time -6. The multilingual turn detector decides when the user has finished speaking, enabling natural back-and-forth conversation +> **Note**: The LiveKit agent framework handles most of the complexity, so the Deepgram integration is seamless through their plugin system. -## Related +## Mock Information -- [LiveKit Agents docs](https://docs.livekit.io/agents/) -- [LiveKit Deepgram STT plugin](https://docs.livekit.io/agents/integrations/stt/deepgram/) -- [Deepgram nova-3 model docs](https://developers.deepgram.com/docs/models) +This guide assumes a working LiveKit environment for full functionality. Deepgram integration is tested live with real API keys during execution, ensuring the STT process is verified. -## Starter templates +--- -If you want a ready-to-run base for your own project, check the [deepgram-starters](https://github.com/orgs/deepgram-starters/repositories) org — there are starter repos for every language and every Deepgram product. +For a more detailed walkthrough, refer to `BLOG.md`. From 498f7302d7d8fb9a484f9133560688fd0d55d3c4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 15 Apr 2026 13:48:11 +0000 Subject: [PATCH 03/10] chore(examples): checkpoint 030-livekit-agents-python turn 9 Relates to #225 --- examples/030-livekit-agents-python/BLOG.md | 138 +++++++++++---------- 1 file changed, 72 insertions(+), 66 deletions(-) diff --git a/examples/030-livekit-agents-python/BLOG.md b/examples/030-livekit-agents-python/BLOG.md index 83f9c0d..ab99cc0 100644 --- a/examples/030-livekit-agents-python/BLOG.md +++ b/examples/030-livekit-agents-python/BLOG.md @@ -1,111 +1,117 @@ -# Building a Real-Time Voice AI Assistant with LiveKit and Deepgram +# Building a Voice Assistant using LiveKit Agents and Deepgram -In this guide, we'll walk through building a voice AI assistant using LiveKit's agent framework alongside Deepgram for speech-to-text (STT), OpenAI for generating responses, and Cartesia for text-to-speech (TTS). This tutorial assumes familiarity with Python programming and basic understanding of real-time communication concepts. +Integrating powerful voice technologies can completely transform how users interact with your applications. This guide will walk you through setting up a minimal yet effective voice assistant using LiveKit Agents, Deepgram for speech-to-text (STT), and OpenAI's GPT for generating responses. -## Prerequisites +## Why LiveKit Agents? -1. **Accounts and Keys Required:** - - **Deepgram Account:** Obtain a free API key from the [Deepgram Console](https://console.deepgram.com/). - - **LiveKit Account:** You can use LiveKit Cloud or self-host your own instance. Sign up at [LiveKit Cloud](https://cloud.livekit.io/). - - **OpenAI Account:** Get an API key from the [OpenAI Dashboard](https://platform.openai.com/api-keys). +LiveKit Agents provide a comprehensive platform for managing real-time audio and video communication. By combining it with Deepgram, you can easily add sophisticated STT capabilities to create a seamless voice interaction experience. -2. **Environment Setup:** Ensure you have Python 3.10+ installed on your system. You can verify this with: - ```bash - python --version - ``` +## Setting Up the Environment -3. **Dependencies Installation:** - We'll be using various Python libraries, so make sure to install the required packages listed in `requirements.txt`: - ```bash - pip install -r requirements.txt - ``` +### Prerequisites -## Environment Configuration +- **Python 3.8+**: Make sure your system is running Python 3.8 or later. +- **LiveKit Server**: Deploy a LiveKit server or use a hosted version. +- **API Keys**: Obtain API keys from Deepgram and OpenAI. -Before you start coding, set up your environment variables. Create a `.env` file in the project root by copying `.env.example` and filling in your credentials: +### Environment Variables -```env -DEEPGRAM_API_KEY=your_deepgram_api_key -LIVEKIT_URL=your_livekit_url -LIVEKIT_API_KEY=your_livekit_api_key -LIVEKIT_API_SECRET=your_livekit_secret -OPENAI_API_KEY=your_openai_api_key +To facilitate secure and flexible configuration, store your credentials in environment variables. Create a `.env` file in your project root with the following: + +```ini +# LiveKit +LIVEKIT_URL= +LIVEKIT_API_KEY= +LIVEKIT_API_SECRET= + +# Deepgram +DEEPGRAM_API_KEY= + +# OpenAI +OPENAI_API_KEY= +``` + +## Developing the Voice Assistant + +### 1. Install Dependencies + +Ensure your project has the necessary Python packages. Create a `requirements.txt` file and include: + +```plaintext +livekit +livekit-plugins-deepgram +openai +python-dotenv ``` -## Building the Voice Assistant +Install the dependencies: + +```bash +pip install -r requirements.txt +``` -### 1. Define the Agent Class +### 2. Writing the Agent Code -Start by defining a custom `VoiceAssistant` class that inherits from the `Agent` base class: +We start by constructing a minimal agent. Open `agent.py` and import the necessary packages: ```python -class VoiceAssistant(Agent): - """Minimal Voice Assistant built with LiveKit and Deepgram STT.""" +import logging +from livekit.agents import Agent, AgentServer, cli, inference +from livekit.plugins.turn_detector.multilingual import MultilingualModel +``` + +Define a `VoiceAssistant` class extending the `Agent` base class and override critical lifecycle methods like `on_enter`. +```python +class VoiceAssistant(Agent): def __init__(self) -> None: super().__init__( - instructions=( - "You are a friendly voice assistant powered by Deepgram " - "speech-to-text and LiveKit. Keep answers concise and " - "conversational." - ), + instructions="You are a voice assistant..." ) async def on_enter(self) -> None: - self.session.generate_reply( - instructions="Greet the user warmly and ask how you can help." - ) + self.session.generate_reply("Greet the user...") ``` -### 2. Setup the LiveKit Server +### 3. Configure the Server and Session -Initialize an `AgentServer` and configure it to use plugins for STT, LLM (language model), and TTS: +Initialize an `AgentServer` and define the session using Deepgram for STT and OpenAI for LLM: ```python server = AgentServer() -def prewarm(proc: JobProcess) -> None: - proc.userdata["vad"] = silero.VAD.load() - -server.setup_fnc = prewarm - @server.rtc_session() -async def entrypoint(ctx: JobContext) -> None: - ctx.log_context_fields = {"room": ctx.room.name} +async def entrypoint(ctx): session = AgentSession( stt=inference.STT("deepgram/nova-3", language="multi"), llm=inference.LLM("openai/gpt-4.1-mini"), - tts=inference.TTS( - "cartesia/sonic-3", - voice="9626c31c-bec5-4cca-baa8-f8ba9e84c8bc", - ), - vad=ctx.proc.userdata["vad"], + tts=inference.TTS("cartesia/sonic-3"), turn_detection=MultilingualModel(), preemptive_generation=True, ) - await session.start( - agent=VoiceAssistant(), - room=ctx.room, - ) - await ctx.connect() + await session.start(agent=VoiceAssistant(), room=ctx.room) ``` -### 3. Running the Example +### 4. Running Your Agent -You can run your assistant in console mode to interact through your terminal: +Run your agent script to start: ```bash -python src/agent.py console +python src/agent.py ``` -Alternatively, deploy as a dev worker to connect to your LiveKit server: +Join the LiveKit room specified in your setup to interact with the assistant. -```bash -python src/agent.py dev -``` +## Conclusion + +This example demonstrates how LiveKit Agents integrate seamlessly with Deepgram and OpenAI to power a real-time voice assistant. Experiment by modifying the assistant's behavior or trying different models and configurations. + +## What's Next? -## Final Thoughts +- **Explore More Models**: Try different STT and LLM models to see how they change user interactions. +- **Integrate More Features**: Add more sophisticated logic or memory to your assistant for enhanced user experiences. +- **Deploy**: Consider deploying your solution in a production environment for real-world interactions. -This basic setup allows you to run a real-time conversational agent using Python. The integration showcase here with LiveKit and Deepgram can be enhanced with custom logic and additional plugins for more advanced use cases. +--- -For further extensions, consider different models available in the Deepgram and OpenAI ecosystems or explore additional plugins available in the LiveKit framework. Happy coding! \ No newline at end of file +Leverage the power of voice in your applications with LiveKit and Deepgram for deep transformation of user interactions. \ No newline at end of file From 1f2fc0b76b4597f23e212847703aa97fd1c72311 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 15 Apr 2026 13:56:05 +0000 Subject: [PATCH 04/10] chore(examples): checkpoint 030-livekit-agents-python turn 6 Relates to #225 --- examples/030-livekit-agents-python/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/030-livekit-agents-python/README.md b/examples/030-livekit-agents-python/README.md index 6119003..3f0ad22 100644 --- a/examples/030-livekit-agents-python/README.md +++ b/examples/030-livekit-agents-python/README.md @@ -10,7 +10,6 @@ This example demonstrates how to build a minimal voice assistant using LiveKit A - A LiveKit server with API credentials - Deepgram API key - OpenAI API key -- ## Environment Variables From 429585d996000f1aa80c8e2c299431d1fcd031d9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 16 Apr 2026 07:59:36 +0000 Subject: [PATCH 05/10] chore(examples): checkpoint 030-livekit-agents-python turn 4 Relates to #225 --- .../src/__pycache__/agent.cpython-312.pyc | Bin 0 -> 3457 bytes .../test_example.cpython-312-pytest-9.0.3.pyc | Bin 0 -> 10548 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc create mode 100644 examples/030-livekit-agents-python/tests/__pycache__/test_example.cpython-312-pytest-9.0.3.pyc diff --git a/examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc b/examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dd7aba775f59fc65339f377df2ead2da352cf68d GIT binary patch literal 3457 zcmZuzO>7&-6`tY#kX-&qwk7M&Qn!&4gtkf5wc;v9n$(q08?j^*up6X%S*&)4(o*}w z&MYNUbpa+3Y71#$AKExMB{`*mU7+Zxryi19d$A%HHa0HcrYO+fm`aA-ocdeX*rgSG;r!Yb{kb@lTA)_;51H*U9OZk!^ zVU$8dy4h97Tto6?UojM4HB>)sr2UMM@v}zO*9^_i896_175t)66m!Mv@q3M4 zVGY%uN!)lcI_gdEgg0Y<3Y|etdJQ=lqTH0as|UajHSxpfbFw7sXb!H*PHs&$`bj_O zGY@uj5h8uHiDdp{Om;hYlIiX(tjWo$F-V4-;?na7QT|_AZSu*^WJdZDFEMK3CNA~- zhl|daaGdi(%Q2lWBEfPg6Dy||ND#$2F+on*CUkA_RTfC$o1S{p<#J*p+mgYgAO6}1#0{ebTET)h}GUSkW{c z+J(lv?Q#8JK^H;MJrXg!88&o>RNa7p38J$mi-@n+Y3SD@-3lB%gfLRqA-d;QiQTk4 zBFrs@;Sz(jC8CFc35OZ-x&ag4JglXP*l%}JPlSrci2t^p zgYLKZ28zTo@7D2U^lP{}4!)JzkqD?Hoo{>r@}GkL7KKRYRqB$!@tS)=Qx8`FS4W?3 zK8X#h6Jjrxqp-}AK^$}zAUx+r75y9p5LOuMV!9m$w#&digaYOe3}!`;O8~(at>3`e z;rvvORzjWeAVBso9gy%t29{<*JqQIXI`PAr%Z};3MVFj#B{;^nffu$5mH;W=iXsk; z8*oUdP6?}r0pMBr7{_@CU_=`>|6^84#R_ZGA-OZA3E2>tCM?N}c-1&-ngV3gWGM)a z-uh}_VkM+YtZvz4f>C=yKvJnUX&=Z}2fmqLmBip-5V8^I9=Fi_Okq8}kr`}j(!M#| z&Y|qkL!@Q3EfAwUFunzgTQks|Ll~0%GOBU4U9HB!-qm&k{CjBy1IVirXDA_&NFPXV zs;^ko2aq`)7F*I6!xfRkwiW1$#H&~6J}?XcNkisRAxw5!#UO15J?VRXP--Lc%AI`}1+H363Mv9xSCC7I@7A(mb{Jrm2E#p4VI*RdiC z&NvRTo%p2dlyKN-2?X2{;|FM=?F>5f%=@R_JN5o6@4d1)a;!CTW$ul+>(72B4~ioL zuSb`@an20v6B+tPfWMQW4iL;!bMz@EcR|mHPNDMGOLODpL}&jC*?@D zeHMJbSW;t&MNuqyo*zq5#Kdx3|EjmS$(?V(H?=3*w$ocswCm;8F!12{aO9 z5U0UL0A7?*^axiNhOSc*x}2v$wW7^Bl;((jAA~>R3V()9Fx-Q&!ynimEq=K8k^iB8 zdvvljeMcVN?n6Bz_w)VN=GNzK4rBN{(4(MxxpPVc1s4qbEjZ-0u)y{*Gaz2cU z-G^O80LCaMcgp#%g9>K=%1MQC1`r_89L(aLWMAEDfMwRX2CZo_A2)go?@Kv;Z-W0w}KGkEQ2ajH>-gi=V)Y`-NGkerDI$@O&ft})$1Rl zPATYAy_Y&==w&(!I=mdRKS9@)Fvg#w;^!#)FEsWKlv^u2DrRx&5rS@ucMtmz9{)Q! z`ye}fb>MDxcq2P}d*sAscCw{zt3z13{*!G4!wkN+rM6WWm#-gbBN#sD+u}pJ zi26oa>K)VzIgrZS#RoR|~-}U{M4_gvS9Te;BS&ZcT)z#0Wp?h*q VYx>H$H_lyG{{{&lA$eGw?EfsfN_7AL literal 0 HcmV?d00001 diff --git a/examples/030-livekit-agents-python/tests/__pycache__/test_example.cpython-312-pytest-9.0.3.pyc b/examples/030-livekit-agents-python/tests/__pycache__/test_example.cpython-312-pytest-9.0.3.pyc new file mode 100644 index 0000000000000000000000000000000000000000..29dc69c3d732f455cf9791761b286bd5a9aa2f5f GIT binary patch literal 10548 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 CU2>uT literal 0 HcmV?d00001 From b6087d8450dc860a5a106c7d533b6a47b57fca7e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 16 Apr 2026 07:59:39 +0000 Subject: [PATCH 06/10] chore(examples): checkpoint 030-livekit-agents-python turn 5 Relates to #225 --- .../src/__pycache__/agent.cpython-312.pyc | Bin 3457 -> 0 bytes .../test_example.cpython-312-pytest-9.0.3.pyc | Bin 10548 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc delete mode 100644 examples/030-livekit-agents-python/tests/__pycache__/test_example.cpython-312-pytest-9.0.3.pyc diff --git a/examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc b/examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc deleted file mode 100644 index dd7aba775f59fc65339f377df2ead2da352cf68d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3457 zcmZuzO>7&-6`tY#kX-&qwk7M&Qn!&4gtkf5wc;v9n$(q08?j^*up6X%S*&)4(o*}w z&MYNUbpa+3Y71#$AKExMB{`*mU7+Zxryi19d$A%HHa0HcrYO+fm`aA-ocdeX*rgSG;r!Yb{kb@lTA)_;51H*U9OZk!^ zVU$8dy4h97Tto6?UojM4HB>)sr2UMM@v}zO*9^_i896_175t)66m!Mv@q3M4 zVGY%uN!)lcI_gdEgg0Y<3Y|etdJQ=lqTH0as|UajHSxpfbFw7sXb!H*PHs&$`bj_O zGY@uj5h8uHiDdp{Om;hYlIiX(tjWo$F-V4-;?na7QT|_AZSu*^WJdZDFEMK3CNA~- zhl|daaGdi(%Q2lWBEfPg6Dy||ND#$2F+on*CUkA_RTfC$o1S{p<#J*p+mgYgAO6}1#0{ebTET)h}GUSkW{c z+J(lv?Q#8JK^H;MJrXg!88&o>RNa7p38J$mi-@n+Y3SD@-3lB%gfLRqA-d;QiQTk4 zBFrs@;Sz(jC8CFc35OZ-x&ag4JglXP*l%}JPlSrci2t^p zgYLKZ28zTo@7D2U^lP{}4!)JzkqD?Hoo{>r@}GkL7KKRYRqB$!@tS)=Qx8`FS4W?3 zK8X#h6Jjrxqp-}AK^$}zAUx+r75y9p5LOuMV!9m$w#&digaYOe3}!`;O8~(at>3`e z;rvvORzjWeAVBso9gy%t29{<*JqQIXI`PAr%Z};3MVFj#B{;^nffu$5mH;W=iXsk; z8*oUdP6?}r0pMBr7{_@CU_=`>|6^84#R_ZGA-OZA3E2>tCM?N}c-1&-ngV3gWGM)a z-uh}_VkM+YtZvz4f>C=yKvJnUX&=Z}2fmqLmBip-5V8^I9=Fi_Okq8}kr`}j(!M#| z&Y|qkL!@Q3EfAwUFunzgTQks|Ll~0%GOBU4U9HB!-qm&k{CjBy1IVirXDA_&NFPXV zs;^ko2aq`)7F*I6!xfRkwiW1$#H&~6J}?XcNkisRAxw5!#UO15J?VRXP--Lc%AI`}1+H363Mv9xSCC7I@7A(mb{Jrm2E#p4VI*RdiC z&NvRTo%p2dlyKN-2?X2{;|FM=?F>5f%=@R_JN5o6@4d1)a;!CTW$ul+>(72B4~ioL zuSb`@an20v6B+tPfWMQW4iL;!bMz@EcR|mHPNDMGOLODpL}&jC*?@D zeHMJbSW;t&MNuqyo*zq5#Kdx3|EjmS$(?V(H?=3*w$ocswCm;8F!12{aO9 z5U0UL0A7?*^axiNhOSc*x}2v$wW7^Bl;((jAA~>R3V()9Fx-Q&!ynimEq=K8k^iB8 zdvvljeMcVN?n6Bz_w)VN=GNzK4rBN{(4(MxxpPVc1s4qbEjZ-0u)y{*Gaz2cU z-G^O80LCaMcgp#%g9>K=%1MQC1`r_89L(aLWMAEDfMwRX2CZo_A2)go?@Kv;Z-W0w}KGkEQ2ajH>-gi=V)Y`-NGkerDI$@O&ft})$1Rl zPATYAy_Y&==w&(!I=mdRKS9@)Fvg#w;^!#)FEsWKlv^u2DrRx&5rS@ucMtmz9{)Q! z`ye}fb>MDxcq2P}d*sAscCw{zt3z13{*!G4!wkN+rM6WWm#-gbBN#sD+u}pJ zi26oa>K)VzIgrZS#RoR|~-}U{M4_gvS9Te;BS&ZcT)z#0Wp?h*q VYx>H$H_lyG{{{&lA$eGw?EfsfN_7AL diff --git a/examples/030-livekit-agents-python/tests/__pycache__/test_example.cpython-312-pytest-9.0.3.pyc b/examples/030-livekit-agents-python/tests/__pycache__/test_example.cpython-312-pytest-9.0.3.pyc deleted file mode 100644 index 29dc69c3d732f455cf9791761b286bd5a9aa2f5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10548 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 CU2>uT From b377089ac2b5fa5e2e7ef0789e413c418f1f39f6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 16 Apr 2026 08:37:46 +0000 Subject: [PATCH 07/10] chore(examples): checkpoint 030-livekit-agents-python turn 6 Relates to #225 --- .../src/__pycache__/agent.cpython-312.pyc | Bin 0 -> 3457 bytes .../test_example.cpython-312-pytest-9.0.3.pyc | Bin 0 -> 10548 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc create mode 100644 examples/030-livekit-agents-python/tests/__pycache__/test_example.cpython-312-pytest-9.0.3.pyc diff --git a/examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc b/examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8d6a1e94a6b7033a07f95c369904dae610f04531 GIT binary patch literal 3457 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 CEONI1 literal 0 HcmV?d00001 From e50aeecff982b60de6ccdb476a37977e1108aa75 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 16 Apr 2026 08:37:56 +0000 Subject: [PATCH 08/10] chore(examples): checkpoint 030-livekit-agents-python turn 7 Relates to #225 --- .../src/__pycache__/agent.cpython-312.pyc | Bin 3457 -> 0 bytes .../test_example.cpython-312-pytest-9.0.3.pyc | Bin 10548 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc delete mode 100644 examples/030-livekit-agents-python/tests/__pycache__/test_example.cpython-312-pytest-9.0.3.pyc diff --git a/examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc b/examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc deleted file mode 100644 index 8d6a1e94a6b7033a07f95c369904dae610f04531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3457 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 CEONI1 From f9413a66220c231b468b77480d03531ba9c068a0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 16 Apr 2026 08:38:03 +0000 Subject: [PATCH 09/10] chore(examples): checkpoint 030-livekit-agents-python turn 9 Relates to #225 --- .../src/__pycache__/agent.cpython-312.pyc | Bin 0 -> 3457 bytes .../test_example.cpython-312-pytest-9.0.3.pyc | Bin 0 -> 10548 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc create mode 100644 examples/030-livekit-agents-python/tests/__pycache__/test_example.cpython-312-pytest-9.0.3.pyc diff --git a/examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc b/examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8d6a1e94a6b7033a07f95c369904dae610f04531 GIT binary patch literal 3457 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 CEONI1 literal 0 HcmV?d00001 From ac1f178ee2f0ddb5743cf9c45163bacb2ac2de0f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 16 Apr 2026 08:38:05 +0000 Subject: [PATCH 10/10] chore(examples): checkpoint 030-livekit-agents-python Relates to #225 --- .../src/__pycache__/agent.cpython-312.pyc | Bin 3457 -> 0 bytes .../test_example.cpython-312-pytest-9.0.3.pyc | Bin 10548 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc delete mode 100644 examples/030-livekit-agents-python/tests/__pycache__/test_example.cpython-312-pytest-9.0.3.pyc diff --git a/examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc b/examples/030-livekit-agents-python/src/__pycache__/agent.cpython-312.pyc deleted file mode 100644 index 8d6a1e94a6b7033a07f95c369904dae610f04531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3457 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 CEONI1