Skip to content

Commit a5097b8

Browse files
Document new LLM vendors and tighten onboarding docs.
Add Groq, Vertex AI, Bedrock, Dify, and Custom LLM to vendor references, simplify README and index navigation, and align quick-start and terminology with Agora-managed model language.
1 parent 98ecb4d commit a5097b8

9 files changed

Lines changed: 48 additions & 50 deletions

File tree

README.md

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,38 +7,19 @@ The Agora Conversational AI SDK provides convenient access to the Agora Conversa
77
enabling you to build voice-powered AI agents with support for both cascading flows (ASR -> LLM -> TTS)
88
and multimodal flows (MLLM) for real-time audio processing.
99

10+
## Install
1011

11-
## Table of Contents
12-
13-
- [Requirements](#requirements)
14-
- [Installation](#installation)
15-
- [Quick Start](#quick-start)
16-
- [BYOK](#byok)
17-
- [MLLM (Realtime / Multimodal)](#mllm-realtime--multimodal)
18-
- [Documentation](#documentation)
19-
- [Reference](#reference)
20-
- [Exception Handling](#exception-handling)
21-
- [Pagination](#pagination)
22-
- [Advanced](#advanced)
23-
- [Access Raw Response Data](#access-raw-response-data)
24-
- [Retries](#retries)
25-
- [Timeouts](#timeouts)
26-
- [Custom Client](#custom-client)
27-
- [Contributing](#contributing)
12+
```sh
13+
pip install agora-agents
14+
```
2815

2916
## Requirements
3017

3118
- Python 3.8+
3219

33-
## Installation
34-
35-
```sh
36-
pip install agora-agents
37-
```
38-
3920
## Quick Start
4021

41-
The recommended onboarding path is a server-side builder flow: define the agent once, configure vendors on the builder, and let AgentKit infer Agora-managed configuration when credentials are omitted.
22+
Start with the `Agent` builder: create a client with app credentials, choose your ASR, LLM, and TTS providers, then start a session. Omit vendor API keys for supported Agora-managed models, or provide keys when you want BYOK.
4223

4324
```python
4425
import os
@@ -146,11 +127,11 @@ def start_conversation() -> str:
146127

147128
### Why no token or vendor key in the example?
148129

149-
`Agora` generates the required ConvoAI REST auth and RTC join tokens automatically when you provide `app_id` and `app_certificate`. AgentKit inspects the builder-provided vendor configs and infers Agora-managed configuration for supported models, so you do not pass vendor API keys in this flow.
130+
`Agora` generates the required ConvoAI REST auth and RTC join tokens automatically when you provide `app_id` and `app_certificate`. For supported Agora-managed models, leave vendor API keys unset; provide keys when you want BYOK.
150131

151-
### BYOK version of the same builder flow
132+
### BYOK version
152133

153-
Use the same `Agent` builder shape, but provide credentials explicitly when you want vendor-managed billing and routing instead of Agora-managed presets.
134+
Use the same `Agent` builder shape, but provide credentials explicitly when you want vendor-managed billing and routing instead of Agora-managed models.
154135

155136
```python
156137
agent = Agent(
@@ -232,7 +213,7 @@ except ApiError as e:
232213

233214
## Pagination
234215

235-
Paginated requests will return a `SyncPager` or `AsyncPager`, which can be used as generators for the underlying object.
216+
Paginated requests will return a `SyncPager` or `AsyncPager`, which can be used as generators for the returned object.
236217

237218
```python
238219
from agora_agent import Agora, Area
@@ -276,15 +257,15 @@ client = Agora(
276257
)
277258
response = client.agents.with_raw_response.start(...)
278259
print(response.headers) # access the response headers
279-
print(response.data) # access the underlying object
260+
print(response.data) # access the returned object
280261
pager = client.agents.list(...)
281262
print(pager.response) # access the typed response for the first page
282263
for item in pager:
283-
print(item) # access the underlying object(s)
264+
print(item) # access the returned object(s)
284265
for page in pager.iter_pages():
285266
print(page.response) # access the typed response for each page
286267
for item in page:
287-
print(item) # access the underlying object(s)
268+
print(item) # access the returned object(s)
288269
```
289270

290271
### Retries

docs/concepts/session.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,13 +145,13 @@ session.off('started', on_started)
145145
| `session.app_id` | `str` | The Agora App ID |
146146
| `session.raw` | `AgentsClient` | Direct access to the Fern-generated agents client |
147147

148-
## `session.raw` — Escape Hatch
148+
## Direct API access with `session.raw`
149149

150-
If the agentkit does not yet expose a method for a new API endpoint, use `session.raw` to access the underlying Fern-generated `AgentsClient` (sync) or `AsyncAgentsClient` (async) directly:
150+
If AgentKit does not yet expose a method for a new API endpoint, use `session.raw` to access the generated `AgentsClient` (sync) or `AsyncAgentsClient` (async) directly:
151151

152152
<!-- snippet: fragment -->
153153
```python
154-
# Access any Fern-generated method
154+
# Access any generated REST method
155155
response = session.raw.list(session.app_id)
156156
```
157157

docs/concepts/vendors.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ Used with `agent.with_llm()` for the cascading flow (ASR → LLM → TTS).
2525
| `AzureOpenAI` | Azure OpenAI | `api_key`, `endpoint`, `deployment_name` |
2626
| `Anthropic` | Anthropic | `api_key` |
2727
| `Gemini` | Google Gemini | `api_key` |
28+
| `Groq` | Groq | `api_key` |
29+
| `VertexAILLM` | Google Vertex AI | `api_key`, `project_id`, `location` |
30+
| `AmazonBedrock` | Amazon Bedrock | `api_key`, `url`, `model` |
31+
| `Dify` | Dify | `api_key`, `url` |
32+
| `CustomLLM` | OpenAI-compatible LLM | `api_key`, `base_url`, `model` |
2833

2934
<!-- snippet: executable -->
3035
```python

docs/getting-started/quick-start.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ description: Build and run your first Agora Conversational AI agent in Python wi
66

77
# Quick Start
88

9-
This guide uses the recommended onboarding path:
9+
This guide starts with the standard AgentKit path:
1010

1111
- `app_id`, `app_certificate`, and `area` on `Agora` or `AsyncAgora`
1212
- the `Agent` builder with `.with_stt()`, `.with_llm()`, and `.with_tts()`
@@ -61,7 +61,7 @@ if __name__ == "__main__":
6161

6262
1. `Agora` runs in app-credentials mode when you pass `app_id` and `app_certificate` only.
6363
2. `Agent` holds reusable behavior such as instructions, greeting, and history settings.
64-
3. Vendor classes on the builder select the ASR, LLM, and TTS stack. AgentKit infers Agora-managed configuration when credentials are omitted for supported models.
64+
3. Vendor classes on the builder select the ASR, LLM, and TTS stack. Leave vendor credentials unset for supported Agora-managed models, or provide keys when you want BYOK.
6565
4. `session.start()` generates the required auth tokens and returns the unique agent session ID.
6666

6767
## Async applications
@@ -70,7 +70,7 @@ For `asyncio` services, switch to `AsyncAgora` and `await` the session methods.
7070

7171
## When to use BYOK instead
7272

73-
Use the builder without vendor API keys when you want the fastest path with Agora-managed models.
73+
Use the builder without vendor API keys when you are using supported Agora-managed models.
7474

7575
Use BYOK when you need to:
7676

docs/guides/byok.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,5 +81,5 @@ if __name__ == "__main__":
8181

8282
## Builder-managed vs BYOK
8383

84-
- Builder without vendor keys: fastest path with Agora-managed models
84+
- Builder without vendor keys: supported Agora-managed models
8585
- BYOK: your keys and full vendor control

docs/guides/regional-routing.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ print(client.get_current_url())
108108

109109
## Accessing the Pool Directly
110110

111-
For advanced use, access the underlying `Pool` object:
111+
For advanced use, access the `Pool` object:
112112

113113
```python
114114
pool = client.pool
@@ -127,4 +127,4 @@ area = pool.get_area()
127127
| `next_region()` | sync | sync | Cycle to next region prefix |
128128
| `select_best_domain()` | sync | **`async` (requires `await`)** | DNS-based domain selection |
129129
| `get_current_url()` | sync | sync | Get the current base URL |
130-
| `pool` (property) | sync | sync | Access the underlying `Pool` object |
130+
| `pool` (property) | sync | sync | Access the `Pool` object |

docs/index.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,29 +19,29 @@ The Agora Conversational AI Python SDK lets you build voice-powered AI agents on
1919

2020
**MLLM flow** uses a multimodal model such as OpenAI Realtime, Gemini Live, Vertex AI, or xAI Grok for end-to-end audio.
2121

22-
## Choose a starting point
22+
## Start here
2323

24-
- Use [Quick Start](./getting-started/quick-start.md) if you want the recommended builder-based path with app credentials.
25-
- Use [MLLM Flow](./guides/mllm-flow.md) if you want realtime end-to-end audio with OpenAI Realtime, Gemini Live, Vertex AI, or xAI Grok.
26-
- Use [Cascading Flow](./guides/cascading-flow.md) if you want separate ASR, LLM, and TTS vendors.
24+
- Start with [Quick Start](./getting-started/quick-start.md). It shows the baseline app-credentials setup and starts a cascading ASR -> LLM -> TTS agent.
25+
- Use [MLLM Flow](./guides/mllm-flow.md) when your agent uses one realtime multimodal model, such as OpenAI Realtime, Gemini Live, Vertex AI, or xAI Grok.
26+
- Use [Cascading Flow](./guides/cascading-flow.md) for more examples of the default ASR -> LLM -> TTS flow, including provider-specific configuration.
2727

28-
## SDK layers
28+
## How the SDK is organized
2929

3030
| Layer | What it does | When to use |
3131
|---|---|---|
3232
| **AgentKit** (`Agent`, `AgentSession`, vendor classes) | High-level builder pattern, lifecycle, typed vendors | Most use cases |
33-
| **Fern-generated core** (`client.agents`, `client.telephony`) | Direct REST client mapping every API endpoint | Advanced use cases |
33+
| **Generated REST clients** (`client.agents`, `client.telephony`) | Typed access to REST APIs not covered by AgentKit | Advanced use cases |
3434

3535
## Documentation
3636

3737
| Section | What you will learn |
3838
|---|---|
3939
| [Installation](./getting-started/installation.md) | Install the SDK and prerequisites |
4040
| [Authentication](./getting-started/authentication.md) | App credentials and other auth modes |
41-
| [Quick Start](./getting-started/quick-start.md) | Recommended builder-based onboarding flow |
41+
| [Quick Start](./getting-started/quick-start.md) | App credentials and AgentKit |
4242
| [Agent Builder Features](./guides/agent-builder-features.md) | Turn detection, SAL, filler words, and advanced agent options |
4343
| [BYOK](./guides/byok.md) | Bring your own vendor credentials and config |
44-
| [Architecture](./concepts/architecture.md) | Understand the SDK layers and client types |
44+
| [Architecture](./concepts/architecture.md) | SDK structure and generated REST clients |
4545
| [Agent](./concepts/agent.md) | Configure agents with the fluent builder |
4646
| [AgentSession](./concepts/session.md) | Manage the agent lifecycle |
4747
| [Vendors](./concepts/vendors.md) | Browse all LLM, TTS, STT, MLLM, and Avatar providers |
@@ -52,7 +52,7 @@ The Agora Conversational AI Python SDK lets you build voice-powered AI agents on
5252
| [Error Handling](./guides/error-handling.md) | Handle API errors with ApiError |
5353
| [Pagination](./guides/pagination.md) | Iterate over paginated list endpoints |
5454
| [Advanced](./guides/advanced.md) | Raw response, retries, timeouts, custom httpx client |
55-
| [Low-Level API](./guides/low-level-api.md) | Direct `client.agents.start()` usage |
55+
| [Low-Level API](./guides/low-level-api.md) | Generated REST APIs |
5656
| [Client Reference](./reference/client.md) | Full `Agora` / `AsyncAgora` API |
5757
| [Agent Reference](./reference/agent.md) | Full `Agent` builder API |
5858
| [Session Reference](./reference/session.md) | Full `AgentSession` / `AsyncAgentSession` API |

docs/reference/client.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ url = client.get_current_url()
100100

101101
### `pool` (property)
102102

103-
Access the underlying `Pool` object for advanced domain management.
103+
Access the `Pool` object for advanced domain management.
104104

105105
<!-- snippet: fragment -->
106106
```python

docs/reference/vendors.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,18 @@ from agora_agent import Gemini
131131
llm = Gemini(api_key='your-google-key', model='gemini-2.0-flash-exp')
132132
```
133133

134+
### Other LLM vendors
135+
136+
The SDK also includes named helpers for the remaining Agora-supported LLM providers. These helpers choose the correct request format internally.
137+
138+
| Class | Provider | Key parameters |
139+
|---|---|---|
140+
| `Groq` | Groq | `api_key`, `model`, `base_url?` |
141+
| `VertexAILLM` | Google Vertex AI | `api_key`, `model`, `project_id`, `location`, `url?` |
142+
| `AmazonBedrock` | Amazon Bedrock | `api_key`, `url`, `model` |
143+
| `Dify` | Dify | `api_key`, `url`, `user?`, `conversation_id?` |
144+
| `CustomLLM` | OpenAI-compatible LLM | `api_key`, `model`, `base_url` |
145+
134146
---
135147

136148
## TTS Vendors

0 commit comments

Comments
 (0)