Overview
The MeshAgent VoiceBot lets you add a voice agent to any MeshAgent Room with just a few lines of code! VoiceBots use the same toolkits as ChatBots, so everything you learned in the build and deploy a chat agent quick-start still applies—your agent simply talks instead of types. In this guide we’ll build a voice agent in three phases:- Basic VoiceBot: A simple voice agent with a system prompt (rules)
- VoiceBot with Built-in MeshAgent Tools: Extend our voice agent with prebuilt tools to interact with the user and write documents to the room.
- VoiceBot with Built-in MeshAgent Tools and Custom Tools: Add our own tools to the agent for use-case specific tasks.
- Build a voice based agent with MeshAgent
- Connect the agent to a MeshAgent Room for live testing.
- Deploy the agent as a MeshAgent Service.
- Generate a shareable link so others can start talking to the voice agent right away.
Prerequisites
Be sure you have created your MeshAgent account and project, set up and activated a virtual environment, and installed the MeshAgent Python SDK. For help getting setup see the Getting Started Guide.Connect to MeshAgent Project
Chat with the built-in VoiceBot (zero code)
Let’s bring a ready-made voicebot into a room and talk to it:- Create and open a room called
gettingstarted
inside your project - Call the
voiceagent
into thegettingstarted
room
gettingstarted
room. You will see the voiceagent
participant appear! Simply select the agent and begin talking to it. We recommend muting the microphone after you finish speaking so that the agent does not pick up on any undesired background noise.
Phase 1: Building a Simple VoiceBot
Now that we’ve seen the default voicebot in action, let’s create one from scratch. Create a main.py file and paste the starter code for the basic VoiceBot. To start, we can give the agent one rule / system instruction. We’ll build up this code over the course of this example. We’ll also add context to the conversation so the VoiceBot knows what day it is. If you need to add context to the VoiceBot before the conversation begins you can modify this accordingly.Python
Running the Simple VoiceBot in Test Mode:
Testing a VoiceBot works the same way as a ChatBot — just be sure to update your agent name and service path. To run the agent you will need two tabs open in your terminal. You need to be in the appropriate directory and have your virtual environment activated in each tab. In the first tab run:voiceagent
into the gettingstarted
room and run it on port 7777
using the service path voice
. If you want to rename the agent, room, port, or service path simply update the variables in the command.
Now we can navigate to the MeshAgent Studio and we’ll see our agent, voiceagent
show up under the participants tab! We can talk to the agent now and make sure that it responds with a fun fact like we instructed it to.
We can also click on the menu inside the room and turn on the “Developer console” this will allow us to see live logs, traces, and metrics as we interact with the agent.
Phase 2: Adding Built-in MeshAgent Tools to our VoiceBot
Next, let’s add the same built-in MeshAgent tools to our VoiceBot that we gave to our ChatBot in the previous example. These tools will give the voice agent the ability to interact with the user, convert documents to markdown, and write documents to the room. Toolkits group tools together and can be used by both chat and voice agents. We’ll also add a few imports and update the voice agent’s rules so it knows how to interact with the available tools efficiently.Python
Phase 3: Adding Custom Tools to our VoiceBot
Now let’s add a custom tool to our VoiceBot! We’ll use the same TaskTracker toolkit we used for the ChatBot in our previous example. This Toolkit allows the agent to write and read tasks to the Room database. To do this we will update the voice agent initialization and create a table for the tasks when the room starts up. We will create a tasks toolkit with two custom tools to WriteTask and GetTasks from the database. This is a simple example of adding tasks, to create a more useful task writer we’d want to add date information and other metadata to better track and filter tasks. This example is mainly to demonstrate writing to room storage and adding custom tools to our voice agent.Python
Deploying and Running the Agent as a MeshAgent Service
This is the same process as in the Build and Deploy a ChatBot Example.Prerequisites:
To deploy the agent you will need to have docker setup and a container registry with your cloud provider (e.g. GCP, Azure, AWS). For this example we are using Azure Container Registry. These steps assume you have created a container registry in Azure, have a service principal setup, and have the appropriate permissions to access and push images to the container registry.- For more information on setting up an Azure Container Registry see the documentation here: https://learn.microsoft.com/en-us/azure/container-registry/container-registry-get-started-portal?tabs=azure-cli
- For more information on creating a service principal in azure see the documentation here: https://learn.microsoft.com/en-us/azure/container-registry/container-registry-auth-kubernetes.
Step 1: Build and Push Your Container
- Create and activate a dedicated Buildx builder We recommend using zstd images to speed up image pulls. To enable building zstd images, run the following commands:
- Log in to Azure, connect to your ACR instance, then build and push the docker container. To build this container, use docker buildx to make a linux/amd64 image and push it to your registry.
Step 2: Create a Service in MeshAgent for each of your Agents
- Navigate to the Services tab and click the button to create a New Service and fill in the required information about the agent.
- Add the MESHAGENT_PORT as an environment variable, this needs to match the port that you register the service with.
Step 3: Try your agent!
Navigate to the Sessions tab in the MeshAgent Studio and either join an existing room or create a new room by starting a session. You will then see the VoiceBot Agent available in the room for you to interact with!Generate a Link and Share Your Agent
- Navigate to your Room, click the hamburger menu icon in the top left corner, next click “Share”
- Select the Room and Agent you’d like to share and click “Generate Link”
- Proudly share your Agent!