mirror of
https://github.com/microsoft/autogen.git
synced 2025-09-08 07:46:24 +00:00
Update foundation chapter on runtime running (#175)
This commit is contained in:
parent
2e7c7e2d82
commit
5abaacc56e
@ -72,6 +72,7 @@ send a message to the agent we just registered:
|
|||||||
|
|
||||||
```python
|
```python
|
||||||
agent = runtime.get("my_agent")
|
agent = runtime.get("my_agent")
|
||||||
|
run_context = runtime.start() # Start processing messages in the background.
|
||||||
await runtime.send_message("Hello, World!", agent)
|
await runtime.send_message("Hello, World!", agent)
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -87,23 +88,41 @@ is only used to communicate with the agent or retrieve its metadata (e.g., descr
|
|||||||
|
|
||||||
### Running the Agent Runtime
|
### Running the Agent Runtime
|
||||||
|
|
||||||
The above code snippets will not actually produce any output because the
|
The above code snippet uses `runtime.start()` to start a background task
|
||||||
runtime is not running.
|
to process and deliver messages to recepients' message handlers.
|
||||||
The local embedded runtime {py:class}`~agnext.application.SingleThreadedAgentRuntime`
|
This is a feature of the
|
||||||
can be called to process messages until there are no more messages to process.
|
local embedded runtime {py:class}`~agnext.application.SingleThreadedAgentRuntime`.
|
||||||
|
|
||||||
|
To stop the background task immediately, use the `stop()` method:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
run_context = runtime.start()
|
run_context = runtime.start()
|
||||||
await run_context.stop_when_idle()
|
# ... Send messages, publish messages, etc.
|
||||||
|
await run_context.stop() # This will return immediately but will not cancel
|
||||||
|
# any in-progress message handling.
|
||||||
```
|
```
|
||||||
|
|
||||||
`runtime.start()` will start a background task to process messages. You can directly process messages without a background task using:
|
You can resume the background task by calling `start()` again.
|
||||||
|
|
||||||
|
For batch scenarios such as running benchmarks for evaluating agents,
|
||||||
|
you may want to wait for the background task to stop automatically when
|
||||||
|
there are no unprocessed messages and no agent is handling messages --
|
||||||
|
the batch may considered complete.
|
||||||
|
You can achieve this by using the `stop_when_idle()` method:
|
||||||
|
|
||||||
|
```python
|
||||||
|
run_context = runtime.start()
|
||||||
|
# ... Send messages, publish messages, etc.
|
||||||
|
await run_context.stop_when_idle() # This will block until the runtime is idle.
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also directly process messages one-by-one without a background task using:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
await runtime.process_next()
|
await runtime.process_next()
|
||||||
```
|
```
|
||||||
|
|
||||||
Other runtime implementations will have their own way of running the runtime.
|
Other runtime implementations will have their own ways of running the runtime.
|
||||||
|
|
||||||
## Messages
|
## Messages
|
||||||
|
|
||||||
@ -330,8 +349,9 @@ the message should be published via the runtime with the
|
|||||||
{py:meth}`agnext.core.AgentRuntime.publish_message` method.
|
{py:meth}`agnext.core.AgentRuntime.publish_message` method.
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
# ... Replace send_message with publish_message in the above example.
|
||||||
await runtime.publish_message("Hello, World! From the runtime!", namespace="default")
|
await runtime.publish_message("Hello, World! From the runtime!", namespace="default")
|
||||||
await runtime.process_until_idle()
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
Running the above code will produce the following output:
|
Running the above code will produce the following output:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user