mirror of
https://github.com/microsoft/autogen.git
synced 2025-06-26 22:30:10 +00:00

closes #3950 closes #3702 What this is doing: I am refactoring the services on the .NET runtime and attempting to clarify the naming and organization. I added this doc to help capture the naming and concepts. AgentRuntime / Worker should work similar to the python version and enables running the whole agent system in one process. For remote the system uses the versions of the services in the grpc folder. lots of other bug fixes/threading cleanup - passing cancellation token throughout Services update clarifies the naming and roles: Worker: Hosts the Agents and is a client to the Gateway Gateway: -- RPC gateway for the other services APIs -- Provides an RPC bridge between the workers and the Event Bus Registry: keeps track of the agents in the system and which events they can handle AgentState: persistent state for agents
1.8 KiB
1.8 KiB
AutoGen Services
Overview
Each AutoGen agent system has one or more Agent Workers and a set of services for managing/supporting the agents. The services and workers can all be hosted in the same process or in a distributed system. When in the same process communication and event delivery is in-memory. When distributed, workers communicate with the service over gRPC. In all cases, events are packaged as CloudEvents. There are multiple options for the backend services:
- In-Memory: the Agent Workers and Services are all hosted in the same process and communicate over in-memory channels. Available for python and .NET.
- Python only: Agent workers communicate with a python hosted service that implements an in-memory message bus and agent registry.
- Micrososft Orleans: a distributed actor system that can host the services and workers, enables distributed state with persistent storage, can leverage multiple event bus types, and cross-language agent communication.
- Roadmap: support for other languages distributed systems such as dapr or Akka.
The Services in the system include:
- Worker: Hosts the Agents and is a client to the Gateway
- Gateway: -- RPC gateway for the other services APIs -- Provides an RPC bridge between the workers and the Event Bus -- Message Session state (track message queues/delivery)
- Registry: keeps track of the {agents:agent types}:{Subscription/Topics} in the system and which events they can handle -- Roadmap: add lookup api in gateway
- AgentState: persistent state for agents
- Routing: delivers events to agents based on their subscriptions+topics -- Roadmap: add subscription management APIs
- Roadmap: Management APIs for the Agent System
- Roadmap: Scheduling: manages placement of agents
- Roadmap: Discovery: allows discovery of agents and services