Создание продвинутых агентов MCP (Model Context Protocol) с мультиагентной координацией, учётом контекста и интеграцией Gemini

В этом руководстве мы рассмотрим процесс создания продвинутого агента MCP (Model Context Protocol), который будет работать в Jupyter или Google Colab. Мы разрабатываем систему с учётом практической применимости в реальных условиях, уделяя особое внимание мультиагентной координации, учёту контекста, управлению памятью и динамическому использованию инструментов.

Импорт библиотек и настройка логгирования

Мы начинаем с импорта основных библиотек Python для обработки данных, логгирования и структурирования агентов, а также настраиваем логгирование для облегчения отладки. Затем проверяем наличие API Gemini, чтобы можно было беспрепятственно интегрировать его, если он установлен; в противном случае мы работаем в демонстрационном режиме.

“`python
import json
import logging
from typing import Dict, List, Any, Optional
from dataclasses import dataclass
from enum import Enum
from datetime import datetime
import time

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(name)

try:
import google.generativeai as genai
GEMINI_AVAILABLE = True
except ImportError:
print(“google-generativeai not installed. Run: pip install google-generativeai”)
GEMINI_AVAILABLE = False
“`

Определение ролей агентов и структуры сообщений

Мы определяем основные строительные блоки нашей агентской системы. Создаём `AgentRole` для распределения чётких обязанностей, используем `Message` для хранения разговоров с учётом контекста и `AgentContext` для захвата идентичности, роли, памяти и инструментов каждого агента.

“`python
class AgentRole(Enum):
COORDINATOR = “coordinator”
RESEARCHER = “researcher”
ANALYZER = “analyzer”
EXECUTOR = “executor”

@dataclass
class Message:
role: str
content: str
timestamp: datetime
metadata: Dict[str, Any] = None

@dataclass
class AgentContext:
agent_id: str
role: AgentRole
capabilities: List[str]
memory: List[Message]
tools: List[str]
“`

Класс MCPAgent

Мы реализуем `MCPAgent` как удобного для ноутбуков агента, осведомлённого о ролях, который инициализирует возможности и инструменты на основе назначенной роли, сохраняет память сообщений и генерирует контекстно-зависимые ответы.

“`python
class MCPAgent:
“””Advanced MCP Agent with evolved capabilities – Jupyter Compatible”””

def init(self, agentid: str, role: AgentRole, apikey: str = None):
self.agentid = agentid
self.role = role
self.apikey = apikey
self.memory = []
self.context = AgentContext(
agentid=agentid,
role=role,
capabilities=self.initcapabilities(),
memory=[],
tools=self.inittools()
)
self.model = None
if GEMINIAVAILABLE and apikey:
try:
genai.configure(apikey=apikey)
self.model = genai.GenerativeModel(‘gemini-pro’)
print(f” Agent {agent_id} initialized with Gemini API”)
except Exception as e:
print(f” Gemini configuration failed: {e}”)
print(” Running in demo mode with simulated responses”)
else:
print(f” Agent {agent_id} running in demo mode”)
“`

Класс MCPAgentSwarm

Мы управляем роем агентов, создаём их по требованию и координируем сложные задачи через декомпозицию, сотрудничество и финальный синтез.

“`python
class MCPAgentSwarm:
“””Multi-agent coordination system – Jupyter Compatible”””

def init(self, api_key: str = None):
self.apikey = apikey
self.agents = {}
self.task_history = []
self.results = {}

def createagent(self, agentid: str, role: AgentRole) -> MCPAgent:
“””Create and register a new agent”””
agent = MCPAgent(agentid, role, self.apikey)
self.agents[agent_id] = agent
print(f” Created agent: {agent_id} with role: {role.value}”)
return agent

def coordinate_task(self, task: str) -> Dict[str, Any]:
“””Coordinate complex task across multiple agents – Synchronous”””
“`

Демонстрация совместимости с ноутбуком

Мы упаковываем всё в удобный для ноутбука демонстрационный файл, который демонстрирует систему агентов MCP в действии.

“`python
def demonotebookcompatible():
“””Demonstrate advanced MCP agent capabilities – Notebook Compatible”””

print(” Starting Advanced MCP Agent Tutorial”)
print(” Jupyter/Colab Compatible Version”)
print(“=” * 60)

API_KEY = None # Set to your actual key

if not API_KEY:
print(” Running in DEMO MODE (simulated responses)”)
print(” Set API_KEY variable for real Gemini AI responses”)
print(“-” * 60)

swarm = MCPAgentSwarm(API_KEY)

print(“\n Demo 1: Single Agent Interaction”)
researcher = swarm.createagent(“researchagent”, AgentRole.RESEARCHER)

result = researcher.process_message(
“Research the latest trends in AI agent architectures and multi-agent systems”
)
print(f”\n Researcher Response:”)
print(f” {result[‘response’]}”)
print(f” Capabilities Used: {result[‘capabilities_used’]}”)
print(f” Suggested Next Actions: {result[‘next_actions’]}”)

print(“\n\n Demo 2: Multi-Agent Coordination”)

complex_task = “””
Analyze the impact of AI agents on software development productivity.
Include research on current tools, performance metrics, future predictions,
and provide actionable recommendations for development teams.
“””

coordinationresult = swarm.coordinatetask(complex_task)

print(“\n\n Demo 3: Swarm Status”)
status = swarm.getswarmstatus()
print(f” Total Agents: {status[‘total_agents’]}”)
print(f” Agent Roles: {status[‘agent_roles’]}”)
print(f” Tasks Completed: {status[‘tasks_completed’]}”)

print(“\n Tutorial Completed Successfully!”)
return swarm
“`

В заключение мы успешно продемонстрировали, как наши агенты MCP могут координировать, декомпозировать задачи и синтезировать результаты в действенные инсайты в рамках удобной для ноутбуков синхронной настройки.

1. Какие основные компоненты включены в структуру агентов MCP, описанных в статье?

В статье описаны следующие основные компоненты агентов MCP:
* `AgentRole` для распределения чётких обязанностей;
* `Message` для хранения разговоров с учётом контекста;
* `AgentContext` для захвата идентичности, роли, памяти и инструментов каждого агента.

2. Какие шаги предпринимаются для инициализации агента MCP с использованием Gemini в Jupyter или Google Colab?

Для инициализации агента MCP с использованием Gemini в Jupyter или Google Colab выполняются следующие шаги:
* Импортируются основные библиотеки Python для обработки данных, логгирования и структурирования агентов.
* Настраивается логгирование для облегчения отладки.
* Проверяется наличие API Gemini, чтобы можно было беспрепятственно интегрировать его, если он установлен; в противном случае работает в демонстрационном режиме.
* Создаётся экземпляр класса `MCPAgent` с указанием идентификатора агента, роли и ключа API.

3. Какие классы и методы используются для управления роем агентов в системе MCPAgentSwarm?

Для управления роем агентов в системе MCPAgentSwarm используются следующие классы и методы:
* Класс `MCPAgentSwarm` для координации системы мультиагентной координации.
* Метод `create_agent` для создания и регистрации нового агента.
* Метод `coordinate_task` для координации сложных задач через декомпозицию, сотрудничество и финальный синтез.

Источник