Skip to Content
Aegis Enterprise
DocumentationAgent CoreAgent/Teams in config

Understanding Config-Driven Agent Definitions

Aegis adopts a config-driven approach to defining LLM agents and agent teams, following best practices in modern software and ML systems. This page helps software engineers understand why this approach is superior to imperative (code-first) methods in production-grade LLM workflows.

Why Use Config Over Code?

Defining agents via configuration (YAML/JSON) instead of hardcoding them in Python offers clear benefits:

1. Separation of Concerns

Configuration defines what your agents and teams do. Code defines how they operate.

  • Keeps logic (code) clean and decoupled from behavior/setup (config)
  • Mirrors infrastructure practices (e.g., Kubernetes YAML, Terraform)

2. Faster Iteration Without Redeployment

  • Switch models, change prompts, or add tools by editing config
  • No need to repackage or redeploy code for minor changes

3. Collaboration-Friendly

  • Non-engineers (e.g., prompt designers, product leads) can edit config
  • Agents, teams, and tools become reviewable and shareable

4. Reproducibility and Version Control

  • Config files capture the complete agent setup as a single source of truth
  • Easily diff-able, auditable, and portable between environments

5. Interoperability With UIs and Services

  • The same config can be used in local testing, UI editors, and cloud deployment
  • Enables drag-and-drop or declarative agent builders (e.g., AutoGen Studio)

How Aegis Implements Config-Driven Agents

Aegis builds on Microsoft AutoGen’s ComponentModel, which lets you define agents, teams, tools, and models declaratively. Each component:

  • Can be created from config via .from_config()
  • Can be serialized to config via .to_config()

Example – Defining an Agent Team via Code vs Config

Imperative (Code-Based)

from autogen_agentchat.agents import AssistantAgent from autogen_agentchat.teams import RoundRobinGroupChat from autogen_ext.models.openai import OpenAIChatCompletionClient from autogen_agentchat.conditions import TextMentionTermination agent = AssistantAgent( name="weather_agent", model_client=OpenAIChatCompletionClient(model="gpt-4o-mini") ) agent_team = RoundRobinGroupChat( participants=[agent], termination_condition=TextMentionTermination("TERMINATE") )

Declarative (Config-Based JSON)

{ "provider": "autogen_agentchat.teams.RoundRobinGroupChat", "component_type": "team", "config": { "participants": [ { "provider": "autogen_agentchat.agents.AssistantAgent", "component_type": "agent", "config": { "name": "weather_agent", "model_client": { "provider": "autogen_ext.models.openai.OpenAIChatCompletionClient", "component_type": "model", "config": { "model": "gpt-4o-mini" } }, "system_message": "You are a helpful AI assistant... Reply with TERMINATE when done." } } ], "termination_condition": { "provider": "autogen_agentchat.conditions.TextMentionTermination", "component_type": "termination", "config": { "text": "TERMINATE" } } } }

This JSON can be loaded with:

from autogen_agentchat.teams import RoundRobinGroupChat new_team = RoundRobinGroupChat.from_config(config)

Benefits of Using Config Files

  • Modularity: Components (agents, tools) can be reused across projects.
  • Maintainability: Easier updates and debugging; changes localized in config.
  • Reproducibility: Full setup captured and sharable without diving into code.
  • Collaboration: Non-engineers can modify behavior safely.
  • Validation: Pydantic schemas ensure config correctness at load time.

Comparison: Declarative vs Imperative

AspectDeclarative (Config)Imperative (Code)
FlexibilityGreat for structure and compositionBest for custom logic and conditionals
IterationEasy to edit without code changesRequires redeploy or code push
ReproducibilityFully portable and diff-ableDepends on code + state, harder to snapshot
CollaborationAccessible to non-devsRequires Python knowledge
DeploymentCan be used across CLI, UI, APITightly coupled to runtime
DebuggingHarder with complex conditionalsEasy to use breakpoints, logs, etc.

When Not to Use Config?

  • Static behaviors that never change across environments
  • Small prototypes or one-off experiments
  • Advanced logic that config can’t express

Industry Best Practices

  • 12-Factor App: Config belongs outside of code (factor III)
  • Hydra: Enables experimentation via config-based component instantiation
  • Kubernetes/Terraform: Declarative manifests = reliable, auditable infra
  • AutoGen Studio: UI-backed config = collaboration, portability

Conclusion

Configuration is a powerful tool to define and manage LLM agent workflows. Aegis makes config-driven teams the default, letting engineers:

  • Focus on logic, not plumbing
  • Share workflows across teams
  • Scale to production without code rewrites

For real examples, see the /examples/teams/ directory or visit AutoGen Studio.

Last updated on