Introduction

This example shows how to use Vocode as a tool augmenting the abilities of a Langchain agent. By providing it with access to Vocode, a Langchain Agent can now make autonomous phone calls and take action based on the outcome of the calls.

Our demo will walk through how to instruct the agent to lookup a phone number and make the appropriate call.


How to run it

Requirements

  1. Install Ngrok
  2. Install Redis
  3. Install Poetry

Run the example

Note: gpt-4 is required for this to work. gpt-3.5-turbo or older models are not smart enough to parse JSON responses in Langchain agents reliably out-of-the-box.

To get started, clone the Vocode repo or copy the Langchain agent app directory.

git clone https://github.com/vocodedev/vocode-python.git

Environment

  1. Copy the .env.template and fill in your API keys. You’ll need:
  1. Tunnel port 3000 to ngrok by running:
ngrok http 3000

Fill in the TELEPHONY_SERVER_BASE_URL environment variable with your ngrok base URL: don’t include https:// so should be something like:

TELEPHONY_SERVER_BASE_URL=asdf1234.ngrok.app
  1. Buy a phone number on Twilio or verify your caller ID to use as the outbound phone number. Set this phone number as the OUTBOUND_CALLER_NUMBER environment variable. Include + and the area code, so for a US phone number, it would look something like.
OUTBOUND_CALLER_NUMBER=+15555555555

Set up self-hosted telephony server

Run the following setups from the langchain_agent directory.

Running with Docker

  1. Build the telephony server Docker image
docker build -t vocode-langchain-agent-telephony-app .
  1. Run the service using docker-compose
docker-compose up

Running with Python

  1. (optional) Set up a Python environment: we recommend virtualenv
python3 -m venv venv
source venv/bin/activate
  1. Install requirements
poetry install
  1. Run an instance of Redis at http://localhost:6379. With Docker, this can be done with:
docker run -dp 6379:6379 -it redis/redis-stack:latest
  1. Run the TelephonyServer:
uvicorn telephony_app:app --reload --port 3000

Set up the Langchain agent

With the self-hosted telephony server running:

  1. Update the phone numbers in the contact book in tools/contacts.py
CONTACTS = [{"name": "Kian", "phone": "+123456789"}]
  1. Run main.py
poetry install
poetry run python main.py

Code explanation

🚧 Under construction