Skip to main content

Microsoft AutoGen integration for MCAL - Goal-aware memory for multi-agent systems

Project description

mcal-autogen

Microsoft AutoGen integration for MCAL (Multi-turn Conversation Abstraction Layer), bringing goal-aware memory to AutoGen agents.

Installation

pip install mcal-autogen

# With AutoGen dependencies
pip install mcal-autogen[autogen]

Quick Start

from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from mcal import MCAL
from mcal_autogen import MCALMemory

# Initialize MCAL with your project goal
mcal = MCAL(goal="Help users build data pipelines")

# Create MCAL-backed memory
memory = MCALMemory(mcal, user_id="user_123")

# Create an agent with MCAL memory
model_client = OpenAIChatCompletionClient(model="gpt-4")
agent = AssistantAgent(
    name="data_engineer",
    model_client=model_client,
    memory=[memory],
    system_message="You are a helpful data engineering assistant.",
)

# Use the agent - MCAL automatically tracks context and decisions
result = await agent.run(task="How should I set up my ETL pipeline?")

Features

Goal-Aware Memory

MCAL's unique value is understanding your project's goals and maintaining context across conversations:

# Initialize with a clear goal
mcal = MCAL(goal="Build a real-time fraud detection system")
memory = MCALMemory(mcal)

# Add relevant context
from autogen_core.memory import MemoryContent
await memory.add(MemoryContent(
    content="We decided to use Kafka for streaming",
    mime_type="text/plain",
    metadata={"category": "architecture", "decision": True}
))

# Query returns goal-relevant results
results = await memory.query("What messaging system should I use?")
# Returns Kafka decision with goal-relevance scoring

Decision Tracking

Track architectural and project decisions automatically:

memory = MCALMemory(
    mcal,
    enable_goal_tracking=True,  # Extract goals from content
    include_decisions=True,      # Include decisions in search
)

# Decisions are automatically tracked
await memory.add(MemoryContent(
    content="After evaluating options, we chose PostgreSQL for its JSON support",
    mime_type="text/plain"
))

# Query finds relevant decisions
results = await memory.query("database selection")

User Isolation

Support multi-tenant scenarios with user isolation:

# Create separate memories for different users
user1_memory = MCALMemory(mcal, user_id="alice")
user2_memory = MCALMemory(mcal, user_id="bob")

# Each user has isolated memory
await user1_memory.add(MemoryContent(content="Alice prefers Python"))
await user2_memory.add(MemoryContent(content="Bob prefers Rust"))

# Queries only return user-specific results
results = await user1_memory.query("language preference")
# Only returns Alice's preference

TTL Support

Configure time-to-live for memory entries:

memory = MCALMemory(mcal, default_ttl_minutes=60)  # 1 hour default

# Or per-entry TTL via metadata
await memory.add(MemoryContent(
    content="Temporary context",
    mime_type="text/plain",
    metadata={"ttl_minutes": 15}  # 15 minute TTL
))

Integration with AutoGen Features

With AssistantAgent

from autogen_agentchat.agents import AssistantAgent

agent = AssistantAgent(
    name="assistant",
    model_client=model_client,
    memory=[memory],  # MCAL memory integrates seamlessly
)

With Teams

from autogen_agentchat.teams import RoundRobinGroupChat

# Share MCAL memory across team members
shared_memory = MCALMemory(mcal, user_id="team_alpha")

coder = AssistantAgent("coder", model_client=model_client, memory=[shared_memory])
reviewer = AssistantAgent("reviewer", model_client=model_client, memory=[shared_memory])

team = RoundRobinGroupChat([coder, reviewer])

Context Window Management

MCAL automatically manages context relevance:

memory = MCALMemory(
    mcal,
    max_results=10,           # Limit results per query
    score_threshold=0.5,      # Minimum relevance score
)

# update_context adds relevant memories to the agent's context
result = await memory.update_context(model_context)

API Reference

MCALMemory

class MCALMemory(Memory):
    def __init__(
        self,
        mcal: MCAL,
        user_id: str = "default",
        name: str = "mcal_memory",
        max_results: int = 10,
        score_threshold: float = 0.0,
        default_ttl_minutes: Optional[float] = None,
        enable_goal_tracking: bool = True,
        include_decisions: bool = True,
    ):
        """
        Initialize MCAL-backed memory for AutoGen.
        
        Args:
            mcal: Initialized MCAL instance
            user_id: User identifier for memory isolation
            name: Memory instance name
            max_results: Maximum results to return from queries
            score_threshold: Minimum relevance score (0-1)
            default_ttl_minutes: Default TTL in minutes
            enable_goal_tracking: Extract goals from content
            include_decisions: Include decisions in search results
        """

Key Methods

Method Description
add(content) Add content to memory
query(query) Search for relevant memories
update_context(model_context) Update agent context with memories
clear() Clear all memory entries
close() Cleanup resources

Requirements

  • Python >= 3.10
  • mcal >= 0.1.0
  • autogen-core >= 0.4.0 (optional)
  • autogen-agentchat >= 0.4.0 (optional)

License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcal_ai_autogen-0.2.0.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcal_ai_autogen-0.2.0-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file mcal_ai_autogen-0.2.0.tar.gz.

File metadata

  • Download URL: mcal_ai_autogen-0.2.0.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.11

File hashes

Hashes for mcal_ai_autogen-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b52dc601f97c226df5f8c0227970685f1ec9bffcbc3994099c13a4c9d0e6c71d
MD5 904cf7b58c39f3ba351227332fb93804
BLAKE2b-256 2a076b08db83d618fd0cfd7b4fb5c47d6f76579af6c1c2c20518837be01aca2f

See more details on using hashes here.

File details

Details for the file mcal_ai_autogen-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mcal_ai_autogen-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 94e4f41396de206b5148d25fa5e2eeeb12387accea548589d57af852d91ee183
MD5 f841f11c018f351d3e9073d3fc585fbd
BLAKE2b-256 ec1577b10c34be7cd0692894e82c09146e7d4e11df7d350fb20f72cd52c6d7b3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page