Skip to main content

Building a Universal Assistant

This tutorial demonstrates how to create a versatile Universal Assistant using CAP and LangGraph that can handle multiple types of tasks and data sources.

Video Tutorial

Features

  • Multi-modal input processing
  • Dynamic tool selection
  • Adaptive response generation
  • Context-aware interactions
  • Multiple data source integration
  • MCP-based orchestration for reliable communication

Implementation

from cap.agents import UniversalAgent
from cap.tools import ToolRegistry
from cap.memory import ConversationMemory
from cap.mcp import MCPClient

class UniversalAssistant(UniversalAgent):
def __init__(self):
super().__init__()
self.memory = ConversationMemory()
self.tools = ToolRegistry()
self.mcp = MCPClient()

async def process_input(self, input_data: dict) -> dict:
# Determine input type and context
context = await self.analyze_input(input_data)

# Select appropriate tools
selected_tools = self.tools.select_for_context(context)

# Process with selected tools via MCP
results = await self.mcp.process_with_tools(input_data, selected_tools)

# Generate appropriate response
response = await self.generate_response(results, context)

# Update memory
self.memory.add_interaction(input_data, response)

return response

Deployment

module "universal_assistant" {
source = "./modules/lambda"

name = "universal-assistant"
runtime = "python3.9"
handler = "handler.lambda_handler"

environment = {
OPENAI_API_KEY = var.openai_api_key
MEMORY_STORE = var.memory_store
TOOL_CONFIG = var.tool_config
MCP_SERVER_URL = var.mcp_server_url
}
}

Key Components

Input Analysis

  • Content type detection
  • Context extraction
  • Intent recognition
  • Priority assessment

MCP Integration

  • Reliable tool communication
  • Load balancing
  • Error handling
  • Performance monitoring

Tool Management

  • Dynamic tool registration
  • Context-based selection
  • Performance monitoring
  • Error handling

Data Sources

  • Integration with multiple API data sources
  • Create specialized agents for different data sources
  • Combine multiple data sources for comprehensive insights
  • Automated source selection based on context

Try It Out

  1. Clone the repository
  2. Follow setup in Getting Started
  3. Configure required API keys
  4. Deploy using provided Terraform configuration
  5. Test with various input types

Learn More