Skip to content

Commit c510c70

Browse files
SDK regeneration
Unable to analyze changes with AI, incrementing PATCH version.
1 parent afdf9d0 commit c510c70

11 files changed

Lines changed: 98 additions & 35 deletions

.fernignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
src/agoraio/pool_client.py
33
src/agoraio/__init__.py
44
src/agoraio/core/domain.py
5+
changelog.md

README.md

Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,17 @@
33
[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Ffern-demo%2Fagoraio-python-sdk)
44
[![pypi](https://img.shields.io/pypi/v/agoraio-sdk)](https://pypi.python.org/pypi/agoraio-sdk)
55

6-
The Agoraio Python library provides convenient access to the Agoraio APIs from Python.
6+
The Agora Conversational AI SDK provides convenient access to the Agora Conversational AI APIs,
7+
enabling you to build voice-powered AI agents with support for both cascading flows (ASR -> LLM -> TTS)
8+
and multimodal flows (MLLM) for real-time audio processing.
9+
710

811
## Table of Contents
912

13+
- [Documentation](#documentation)
1014
- [Installation](#installation)
1115
- [Reference](#reference)
16+
- [Mllm Flow Multimodal](#mllm-flow-multimodal)
1217
- [Usage](#usage)
1318
- [Async Client](#async-client)
1419
- [Exception Handling](#exception-handling)
@@ -20,6 +25,10 @@ The Agoraio Python library provides convenient access to the Agoraio APIs from P
2025
- [Custom Client](#custom-client)
2126
- [Contributing](#contributing)
2227

28+
## Documentation
29+
30+
API reference documentation is available [here](https://docs.agora.io/en/conversational-ai/overview).
31+
2332
## Installation
2433

2534
```sh
@@ -30,6 +39,71 @@ pip install agoraio-sdk
3039

3140
A full reference for this library is available [here](https://github.com/fern-demo/agoraio-python-sdk/blob/HEAD/./reference.md).
3241

42+
## MLLM Flow (Multimodal)
43+
44+
For real-time audio processing using OpenAI's Realtime API or Google Gemini Live, use the MLLM (Multimodal Large Language Model) flow instead of the cascading ASR -> LLM -> TTS flow. See the [MLLM Overview](https://docs.agora.io/en/conversational-ai/models/mllm/overview) for more details.
45+
46+
```python
47+
from agoraio-sdk import Agora
48+
from agoraio-sdk.agents import (
49+
StartAgentsRequestProperties,
50+
StartAgentsRequestPropertiesAdvancedFeatures,
51+
StartAgentsRequestPropertiesMllm,
52+
StartAgentsRequestPropertiesMllmVendor,
53+
StartAgentsRequestPropertiesTts,
54+
StartAgentsRequestPropertiesTtsVendor,
55+
StartAgentsRequestPropertiesLlm,
56+
StartAgentsRequestPropertiesTurnDetection,
57+
StartAgentsRequestPropertiesTurnDetectionType,
58+
)
59+
60+
client = Agora(
61+
username="YOUR_APP_ID",
62+
password="YOUR_APP_CERTIFICATE",
63+
)
64+
65+
client.agents.start(
66+
appid="your_app_id",
67+
name="mllm_agent",
68+
properties=StartAgentsRequestProperties(
69+
channel="channel_name",
70+
token="your_token",
71+
agent_rtc_uid="1001",
72+
remote_rtc_uids=["1002"],
73+
idle_timeout=120,
74+
advanced_features=StartAgentsRequestPropertiesAdvancedFeatures(
75+
enable_mllm=True,
76+
),
77+
mllm=StartAgentsRequestPropertiesMllm(
78+
url="wss://api.openai.com/v1/realtime",
79+
api_key="<your_openai_api_key>",
80+
vendor=StartAgentsRequestPropertiesMllmVendor.OPENAI,
81+
params={
82+
"model": "gpt-4o-realtime-preview",
83+
"voice": "alloy",
84+
},
85+
input_modalities=["audio"],
86+
output_modalities=["text", "audio"],
87+
greeting_message="Hello! I'm ready to chat in real-time.",
88+
),
89+
turn_detection=StartAgentsRequestPropertiesTurnDetection(
90+
type=StartAgentsRequestPropertiesTurnDetectionType.SERVER_VAD,
91+
threshold=0.5,
92+
silence_duration_ms=500,
93+
),
94+
# TTS and LLM are still required but not used when MLLM is enabled
95+
tts=StartAgentsRequestPropertiesTts(
96+
vendor=StartAgentsRequestPropertiesTtsVendor.MICROSOFT,
97+
params={},
98+
),
99+
llm=StartAgentsRequestPropertiesLlm(
100+
url="https://api.openai.com/v1/chat/completions",
101+
),
102+
),
103+
)
104+
```
105+
106+
33107
## Usage
34108

35109
Instantiate and use the client with the following:

changelog.md

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
## 0.0.8 - 2025-11-20
2-
* chore: remove changelog.md file
3-
* The changelog file has been completely removed from the repository. This appears to be part of a cleanup or restructuring effort to remove outdated documentation.
4-
* Key changes:
5-
* Delete changelog.md file containing version 0.0.7 release notes
6-
* Remove SDK regeneration and patch version increment documentation
7-
* Clean up repository structure by removing legacy changelog
8-
* 🌿 Generated with Fern
1+
## 0.0.9 - 2026-01-09
2+
* SDK regeneration
3+
* Unable to analyze changes with AI, incrementing PATCH version.
94

poetry.lock

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name = "agoraio-sdk"
33

44
[tool.poetry]
55
name = "agoraio-sdk"
6-
version = "0.0.8"
6+
version = "0.0.9"
77
description = ""
88
readme = "README.md"
99
authors = []

src/agoraio/agents/types/list_agents_response.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111

1212
class ListAgentsResponse(UncheckedBaseModel):
13-
data: typing.Optional[ListAgentsResponseData] = pydantic.Field(default=None)
13+
data: ListAgentsResponseData = pydantic.Field()
1414
"""
1515
Agent data.
1616
"""

src/agoraio/agents/types/list_agents_response_data.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ class ListAgentsResponseData(UncheckedBaseModel):
2020
The number of agents returned.
2121
"""
2222

23-
list_: typing_extensions.Annotated[
24-
typing.Optional[typing.List[ListAgentsResponseDataListItem]], FieldMetadata(alias="list")
25-
] = pydantic.Field(default=None)
23+
list_: typing_extensions.Annotated[typing.List[ListAgentsResponseDataListItem], FieldMetadata(alias="list")] = (
24+
pydantic.Field()
25+
)
2626
"""
2727
A list of agents that meets the criteria.
2828
"""

src/agoraio/core/__init__.py

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,8 @@
66
from importlib import import_module
77

88
if typing.TYPE_CHECKING:
9-
from .domain import Area, Pool, create_pool
109
from .file import File, with_content_type
11-
_dynamic_imports: typing.Dict[str, str] = {
12-
"Area": ".domain",
13-
"Pool": ".domain",
14-
"create_pool": ".domain",
15-
"File": ".file",
16-
"with_content_type": ".file",
17-
}
10+
_dynamic_imports: typing.Dict[str, str] = {"File": ".file", "with_content_type": ".file"}
1811

1912

2013
def __getattr__(attr_name: str) -> typing.Any:
@@ -38,4 +31,4 @@ def __dir__():
3831
return sorted(lazy_attrs)
3932

4033

41-
__all__ = ["Area", "Pool", "create_pool", "File", "with_content_type"]
34+
__all__ = ["File", "with_content_type"]

src/agoraio/core/client_wrapper.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ def __init__(
2424

2525
def get_headers(self) -> typing.Dict[str, str]:
2626
headers: typing.Dict[str, str] = {
27-
"User-Agent": "agoraio-sdk/AUTO",
27+
"User-Agent": "agoraio-sdk/0.0.9",
2828
"X-Fern-Language": "Python",
2929
"X-Fern-SDK-Name": "agoraio-sdk",
30-
"X-Fern-SDK-Version": "0.0.8",
30+
"X-Fern-SDK-Version": "0.0.9",
3131
**(self.get_custom_headers() or {}),
3232
}
3333
headers["Authorization"] = httpx.BasicAuth(self._get_username(), self._get_password())._auth_header

src/agoraio/telephony/types/list_telephony_response.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111

1212
class ListTelephonyResponse(UncheckedBaseModel):
13-
data: typing.Optional[ListTelephonyResponseData] = pydantic.Field(default=None)
13+
data: ListTelephonyResponseData = pydantic.Field()
1414
"""
1515
Call data object.
1616
"""

0 commit comments

Comments
 (0)