Этот репозиторий содержит лабораторные работы и примеры интеграций, посвященные разработке и развертыванию AI-агентов и MCP-серверов в продукте AI Agents на платформе Evolution. Также включены примеры ботов для интеграции A2A агентов в популярные мессенджеры (Mattermost и Telegram).
- Лабораторная работа 1: Создание MCP-сервера для расчета кредитов и вкладов
- Лабораторная работа 2: Запуск агента из Docker-образа в AI Agents (Google ADK)
- Лабораторная работа 3: LangChain Agent
- Лабораторная работа 4: SmolAgents Agent
- Лабораторная работа 5: CrewAI Agent
- Лабораторная работа 6: Strands Agents с Meta-Tooling
- Mattermost Bot для A2A агента
- Telegram Bot для A2A агента
Лабораторные работы предназначены для освоения возможностей продукта AI Agents на платформе Evolution. AI Agents позволяет создавать и управлять искусственным интеллектом для автоматизации бизнес-процессов.
Вы можете попробовать продукт самостоятельно в облаке cloud.ru.
Расположение: lab1-mcp-finance-lab/
В этой лабораторной работе вы создадите MCP-сервер, предоставляющий инструменты для расчета графиков выплат по кредитам и вкладам. Вы освоите основы разработки MCP-сервисов с использованием фреймворка FastMCP, подготовите Docker-образ и развернете его в облаке cloud.ru.
MCP-сервер предоставляет три инструмента для финансовых расчетов:
- Аннуитетный кредит (
loan_schedule_annuity) - расчет фиксированного ежемесячного платежа и помесячного графика - Дифференцированный кредит (
loan_schedule_differential) - расчет платежей с постоянной частью тела и уменьшающимися процентами - Вклад с капитализацией (
deposit_schedule_compound) - расчет графика вклада с ежемесячной капитализацией и взносами
- Python 3.12
- FastMCP фреймворк
- Docker для контейнеризации
- Poetry для управления зависимостями
lab1-mcp-finance-lab/
├── src/
│ ├── main.py # Основной файл с определением MCP-инструментов
│ ├── calculations.py # Реализация алгоритмов расчетов
│ ├── validators.py # Валидация входных данных
│ ├── utils.py # Вспомогательные функции
│ └── config.py # Конфигурационные параметры
├── Dockerfile # Определение Docker-образа
├── pyproject.toml # Зависимости проекта
└── README.md # Подробное описание лабораторной работы
Расположение: lab2-adk-agent/
Этот гайд описывает пошаговый процесс упаковки и запуска собственного агента в платформе AI Agents с использованием Docker и google-adk.
- Без файловой системы в рантайме - агенты не должны работать с файловой системой во время выполнения. Все необходимые файлы и зависимости нужно упаковывать на этапе сборки Docker-образа.
- Автоматические переменные окружения - AI Agents автоматически прокидывает готовые переменные окружения в контейнер.
- Python 3.12
- Google ADK (Agent Development Kit)
- A2A SDK
- Docker для контейнеризации
- Poetry для управления зависимостями
lab2-adk-agent/
├── src/
│ ├── a2a_agent.py # Реализация A2A агента
│ ├── agent_task_manager.py # Менеджер задач агента
│ ├── agent.py # Определение агента
│ └── start_a2a.py # Точка входа приложения
├── Dockerfile # Определение Docker-образа
├── pyproject.toml # Зависимости проекта
└── README.md # Подробное описание лабораторной работы
Расположение: lab3-langchain-agent/
В этой лабораторной работе вы создадите агента на базе LangChain - одного из самых популярных фреймворков для создания AI-агентов. Вы освоите интеграцию LangChain агента с MCP-серверами и развернете его в платформе AI Agents через протокол A2A.
- LangChain AgentExecutor - использование стандартного подхода LangChain для создания агентов
- Интеграция с MCP - преобразование MCP инструментов в LangChain Tools
- Streaming поддержка - потоковая передача ответов через A2A
- Телеметрия - интеграция с OpenInference для отслеживания работы агента
- Python 3.12
- LangChain (>=0.3.0) - фреймворк для создания агентов
- LangChain OpenAI - интеграция с OpenAI-совместимыми моделями
- A2A SDK (>=0.3.4) - протокол Agent-to-Agent
- LiteLLM - унификация доступа к LLM
- Docker для контейнеризации
lab3-langchain-agent/
├── src/
│ ├── agent.py # Определение LangChain агента
│ ├── a2a_wrapper.py # Обертка для A2A протокола
│ ├── agent_task_manager.py # Интеграция с A2A executor
│ └── start_a2a.py # Точка входа приложения
├── Dockerfile # Определение Docker-образа
├── pyproject.toml # Зависимости проекта
└── README.md # Подробное описание лабораторной работы
Расположение: lab4-smolagents-agent/
В этой лабораторной работе вы создадите легковесного агента на базе SmolAgents от Hugging Face. SmolAgents - это минималистичный фреймворк с акцентом на простоту и эффективность, идеально подходящий для быстрого прототипирования.
- Легковесность - минимальные зависимости и простой API
- Code Agents - агент может писать и выполнять Python код
- Эффективность - уменьшает количество шагов и вызовов LLM на ~30%
- Простота интеграции - легкая интеграция с A2A протоколом
- Python 3.12
- SmolAgents (>=0.1.0) - легковесный фреймворк от Hugging Face
- A2A SDK (>=0.3.4) - протокол Agent-to-Agent
- LiteLLM - унификация доступа к LLM
- Docker для контейнеризации
lab4-smolagents-agent/
├── src/
│ ├── agent.py # Определение SmolAgents агента
│ ├── a2a_wrapper.py # Обертка для A2A протокола
│ ├── agent_task_manager.py # Интеграция с A2A executor
│ └── start_a2a.py # Точка входа приложения
├── Dockerfile # Определение Docker-образа
├── pyproject.toml # Зависимости проекта
└── README.md # Подробное описание лабораторной работы
Расположение: lab5-crewai-agent/
В этой лабораторной работе вы создадите мульти-агентную команду (crew) на базе CrewAI. CrewAI позволяет создавать команды AI-агентов, которые работают вместе для решения сложных задач, распределяя работу между специализированными агентами.
- Мульти-агентность - несколько агентов работают вместе
- Распределение задач - автоматическое распределение задач между агентами
- Delegation - агенты могут делегировать задачи друг другу
- Структурированность - четкое разделение ролей и задач
- Python 3.12
- CrewAI (>=0.80.0) - фреймворк для мульти-агентных команд
- CrewAI Tools - инструменты для агентов
- A2A SDK (>=0.3.4) - протокол Agent-to-Agent
- LiteLLM - унификация доступа к LLM
- Docker для контейнеризации
lab5-crewai-agent/
├── src/
│ ├── agents.py # Определение агентов в crew
│ ├── tasks.py # Определение задач
│ ├── crew.py # Определение crew
│ ├── a2a_wrapper.py # Обертка для A2A протокола
│ ├── agent_task_manager.py # Интеграция с A2A executor
│ └── start_a2a.py # Точка входа приложения
├── Dockerfile # Определение Docker-образа
├── pyproject.toml # Зависимости проекта
└── README.md # Подробное описание лабораторной работы
Расположение: lab6-strands-agent/
В этой лабораторной работе вы создадите агента на базе Strands Agents с возможностью meta-tooling - создания инструментов на лету. Это уникальная возможность, которая позволяет агенту динамически расширять свои возможности без изменения кода.
- Meta-Tooling - создание новых инструментов во время выполнения
- Динамическое расширение - агент может расширять свои возможности самостоятельно
- Гибкость - адаптация к новым задачам без изменения кода агента
- Инструменты для создания инструментов - load_tool, editor, shell
- Python 3.12
- Strands Agents (>=0.3.0) - фреймворк с поддержкой meta-tooling
- A2A SDK (>=0.3.4) - протокол Agent-to-Agent
- LiteLLM - унификация доступа к LLM
- Docker для контейнеризации
lab6-strands-agent/
├── src/
│ ├── agent.py # Определение Strands агента с meta-tooling
│ ├── a2a_wrapper.py # Обертка для A2A протокола
│ ├── agent_task_manager.py # Интеграция с A2A executor
│ └── start_a2a.py # Точка входа приложения
├── tools/ # Директория для динамически создаваемых инструментов
├── Dockerfile # Определение Docker-образа
├── pyproject.toml # Зависимости проекта
└── README.md # Подробное описание лабораторной работы
Расположение: mattermost-bot-for-a2a/
Бот для Mattermost, интегрированный с A2A агентом, с поддержкой streaming ответов, команд и полной OpenInference телеметрией.
Бот позволяет интегрировать A2A агента в Mattermost, обеспечивая:
- Ответы на упоминания бота - бот отвечает на упоминания (@bot_name) в каналах
- Обработку прямых сообщений - поддержка приватных диалогов с ботом
- Поддержку команд - команды
/a2a help,/a2a statusи другие - Streaming ответы - потоковая передача ответов от A2A агента
- Полную телеметрию - интеграция с OpenInference и OpenTelemetry
- Python 3.8+
- uv - быстрый менеджер пакетов Python
- mattermostdriver - клиент для Mattermost API
- a2a SDK - интеграция с A2A агентами
- OpenTelemetry/OpenInference - телеметрия
mattermost-bot-for-a2a/
├── bot.py # Основной файл бота
├── a2a_client.py # Обертка для A2A клиента с телеметрией
├── mattermost_handler.py # Обработчики Mattermost событий
├── commands.py # Обработка команд бота
├── telemetry.py # Настройка OpenInference телеметрии
├── config.py # Загрузка конфигурации из env
├── pyproject.toml # Конфигурация проекта и зависимости
├── requirements.txt # Зависимости
├── .env.example # Пример конфигурации
└── README.md # Подробное описание
Расположение: telegram-bot-for-a2a/
Небольшой и удобный бот на базе aiogram 3 для взаимодействия с агентами по URL. Поддерживает быстрое подключение к агентной системе, переподключение и механизм повторных попыток при ошибках.
Бот позволяет интегрировать A2A агента в Telegram, обеспечивая:
- Старт и меню - удобное меню с разделами «Начать работу», «Помощь», «Подключиться по URL»
- Подключение к агенту по URL - вводите URL — и бот подключится к вашему агенту
- Общение с агентом - пересылайте текстовые запросы и получайте ответы
- Обработку голосовых сообщений - поддержка транскрипции голосовых сообщений
- Повтор запроса (Retry) - в случае ошибки можно быстро повторить запрос
- История ошибок - краткая сводка последних ошибок для отладки
- Python 3.13
- aiogram 3 - Telegram Bot API
- Poetry - управление зависимостями
- pydantic-settings - конфигурация через
.env - httpx - HTTP-клиент
- a2a SDK - интеграция с агентами
- opentelemetry - телеметрия
telegram-bot-for-a2a/
├── main.py # Точка входа бота
├── Dockerfile # Docker образ
├── docker-compose.yaml # Docker Compose конфигурация
├── pyproject.toml # Конфигурация проекта и зависимости
├── poetry.lock # Lock файл зависимостей
├── .env.example # Пример конфигурации
├── README.md # Подробное описание
└── src/
├── config/ # Конфигурация
├── handlers/ # Обработчики команд и сообщений
├── keyboards/ # Клавиатуры для меню
├── services/ # Интеграция с A2A агентом
└── utils/ # Утилиты (команды, сессии, голос)