autogen/docs/design/05 - Services.md

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