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