Itinai.com it development details code screens blured futuris fbff8340 37bc 4b74 8a26 ef36a0afb7bc 1

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

Itinai.com it development details code screens blured futuris fbff8340 37bc 4b74 8a26 ef36a0afb7bc 1

Начало работы с Протоколом Коммуникации Агентов (ACP): Создание Погодного Агента с Помощью Python

В последние годы искусственный интеллект стал неотъемлемой частью бизнеса, позволяя компаниям оптимизировать процессы и улучшать качество обслуживания клиентов. Протокол Коммуникации Агентов (ACP) представляет собой открытый стандарт, который обеспечивает эффективное взаимодействие между различными AI-агентами и приложениями. В этой статье мы разберёмся, как создать простого погодного агента с использованием ACP и Python, подчеркивая его практическое применение, затраты и преимущества.

Что такое ACP?

ACP предлагает единый RESTful API, который позволяет:

  • добиваться многомодального общения;
  • осуществлять синхронную и асинхронную передачу сообщений;
  • поддерживать потоковую передачу данных в реальном времени;
  • управлять состоянием агентов;
  • разграничивать долгосрочные задачи;
  • обнаруживать агентов, находящихся в сети или оффлайн.

Создание погодного агента — это отличный способ продемонстрировать практическое использование ACP и понять, как он может упростить создание AI-приложений.

Настройка окружения

Прежде чем начнём, убедитесь, что у вас установлен Python. Для начала работы вам понадобятся некоторые библиотеки. Установите их с помощью следующей команды:

pip install acp acp-sdk beeai-framework httpx

Создание 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()

Затем мы определим асинхронную функцию get_london_weather, которая извлечет текущее погодное состояние в Лондоне с помощью Open-Meteo API.


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(). Функция london_weather_agent будет обрабатывать входящие сообщения и возвращать текущую погоду в Лондоне.


@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()

Запуск сервера

Теперь мы можем запустить сервер, выполнив файл agent.py. После запуска агент будет доступен по адресу http://localhost:8000.

python agent.py

Чтобы проверить, правильно ли работает ваш агент, откройте новый терминал и выполните следующую команду:

curl http://localhost:8000/agents

Если всё работает правильно, вы получите ответ в формате JSON с информацией о вашем агенте.

Создание клиента 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())

Запуск клиента

В другом терминале запустите клиент:

python client.py

В результате вы должны увидеть ответ сервера с текущей погодой в Лондоне.

Заключение

Создание погодного агента с использованием ACP и Python — это не только увлекательный процесс, но и отличная возможность продемонстрировать, как ACP может улучшить взаимодействие между AI-агентами. Эти знания можно применять в различных сферах, от разработки смарт-приложений до интеграции с существующими системами.

Использование ACP позволяет не только сократить затраты на разработку новых решений, но и повысить эффективность существующих систем, что делает его важным инструментом для бизнеса. Теперь, когда вы знаете, как создать агент, следующий шаг — использовать эти навыки для решения более сложных задач.

Убедитесь, что вы следите за обновлениями и новыми материалами на нашем сайте aidone.ru, чтобы оставаться в курсе последних новостей в мире искусственного интеллекта!

Новости в сфере искусственного интеллекта