Skip to content

GigaAgent — это универсальный агент-оркестратор для решения широкого круга задач (ReAct + REPL)

License

Notifications You must be signed in to change notification settings

ai-forever/giga_agent

Repository files navigation

Универсальный AI-агент

Shows a black and red Giga Agent Logo in light color mode and a white and red in dark color mode.

[ Русский | 中文 | English | Español ] GigaAgent может решать самые разные задачи, используя более 30 встроенных инструментов и субагентов.

Например, он позволит вам работать с большими файлами через код (Excel-файл с десятками тысяч строк), придумать мем, описать бизнес-модель стартапа или создать лендинг. Для этого GigaAgent использует субагентов, REPL-среду для исполнения кода и сторонние сервисы.

GigaAgent разработан в рамках проекта GigaChain – открытого набора инструментов для разработки LLM-приложений и мультиагентных систем.

Important

GigaAgent может писать и исполнять код без участия пользователя. Учитывая раннюю стадию разработки проекта это может быть опасно. Используйте агента с большой осторожностью.

GigaAgent умеет:

  • работать с разными моделями, доступными в LangChain: GigaChat, ChatGPT, Anthropic и другими
  • исполнять код в чате с помощью в REPL-среды, подобной блокнотам Jupyter
  • обмениваться данными со сторонними сервисами: VK, GitHub, 2GIS и другими
  • использовать инструменты для анализа данных, генерации изображений, создания презентаций и лендингов
  • генерировать изображения с помощью разных провайдеров: GigaChat, FusionBrain, OpenAI;
  • работать локально или в облаке, с помощью Docker
  • использовать ваши MCP-тулы
  • применять знания из ваших документов с помощью RAG

Демо

Примеры работы с GigaAgent в формате PDF:

Примеры работы субагентов, а также подробная информация о них — в разделе Субагенты. Описание доступных инструментов и процесса создания новых инструментов можно найти в разделе Инструменты в GigaAgent

Быстрый старт

Для запуска GigaAgent, вам потребуется Docker.

Tip

Смотрите также подробные инструкции по запуску GigaAgent на Cloud.ru:

Запуск в Docker

Перед запуском в Docker:

  • Скопируйте мок-данные в папку files в корне проекта:

    make init_files

Чтобы запустить GigaAgent:

  1. В корне проекта заполните файл .docker.env с переменными окружения.

    Примеры заполнения .docker.env — в папке env_examples

  2. Соберите Docker-образ сервера LangGraph:

    make build
  3. Запустите приложение:

    make up

Приложение будет доступно в браузере по адресу http://localhost:8502

Чтобы применить изменения после обновления репозитория:

  1. Остановите приложение
  2. Повторно выполните комманды make build и make up

Настройка параметров

Переменные окружения

Переменные окружения для работы GigaAgent задаются в файлах .env или .docker.env в корне проекта. В папке env_examples вы найдете шаблоны файлов с переменными окружения, для работы с разными LLM-сервисами.

Обратите внимание на переменные REPL_FROM_MESSAGE и MAIN_GIGACHAT_*.

  • REPL_FROM_MESSAGE — ставьте 0 если код в REPL будет браться из аргумента функции. 1 — если код берется из сообщения. Иногда GigaChat не может нормально прописывать сложный код в аргументе функции.
  • MAIN_GIGACHAT_* — пропишите настройки подключения GigaChat как в примерах отсюда; Это настройка основной LLM, которая крутится в главном графе. Настройки, которые начинаются не с MAIN_ идут в под-агенты. Возможно в будущем уберем.

Выбор моделей для генерации и эмбеддингов

Модели задаются с помощью переменных окружения:

  • GIGA_AGENT_LLM — основная LLM, на которой работает основные агенты.
  • GIGA_AGENT_LLM_FAST — дешевая / быстрая LLM, на которой происходить скрейпинг ссылок и вызов LLM через REPL среду.

Выбор происходит на основе метода LangChain init_chat_model. С небольшой правкой возможности выбора GigaChat в качестве основной LLM.

В проект предустановлены библиотеки для работы GigaChat, OpenAI. Для работы остальных LLM вам нужно будет поставить их в папке backend/graph с помощью uv add

Пример заполнения:

  • GIGA_AGENT_LLM="gigachat:GigaChat-2-Max" — для выбора модели GigaChat-2-Max в качестве основной
  • GIGA_AGENT_LLM="openai:gpt-4o" — для выбора модели gpt-4o в качестве основной

По такому же принципу выбирается модель для векторного представления текстов GIGA_AGENT_EMBEDDINGS.

Также в проекте есть простая модель для оценки настроения текста на основе эмбеддингов LLM с помощью GIGA_AGENT_SENTIMENT_MODEL. Допустим это можно применять для анализа настроений комментариев. Модели созданы на основе GigaChat модели EmbeddingsGigaR и модели OpenAI text-embedding-3-small. Создать свою мини модель под конкретную модель можно в ноутбуке sentiment_model.ipynb

Создание изображений

Агент может генерировать изображения. Для этого нужно заполнить ENV переменную: IMAGE_GEN_NAME. IMAGE_GEN_NAME заполняется в формате провайдер:название_модели

Тулы/агенты, которые зависят от генерации изображений: generate_image, create_meme, create_landing, generate_presentation. Если не заполнить IMAGE_GEN_NAME, эти тулы отключатся.

GigaChat Kandinsky

Генерация изображений на GigaChat API /image/generate/. Доступ к этому API пока работает по приглашению. Чтобы включить этот способ, заполните: IMAGE_GEN_NAME="gigachat:kandinsky-4.1""

FusionBrain

Генерация изображений с помощью сервиса FusionBrain. Он предоставляет 100 бесплатных генераций.

Чтобы включить этот способ, заполните: IMAGE_GEN_NAME="fusion_brain:123"". Заметьте, что модель можно заполнить как угодно, в этом провайдере будет использоваться всегда Kandinsky3.0

Также укажите переменные:

  • KANDINSKY_API_KEY — API ключ Fusion Brain
  • KANDINSKY_SECRET_KEY — API secret Fusion Brain

OpenAI

Генерация изображений с помощью OpenAI

Чтобы включить этот способ, заполните: IMAGE_GEN_NAME="openai:dall-e-3""

Также нужно заполнить следующие ENV

  • OPENAI_API_KEY

Подключение сторонних сервисов

GigaAgent подключен к сторонним сервисам, поэтому для корректной работы некоторых сценариев нужно получить их API ключи.

Если не заполнить API-ключ сервиса, то тулы, которые зависят от него, отключатся от LLM. Также можно отключить тулы/агентов в файле config в переменных SERVICE_TOOLS/AGENTS/TOOLS

Ниже ссылки и инструкции к сервисам

Tavily (поиск в интернете)

Тулы/агенты, которые зависят от сервиса: search, get_urls

Также в агентах city_explore и lean_canvas применяется поиск, но он не обязателен. Если вы не заполните API-ключ, то они все равно смогут корректно отработать.

Получить API ключ можно здесь: https://tavily.com/

GitHub

Тулы/агенты, которые зависят от сервиса: get_workflow_runs, list_pull_requests, get_pull_request

Получить API ключ можно здесь: https://github.com/settings/personal-access-tokens

VK

Тулы/агенты, которые зависят от сервиса: vk_get_posts, vk_get_comments, vk_get_last_comments

Для работы с ВК нужно создать мини-приложение, здесь: https://dev.vk.com/ru/admin/apps-list. И получить сервисный API-ключ от приложения.

2GIS

Тулы/агенты, которые зависят от сервиса: city_explore

https://docs.2gis.com/ru/platform-manager/overview

SaluteSpeech (синтез голоса)

Тулы/агенты, которые зависят от сервиса: podcast_generate

https://developers.sber.ru/portal/products/smartspeech

OpenWeatherMap (получение погоды)

Тулы/агенты, которые зависят от сервиса: weather

https://openweathermap.org/api/one-call-3

Добавление MCP тулов

К GigaAgent можно подключить MCP-тулы из браузера, если они RemoteMCP, или MCP, которые хостятся локально.

Пример MCP Gateway сервера поднятого локально можно посмотреть здесь

Также можно включить MCP сервера через ENV-переменную GIGA_AGENT_MCP_CONFIG

Пример заполнения ENV переменной

GIGA_AGENT_MCP_CONFIG='{"giga_tools": {"transport": "stdio", "command": "npx", "args": ["-y", "mcp-remote@latest", "https://gigachat.fastmcp.app/mcp"]}}'

Добавление RAG базы знаний

Для подключения базы знаний нужно развернуть дополнительно этот проект и заполнить следующие ENV-переменные в .env файле. (ниже пример langconnect, который хостится локально)

LANGCONNECT_API_URL=http://host.docker.internal:8833
LANGCONNECT_API_SECRET_TOKEN=123

Важно!

Если LangConnect хостится локально и вы поднимаете GigaAgent через make build и make up, тогда в файл docker-compose.yml нужно добавить следующие YAML параметры к контейнерам langgraph-api и tool_server

        extra_hosts:
            - "host.docker.internal:host-gateway"

Также нужно снова запустить make build и make up.

При поднятии через make build_dev и make up_dev этого делать не нужно, так как эти параметры уже добавлены в docker-compose.dev.yml

Режим разработчика

Чтобы поднять проект в режиме hot-reload (когда вы меняете код проекта локально и docker подгружает их сразу в свою среду) выполните следующие комманды:

  • make build_dev
  • make up_dev

Архитектура проекта

  • GigaAgent — основной агент
  • SubAgents — субагенты, выполняющие специфические задачи: создание презентаций, создание лендингов и другие
  • REPL — отдельный контейнер с REPL-средой для выполнения кода, сгенерированного моделью
  • ToolServer — сервер, для запуска подключенных к моделям инструментов или выполнения закрытого код / кода завязанный на скрытых переменных окружения, который не доступен пользователю в REPL-среде
  • LLM Tools — инструменты (функции) для моделей: поиск, работа с данными ВК, работа с github и другие
  • REPL Tools — инструменты REPL: predict_sentiments, get_embeddings, summarize, инструменты моделей. Эти методы завязаны на API моделей и могут быть вызваны из REPL-среды. Они позволяют предотвратить доступ к API-ключам в REPL-среде.

Планы

У нас много планов, но мы также будем рады вашим PR и Issues!

  • Перенести настройку агента с ENV переменных в единый понятный config файл
  • Поддержка MCP
  • Поддержка RAG базы знаний
  • Добавить память
  • Перевод с проприетарной LangGraphPlatform API на Open-Source Aegra
  • Перевод документации / примеров
  • Оптимизировать генерацию изображений в агенте презентаций, лендингов
  • Добавить историю чатов
  • Вынести наименование агентов и узлов их выполнения в бэкенд из файла config.ts
  • Добавить поддержку разных провайдеров синтеза речи (OpenAI, ElevenLabs)
  • Добавить авторизацию
  • Тесты
  • Сделать локализацию интерфейса + (возможно промптов)
  • Агент по созданию сайтов 2.0 (также добавить в него подгрузку созданных графиков / изображений как в агенте презентаций)
  • To be continued...