Skip to main content

Python client for Agora REST APIs

Project description

Agora REST Client - Python

Python SDK for Agora REST APIs, including Conversational AI Agent management.

Features

  • 🤖 High-level Agent API - Simple interface for managing Agora Conversational AI Agents
  • 🔧 Configuration Management - Easy configuration from environment variables
  • 🎯 Type-safe - Full type hints support
  • 📦 Lightweight - Minimal dependencies
  • 🚀 Production-ready - Built for reliability and performance

Installation

From PyPI (Recommended)

pip install agora-rest-client-python

From Git Repository

pip install git+https://github.com/your-org/agora-rest-client-python.git

For Development

git clone https://github.com/your-org/agora-rest-client-python.git
cd agora-rest-client-python
pip install -e .

Quick Start

1. Set up environment variables

Create a .env file:

# Agora Configuration
APP_ID=your_app_id
APP_CERTIFICATE=your_app_certificate

# Agora REST API Credentials
API_KEY=your_customer_id
API_SECRET=your_customer_secret

# LLM - OpenAI
LLM_API_KEY=your_openai_key

# ASR - Deepgram (Optional)
ASR_DEEPGRAM_API_KEY=your_deepgram_key

# TTS - ElevenLabs (Optional)
TTS_ELEVENLABS_API_KEY=your_elevenlabs_key

2. Initialize and use the Agent

import os
import uuid
import random
from agora_rest.agent import (
    AgentClient,
    TokenBuilder,
    DeepgramASRConfig,
    OpenAILLMConfig,
    ElevenLabsTTSConfig
)

# Create agent client
client = AgentClient(
    app_id=os.getenv("APP_ID"),
    app_certificate=os.getenv("APP_CERTIFICATE"),
    customer_id=os.getenv("API_KEY"),
    customer_secret=os.getenv("API_SECRET")
)

# Generate connection configuration
channel_name = f"channel_{uuid.uuid4().hex[:8]}"
user_uid = str(random.randint(100000, 999999))
agent_uid = str(random.randint(100000, 999999))

token = TokenBuilder.generate(
    app_id=os.getenv("APP_ID"),
    app_certificate=os.getenv("APP_CERTIFICATE"),
    channel_name=channel_name,
    uid=agent_uid
)

print(f"Channel: {channel_name}")
print(f"Token: {token}")

# Configure ASR, LLM, TTS
asr = DeepgramASRConfig(api_key=os.getenv("ASR_DEEPGRAM_API_KEY"))
llm = OpenAILLMConfig(api_key=os.getenv("LLM_API_KEY"))
tts = ElevenLabsTTSConfig(api_key=os.getenv("TTS_ELEVENLABS_API_KEY"))

# Start an agent
result = client.start_agent(
    channel_name=channel_name,
    agent_uid=agent_uid,
    user_uid=user_uid,
    asr_config=asr,
    llm_config=llm,
    tts_config=tts
)

print(f"Agent started: {result['agent_id']}")

# Stop the agent
client.stop_agent(result['agent_id'])
print("Agent stopped")

Configuration

Environment Variables

Variable Description Required
APP_ID Agora App ID Yes
APP_CERTIFICATE Agora App Certificate Yes
API_KEY Agora REST API Customer ID Yes
API_SECRET Agora REST API Customer Secret Yes
LLM_API_KEY OpenAI LLM API key Yes
ASR_DEEPGRAM_API_KEY Deepgram ASR API key Optional
TTS_ELEVENLABS_API_KEY ElevenLabs TTS API key Optional
PORT Server port (default: 8000) Optional

API Reference

AgentClient

Core business logic for agent operations.

import os
import uuid
import random
from agora_rest.agent import AgentClient, TokenBuilder

client = AgentClient(
    app_id=os.getenv("APP_ID"),
    app_certificate=os.getenv("APP_CERTIFICATE"),
    customer_id=os.getenv("API_KEY"),
    customer_secret=os.getenv("API_SECRET")
)

# Generate connection configuration
channel_name = f"channel_{uuid.uuid4().hex[:8]}"
user_uid = str(random.randint(100000, 999999))
agent_uid = str(random.randint(100000, 999999))

token = TokenBuilder.generate(
    app_id=os.getenv("APP_ID"),
    app_certificate=os.getenv("APP_CERTIFICATE"),
    channel_name=channel_name,
    uid=agent_uid
)

# Start an agent
result = client.start_agent(
    channel_name=channel_name,
    agent_uid=agent_uid,
    user_uid=user_uid,
    asr_config={...},
    llm_config={...},
    tts_config={...}
)

# Stop an agent
client.stop_agent(agent_id)

Configuration Components

from agora_rest.agent import DeepgramASRConfig, OpenAILLMConfig, ElevenLabsTTSConfig

# ASR Configuration (Deepgram)
asr = DeepgramASRConfig(
    api_key="your_deepgram_key",
    language="en-US"  # Optional, defaults to "en"
)

# LLM Configuration (OpenAI)
llm = OpenAILLMConfig(
    api_key="your_openai_key",
    model="gpt-4o",  # Optional, defaults to "gpt-4o"
    system_message="You are a helpful assistant",  # Optional
    greeting="Hello! How can I help you?",  # Optional
    max_tokens=512  # Optional
)

# TTS Configuration (ElevenLabs)
tts = ElevenLabsTTSConfig(
    api_key="your_elevenlabs_key",
    voice_id="pNInz6obpgDQGcFmaJgB",  # Optional, defaults to Adam
    model="eleven_turbo_v2_5"  # Optional
)

Supported Vendors

ASR (Automatic Speech Recognition)

  • ✅ Deepgram

LLM (Large Language Model)

  • ✅ OpenAI (GPT-4, GPT-3.5)

TTS (Text-to-Speech)

  • ✅ ElevenLabs

Examples

See the examples directory for more usage examples.

Requirements

Development

Setup Development Environment

# Clone repository
git clone https://github.com/your-org/agora-rest-client-python.git
cd agora-rest-client-python

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Install in editable mode
pip install -e .

Running Tests

pytest

Code Style

# Format code
black .

# Lint code
flake8 .

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Changelog

See CHANGELOG.md for version history.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agora_rest_client_python-0.1.2.tar.gz (29.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agora_rest_client_python-0.1.2-py3-none-any.whl (33.7 kB view details)

Uploaded Python 3

File details

Details for the file agora_rest_client_python-0.1.2.tar.gz.

File metadata

  • Download URL: agora_rest_client_python-0.1.2.tar.gz
  • Upload date:
  • Size: 29.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.10

File hashes

Hashes for agora_rest_client_python-0.1.2.tar.gz
Algorithm Hash digest
SHA256 b5a9fceea56c3246909359c3532f3fc775e291de944cc201af4272a4a845a5b4
MD5 3f6f453335e87cce9753e7a13bf6b41e
BLAKE2b-256 c1b8b291ebe1a4ab030e540869b522c9b18e03e55797ef64d3ae699b8fd477b3

See more details on using hashes here.

File details

Details for the file agora_rest_client_python-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for agora_rest_client_python-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 de72f096dc3ebddc7c853eb00a117cd7678563942d88fb4e6fe6d6bacae2afc3
MD5 7252947778994320545483034b88b89f
BLAKE2b-256 4a48d01b7deca7347c5ca7cd2512b3bd6b8fdcffc3931fe4c97e81b2619f067b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page