# RealtimeAgent

## ``autogen.agentchat.realtime.experimental.RealtimeAgent [\#](https://docs.ag2.ai/0.10.3/docs/api-reference/autogen/agentchat/realtime/experimental/RealtimeAgent/#autogen.agentchat.realtime.experimental.RealtimeAgent "Permanent link")

```
RealtimeAgent(*, name, audio_adapter=None, system_message='You are a helpful AI Assistant.', llm_config=None, logger=None, observers=None, **client_kwargs)
```

(Experimental) Agent for interacting with the Realtime Clients.

| PARAMETER | DESCRIPTION |
| --- | --- |
| `name` | The name of the agent.<br>**TYPE:**`str` |
| `audio_adapter` | The audio adapter for the agent.<br>**TYPE:**`Optional[RealtimeObserver] = None`**DEFAULT:**`None` |
| `system_message` | The system message for the agent.<br>**TYPE:**`str`**DEFAULT:**`'You are a helpful AI Assistant.'` |
| `llm_config` | The config for the agent.<br>**TYPE:**`(LLMConfig, dict[str, Any], bool)`**DEFAULT:**`None` |
| `logger` | The logger for the agent.<br>**TYPE:**`Optional[Logger]`**DEFAULT:**`None` |
| `observers` | The additional observers for the agent.<br>**TYPE:**`Optional[list[RealtimeObserver]]`**DEFAULT:**`None` |
| `**client_kwargs` | The keyword arguments for the client.<br>**TYPE:**`Any`**DEFAULT:**`{}` |

Source code in `autogen/agentchat/realtime/experimental/realtime_agent.py`

|     |     |
| --- | --- |
| ```<br>34<br>35<br>36<br>37<br>38<br>39<br>40<br>41<br>42<br>43<br>44<br>45<br>46<br>47<br>48<br>49<br>50<br>51<br>52<br>53<br>54<br>55<br>56<br>57<br>58<br>59<br>60<br>61<br>62<br>63<br>64<br>65<br>66<br>67<br>68<br>69<br>70<br>71<br>72<br>``` | ```<br>def __init__(<br>    self,<br>    *,<br>    name: str,<br>    audio_adapter: RealtimeObserver | None = None,<br>    system_message: str = "You are a helpful AI Assistant.",<br>    llm_config: LLMConfig | dict[str, Any] | None = None,<br>    logger: Logger | None = None,<br>    observers: list[RealtimeObserver] | None = None,<br>    **client_kwargs: Any,<br>):<br>    """(Experimental) Agent for interacting with the Realtime Clients.<br>    Args:<br>        name (str): The name of the agent.<br>        audio_adapter (Optional[RealtimeObserver] = None): The audio adapter for the agent.<br>        system_message (str): The system message for the agent.<br>        llm_config (LLMConfig, dict[str, Any], bool): The config for the agent.<br>        logger (Optional[Logger]): The logger for the agent.<br>        observers (Optional[list[RealtimeObserver]]): The additional observers for the agent.<br>        **client_kwargs (Any): The keyword arguments for the client.<br>    """<br>    self._logger = logger<br>    self._name = name<br>    self._system_message = system_message<br>    llm_config = LLMConfig.get_current_llm_config(llm_config)<br>    self._realtime_client: RealtimeClientProtocol = get_client(<br>        llm_config=llm_config, logger=self.logger, **client_kwargs<br>    )<br>    self._registered_realtime_tools: dict[str, Tool] = {}<br>    self._observers: list[RealtimeObserver] = observers if observers else []<br>    self._observers.append(FunctionObserver(logger=logger))<br>    if audio_adapter:<br>        self._observers.append(audio_adapter)<br>    self.callbacks = RealtimeAgentCallbacks()<br>``` |

### ``callbacks`instance-attribute`[\#](https://docs.ag2.ai/0.10.3/docs/api-reference/autogen/agentchat/realtime/experimental/RealtimeAgent/#autogen.agentchat.realtime.experimental.RealtimeAgent.callbacks "Permanent link")

```
callbacks = RealtimeAgentCallbacks()
```

### ``system_message`property`[\#](https://docs.ag2.ai/0.10.3/docs/api-reference/autogen/agentchat/realtime/experimental/RealtimeAgent/#autogen.agentchat.realtime.experimental.RealtimeAgent.system_message "Permanent link")

```
system_message
```
Get the system message for the agent.

### ``logger`property`[\#](https://docs.ag2.ai/0.10.3/docs/api-reference/autogen/agentchat/realtime/experimental/RealtimeAgent/#autogen.agentchat.realtime.experimental.RealtimeAgent.logger "Permanent link")

```
logger
```
Get the logger for the agent.

### ``realtime_client`property`[\#](https://docs.ag2.ai/0.10.3/docs/api-reference/autogen/agentchat/realtime/experimental/RealtimeAgent/#autogen.agentchat.realtime.experimental.RealtimeAgent.realtime_client "Permanent link")

```
realtime_client
```
Get the OpenAI Realtime Client.

### ``registered_realtime_tools`property`[\#](https://docs.ag2.ai/0.10.3/docs/api-reference/autogen/agentchat/realtime/experimental/RealtimeAgent/#autogen.agentchat.realtime.experimental.RealtimeAgent.registered_realtime_tools "Permanent link")

```
registered_realtime_tools
```
Get the registered realtime tools.

### ``register_observer [\#](https://docs.ag2.ai/0.10.3/docs/api-reference/autogen/agentchat/realtime/experimental/RealtimeAgent/#autogen.agentchat.realtime.experimental.RealtimeAgent.register_observer "Permanent link")

```
register_observer(observer)
```

Register an observer with the Realtime Agent.

| PARAMETER | DESCRIPTION |
| --- | --- |
| `observer` | The observer to register.<br>**TYPE:**`RealtimeObserver` |

Source code in `autogen/agentchat/realtime/experimental/realtime_agent.py`

|     |     |
| --- | --- |
| ```<br> 94<br> 95<br> 96<br> 97<br> 98<br> 99<br>100<br>``` | ```<br>def register_observer(self, observer: RealtimeObserver) -> None:<br>    """Register an observer with the Realtime Agent.<br>    Args:<br>        observer (RealtimeObserver): The observer to register.<br>    """<br>    self._observers.append(observer)<br>``` |

### ``start_observers`async`[\#](https://docs.ag2.ai/0.10.3/docs/api-reference/autogen/agentchat/realtime/experimental/RealtimeAgent/#autogen.agentchat.realtime.experimental.RealtimeAgent.start_observers "Permanent link")

```
start_observers()
```

Source code in `autogen/agentchat/realtime/experimental/realtime_agent.py`

|     |     |
| --- | --- |
| ```<br>102<br>103<br>104<br>105<br>106<br>107<br>108<br>109<br>110<br>``` | ```<br>async def start_observers(self) -> None:<br>    for observer in self._observers:<br>        self._tg.start_soon(observer.run, self)<br>    # wait for the observers to be ready<br>    for observer in self._observers:<br>        await observer.wait_for_ready()<br>    await self.callbacks.on_observers_ready()<br>``` |

### ``run`async`[\#](https://docs.ag2.ai/0.10.3/docs/api-reference/autogen/agentchat/realtime/experimental/RealtimeAgent/#autogen.agentchat.realtime.experimental.RealtimeAgent.run "Permanent link")

```
run()
```

Run the agent.

Source code in `autogen/agentchat/realtime/experimental/realtime_agent.py`

|     |     |
| --- | --- |
| ```<br>112<br>113<br>114<br>115<br>116<br>117<br>118<br>119<br>120<br>121<br>122<br>123<br>124<br>125<br>``` | ```<br>async def run(self) -> None:<br>    """Run the agent."""<br>    # everything is run in the same task group to enable easy cancellation using self._tg.cancel_scope.cancel()<br>    async with create_task_group() as self._tg:  # noqa: SIM117<br>        # connect with the client first (establishes a connection and initializes a session)<br>        async with self._realtime_client.connect():<br>            # start the observers and wait for them to be ready<br>            await self.realtime_client.session_update(session_options={"instructions": self.system_message})<br>            await self.start_observers()<br>            # iterate over the events<br>            async for event in self.realtime_client.read_events():<br>                for observer in self._observers:<br>                    await observer.on_event(event)<br>``` |

### ``register_realtime_function [\#](https://docs.ag2.ai/0.10.3/docs/api-reference/autogen/agentchat/realtime/experimental/RealtimeAgent/#autogen.agentchat.realtime.experimental.RealtimeAgent.register_realtime_function "Permanent link")

```
register_realtime_function(*, name=None, description=None)
```

Decorator for registering a function to be used by an agent.

| PARAMETER | DESCRIPTION |
| --- | --- |
| `name` | The name of the function.<br>**TYPE:**`str`**DEFAULT:**`None` |
| `description` | The description of the function.<br>**TYPE:**`str`**DEFAULT:**`None` |

| RETURNS | DESCRIPTION |
| --- | --- |
| `Callable[[F | Tool], Tool]` | Callable[[Union[F, Tool]], Tool]: The decorator for registering a function. |

Source code in `autogen/agentchat/realtime/experimental/realtime_agent.py`

|     |     |
| --- | --- |
| ```<br>127<br>128<br>129<br>130<br>131<br>132<br>133<br>134<br>135<br>136<br>137<br>138<br>139<br>140<br>141<br>142<br>143<br>144<br>145<br>146<br>147<br>148<br>149<br>150<br>151<br>152<br>153<br>154<br>155<br>156<br>157<br>158<br>``` | ```<br>def register_realtime_function(<br>    self,<br>    *,<br>    name: str | None = None,<br>    description: str | None = None,<br>) -> Callable[[F | Tool], Tool]:<br>    """Decorator for registering a function to be used by an agent.<br>    Args:<br>        name (str): The name of the function.<br>        description (str): The description of the function.<br>    Returns:<br>        Callable[[Union[F, Tool]], Tool]: The decorator for registering a function.<br>    """<br>    def _decorator(func_or_tool: F | Tool) -> Tool:<br>        """Decorator for registering a function to be used by an agent.<br>        Args:<br>            func_or_tool (Union[F, Tool]): The function or tool to register.<br>        Returns:<br>            Tool: The registered tool.<br>        """<br>        tool = Tool(func_or_tool=func_or_tool, name=name, description=description)<br>        self._registered_realtime_tools[tool.name] = tool<br>        return tool<br>    return _decorator<br>``` |
