Создание продвинутых агентов 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` для координации сложных задач через декомпозицию, сотрудничество и финальный синтез.

Источник