В этом руководстве мы реализуем протокол 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).