В этом руководстве мы реализуем протокол Agent Communication Protocol (ACP) путём создания гибкой системы обмена сообщениями, совместимой с ACP, на языке Python. Для обработки естественного языка мы используем API Google Gemini.
Установка и настройка
Для начала установим и настроим библиотеку google-generativeai. Руководство знакомит с основными абстракциями, типами сообщений, перформативами и классом данных ACPMessage, который стандартизирует взаимодействие между агентами.
“`python
import google.generativeai as genai
import json
import time
import uuid
from enum import Enum
from typing import Dict, List, Any, Optional
from dataclasses import dataclass, asdict
GEMINIAPIKEY = “Use Your Gemini API Key”
genai.configure(apikey=GEMINIAPI_KEY)
“`
Определение типов сообщений ACP
Перечисление ACPMessageType определяет основные категории сообщений, используемые в протоколе Agent Communication Protocol, включая запросы, ответы, информационные рассылки, запросы и управляющие действия.
“`python
class ACPMessageType(Enum):
“””Стандартные типы сообщений ACP”””
REQUEST = “request”
RESPONSE = “response”
INFORM = “inform”
QUERY = “query”
SUBSCRIBE = “subscribe”
UNSUBSCRIBE = “unsubscribe”
ERROR = “error”
ACK = “acknowledge”
“`
Определение перформативов ACP
Перечисление ACPPerformative фиксирует различные речевые акты, которые агенты могут использовать при взаимодействии в рамках фреймворка ACP.
“`python
class ACPPerformative(Enum):
“””Речевые акты (перформативы) ACP”””
TELL = “tell”
ASK = “ask”
REPLY = “reply”
REQUEST_ACTION = “request-action”
AGREE = “agree”
REFUSE = “refuse”
PROPOSE = “propose”
ACCEPT = “accept”
REJECT = “reject”
“`
Класс ACPMessage
Класс ACPMessage инкапсулирует все поля, необходимые для структурированного обмена ACP, включая идентификаторы, участников, перформатив, полезную нагрузку и метаданные, такие как версия протокола, язык и временные метки.
“`python
@dataclass
class ACPMessage:
“””Структура сообщения протокола Agent Communication”””
message_id: str
sender: str
receiver: str
performative: str
content: Dict[str, Any]
protocol: str = “ACP-1.0”
conversation_id: str = None
reply_to: str = None
language: str = “english”
encoding: str = “json”
timestamp: float = None
“`
Класс ACPAgent
Класс ACPAgent инкапсулирует автономного агента, способного отправлять, получать и обрабатывать сообщения, соответствующие протоколу ACP.
“`python
class ACPAgent:
“””Агент, реализующий протокол Agent Communication”””
def init(self, agent_id: str, name: str, capabilities: List[str]):
self.agentid = agentid
self.name = name
self.capabilities = capabilities
self.model = genai.GenerativeModel(“gemini-1.5-flash”)
self.message_queue: List[ACPMessage] = []
self.subscriptions: Dict[str, List[str]] = {}
self.conversations: Dict[str, List[ACPMessage]] = {}
“`
Класс ACPMessageBroker
Класс ACPMessageBroker служит центральным маршрутизатором для сообщений ACP, поддерживая реестр агентов и журнал сообщений.
“`python
class ACPMessageBroker:
“””Сообщение-брокер, реализующий маршрутизацию и доставку ACP”””
def init(self):
self.agents: Dict[str, ACPAgent] = {}
self.message_log: List[ACPMessage] = []
self.routing_table: Dict[str, str] = {}
“`
Демонстрация ACP
Функция demonstrate_acp демонстрирует весь фреймворк ACP: она инициализирует брокера и трёх различных агентов (Researcher, AI Assistant и MathBot), регистрирует их и иллюстрирует три ключевых сценария взаимодействия.
“`python
def demonstrate_acp():
“””Комплексная демонстрация протокола Agent Communication Protocol”””
print(” AGENT COMMUNICATION PROTOCOL (ACP) DEMONSTRATION”)
print(“=” * 60)
broker = ACPMessageBroker()
researcher = ACPAgent(“agent-001”, “Dr. Research”, [“analysis”, “research”, “data-processing”])
assistant = ACPAgent(“agent-002”, “AI Assistant”, [“information”, “scheduling”, “communication”])
calculator = ACPAgent(“agent-003”, “MathBot”, [“calculation”, “mathematics”, “computation”])
broker.register_agent(researcher)
broker.register_agent(assistant)
broker.register_agent(calculator)
“`
Это руководство поможет вам создать масштабируемые системы многоагентного взаимодействия с использованием протокола Agent Communication Protocol (ACP).