Введение в протокол общения агентов (ACP)
В современном мире автоматизации бизнеса и искусственного интеллекта (ИИ) важность эффективного общения между различными системами и агентами трудно переоценить. Протокол общения агентов (ACP) предлагает решение этой задачи, обеспечивая единый стандарт для взаимодействия между ИИ-агентами, приложениями и людьми. В этой статье мы рассмотрим, как начать работу с ACP, создавая простого погодного агента на Python.
Что такое ACP и зачем он нужен?
ACP — это открытый стандарт, который позволяет агентам обмениваться сообщениями в реальном времени, поддерживая как синхронные, так и асинхронные взаимодействия. Это особенно полезно в условиях, когда системы разработаны на различных платформах и могут быть несовместимы друг с другом. Используя ACP, вы можете:
- Обеспечить многомодальное взаимодействие;
- Упрощать выполнение долгосрочных задач;
- Обнаруживать агентов, как в режиме онлайн, так и оффлайн;
- Поддерживать состояние взаимодействия между агентами.
Практическое применение: создание погодного агента
Теперь давайте перейдем к практическому примеру. Мы создадим погодного агента, который будет предоставлять информацию о погоде в Лондоне. Этот проект поможет вам понять, как работает ACP и как его можно использовать для решения реальных задач.
Шаг 1: Установка зависимостей
Для начала установим необходимые библиотеки. Откройте терминал и выполните следующую команду:
pip install acp acp-sdk beeai-framework httpx
Шаг 2: Создание сервера ACP
Создайте файл agent.py
и импортируйте необходимые библиотеки:
import asyncio
from collections.abc import AsyncGenerator
import httpx
from acp_sdk.models import Message, MessagePart
from acp_sdk.server import Context, RunYield, RunYieldResume, Server
server = Server()
Теперь определим асинхронную функцию для получения текущей погоды в Лондоне:
async def get_london_weather() -> str:
params = {
"latitude": 51.5072,
"longitude": -0.1276,
"current_weather": True,
"timezone": "Europe/London"
}
url = "https://api.open-meteo.com/v1/forecast"
async with httpx.AsyncClient(timeout=10) as client:
resp = await client.get(url, params=params)
resp.raise_for_status()
cw = resp.json()["current_weather"]
return (
f"Погода в Лондоне: {cw['temperature']} °C, "
f"ветер {cw['windspeed']} км/ч, код {cw['weathercode']}."
)
Теперь создадим агента, который будет обрабатывать входящие сообщения:
@server.agent()
async def london_weather_agent(
input: list[Message], context: Context
) -> AsyncGenerator[RunYield, RunYieldResume]:
for _ in input:
yield {"thought": "Получение погоды в Лондоне..."}
weather = await get_london_weather()
yield Message(
role="agent",
parts=[MessagePart(content=weather, content_type="text/plain")]
)
server.run()
Шаг 3: Запуск сервера
Запустите файл agent.py
в терминале:
python agent.py
Теперь ваш агент доступен по адресу http://localhost:8000
. Проверьте его работоспособность с помощью команды:
curl http://localhost:8000/agents
Шаг 4: Создание клиента ACP
Создайте файл client.py
для взаимодействия с нашим сервером:
import asyncio
from acp_sdk.client import Client
from acp_sdk.models import Message, MessagePart
async def call_london_weather_agent() -> None:
async with Client(base_url="http://localhost:8000") as client:
run = await client.run_sync(
agent="london_weather_agent",
input=[
Message(
parts=[MessagePart(content="Скажи мне погоду", content_type="text/plain")]
)
],
)
print("Ответ от london_weather_agent:")
for message in run.output:
for part in message.parts:
print("-", part.content)
if __name__ == "__main__":
asyncio.run(call_london_weather_agent())
Шаг 5: Запуск клиента
В другом терминале выполните команду:
python client.py
Вы должны увидеть ответ от сервера с текущей погодой в Лондоне.
Часто задаваемые вопросы (FAQ)
1. Что такое ACP?
ACP — это протокол, который позволяет агентам обмениваться сообщениями и взаимодействовать друг с другом.
2. Каковы основные преимущества использования ACP?
ACP обеспечивает совместимость между различными системами, упрощает взаимодействие и позволяет выполнять долгосрочные задачи.
3. Как запустить погодного агента?
Сначала установите необходимые библиотеки, затем создайте и запустите сервер, после чего создайте клиента для взаимодействия с агентом.
4. Какие ошибки могут возникнуть при работе с ACP?
Наиболее распространенные ошибки связаны с неправильной настройкой зависимостей или ошибками в коде агента.
5. Как улучшить производительность агента?
Оптимизируйте код, используйте кэширование данных и минимизируйте количество запросов к API.
6. Где можно найти дополнительную информацию о ACP?
Дополнительную информацию можно найти в официальной документации ACP и на форумах разработчиков.
Заключение
Создание погодного агента с использованием ACP — это отличный способ начать работу с протоколом общения агентов. Вы не только научитесь основам, но и сможете применять полученные знания для решения реальных задач в области автоматизации бизнеса. Не бойтесь экспериментировать и расширять функциональность вашего агента!