Itinai.com two developers coding side by side in a minimalist 9e46852c 56ad 43df b8ce 5a8451c13b63 3

Создание агента погоды на Python с использованием протокола ACP

Itinai.com two developers coding side by side in a minimalist 9e46852c 56ad 43df b8ce 5a8451c13b63 3

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

Запустите свой ИИ проект бесплатно

ИИ-агенты искусственный интеллект онлайн для бизнеса

Лучший ИИ онлайн