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
# Server Configuration (Optional)
PORT=8000
2. Initialize and use the Agent
from agora_rest import AgentConfig, AgentManager
# Load configuration from environment
config = AgentConfig.from_env()
# Create agent manager
manager = AgentManager(config)
# Generate connection configuration
config_data = manager.generate_config()
print(f"Channel: {config_data['channel_name']}")
print(f"Token: {config_data['token']}")
# Start an agent
result = manager.start_agent(
channel_name=config_data['channel_name'],
agent_uid=config_data['agent_uid'],
user_uid=config_data['uid'],
asr_config={
"vendor": "deepgram",
"api_key": config.deepgram_api_key,
},
llm_config={
"url": "https://api.openai.com/v1",
"api_key": config.llm_api_key,
"model": "gpt-4",
},
tts_config={
"vendor": "elevenlabs",
"api_key": config.tts_elevenlabs_api_key,
}
)
print(f"Agent started: {result['agent_id']}")
# Stop the agent
manager.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 |
Configuration from Code
from agora_rest import AgentConfig
config = AgentConfig(
app_id="your_app_id",
app_certificate="your_certificate",
customer_id="your_customer_id", # API_KEY
customer_secret="your_customer_secret", # API_SECRET
llm_api_key="your_openai_key",
deepgram_api_key="your_deepgram_key", # Optional
tts_elevenlabs_api_key="your_elevenlabs_key", # Optional
)
API Reference
AgentConfig
Configuration management for Agora services.
# Load from environment
config = AgentConfig.from_env()
# Load from custom .env file
config = AgentConfig.from_env(env_file="/path/to/.env")
# Create manually
config = AgentConfig(
app_id="...",
app_certificate="...",
customer_id="...", # API_KEY
customer_secret="...", # API_SECRET
llm_api_key="...",
# Optional
deepgram_api_key="...",
tts_elevenlabs_api_key="...",
)
AgentManager
Core business logic for agent operations.
manager = AgentManager(config)
# Generate connection configuration
config_data = manager.generate_config()
# Start an agent
result = manager.start_agent(
channel_name="my_channel",
agent_uid="123",
user_uid="456",
asr_config={...},
llm_config={...},
tts_config={...}
)
# Stop an agent
manager.stop_agent(agent_id)
Configuration Components
from agora_rest.agent import ASRConfig, LLMConfig, TTSConfig
# ASR Configuration (Deepgram) - uses defaults
asr = ASRConfig(api_key="your_deepgram_key")
# LLM Configuration (OpenAI) - uses defaults
llm = LLMConfig(api_key="your_openai_key")
# TTS Configuration (ElevenLabs) - uses defaults
tts = TTSConfig(api_key="your_elevenlabs_key")
# Optional: Customize if needed
# llm.model = "gpt-4o"
# llm.system_message = "You are a helpful assistant"
# asr.language = "zh-CN"
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
- Python >= 3.8
- Dependencies listed in requirements.txt
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
- 📧 Email: support@agora.io
- 📖 Documentation: Agora Docs
- 💬 Community: Agora Community
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agora_rest_client_python-0.1.0.tar.gz.
File metadata
- Download URL: agora_rest_client_python-0.1.0.tar.gz
- Upload date:
- Size: 28.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe78139c741ade94d023d1b08d45c0aea705181401043de9fb413e4fba780332
|
|
| MD5 |
c1c5a3319c14d93293d78ed213ccbf2f
|
|
| BLAKE2b-256 |
21d7aad9d2aa565f972912e37422e84856ddfc41049ded22d69f70494b6b265e
|
File details
Details for the file agora_rest_client_python-0.1.0-py3-none-any.whl.
File metadata
- Download URL: agora_rest_client_python-0.1.0-py3-none-any.whl
- Upload date:
- Size: 34.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a491ac2126b34a28edcf47167601119a3832452b17a298ec6d19da4d9a5f6687
|
|
| MD5 |
f9767d0e3c65d98f0bdcf1cc3723c0f2
|
|
| BLAKE2b-256 |
17f76b7fc9b438e22d468f3e68c89d5488ed007cc568029b99ec332a6f419bc3
|