autogen/docs/design/05 - Services.md
Ryan Sweet 458d273fc4
Refactoring the services and implementing an in-memory runtime for .NET (#4005)
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
2024-11-12 11:04:59 -08:00

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