https://github.com/ai-forever/giga_agent

https://github.com/ai-forever/giga_agent

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (3.5%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: ai-forever
  • License: mit
  • Language: Python
  • Default Branch: main
  • Size: 25.9 MB
Statistics
  • Stars: 13
  • Watchers: 5
  • Forks: 3
  • Open Issues: 0
  • Releases: 0
Created 11 months ago · Last pushed 10 months ago
Metadata Files
Readme License

README.md

GigaAgent

GigaAgent — это агент-оркестратор для решения широкого круга задач. Например, он может придумать мем, описать бизнес-модель стартапа или создать лендинг. Для этого GigaAgent использует субагентов, среду для исполнения кода и сторонние сервисы.

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

GigaAgent умеет:

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

Демо

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

[!NOTE] Примеры работы субагентов, а также подробная информация о них — в разделе Субагенты.

Запуск

Запуск (через Docker)

  1. pip install langgraph-cli
  2. make init_files
  3. Заполнить .docker.env в корне проекта
  4. make build_graph
  5. docker compose up -d
  6. Проект запущен на http://localhost:8502

Обновление: При обновлении репозитория начинайте с шага 3

Локальный запуск

Для локального запуска желательно иметь следующие свободные порты: 2024, 8811, 9090, 9092, 3000

Также должен быть поставлен uv

Если освободить эти порты нельзя, то поправьте .env переменные: 1. make initfiles 2. Заполнить .env в корне проекта 3. Запуск REPL * cd backend/repl * uv sync * make run 4. Запуск Upload Server на REPL * cd backend/repl * `make runu 5. Запуск ToolServer *cd backend/graph *uv sync *make runtoolserver 6. Запуск LangGraph *cd backend/graph *make run_graph 7. Запуск frontend *npm init *cd front *make dev`

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

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

Шаблоны .env переменных

Вы можете взять пред-настроенные .env / .docker.env файлы под определенных провайдеров здесь: - GigaChat - OpenAI

Выбор LLM / Embeddings

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

Выбор происходит на основе метода LangChain initchatmodel. C небольшой правкой возможности выбора 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

Также нужно заполнить следующие ENV - KANDINSKYAPIKEY — API ключ Fusion Brain - KANDINSKYSECRETKEY — API secret Fusion Brain

OpenAI

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

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

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

Комментарии по поводу доп. ENV переменных

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

Работа со сторонними сервисами

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

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

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

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

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

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

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

GitHub

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

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

VK

Тулы/агенты, которые зависят от сервиса: vkgetposts, vkgetcomments, vkgetlast_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

Roadmap

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

Будем рады вашим PR / Issues!

Owner

  • Name: AI Forever
  • Login: ai-forever
  • Kind: organization
  • Location: Armenia

Creating ML for the future. AI projects you already know. We are non-profit organization with members from all over the world.

GitHub Events

Total
  • Watch event: 6
  • Member event: 1
  • Push event: 6
  • Pull request event: 2
  • Fork event: 2
  • Create event: 1
Last Year
  • Watch event: 6
  • Member event: 1
  • Push event: 6
  • Pull request event: 2
  • Fork event: 2
  • Create event: 1

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 0
  • Total pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
  • andermirik (1)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

backend/repl/Dockerfile docker
  • python 3.11 build
docker-compose.yml docker
  • giga_agent latest
  • postgres 16
  • redis 6
  • repl latest
front/Dockerfile docker
  • nginx alpine build
  • node 18-alpine build
front/package.json npm
  • @typescript-eslint/eslint-plugin ^7.0.0 development
  • @typescript-eslint/parser ^7.0.0 development
  • @vitejs/plugin-react ^4.2.1 development
  • eslint ^8.56.0 development
  • eslint-config-react-app ^7.0.1 development
  • eslint-plugin-react-hooks ^4.6.0 development
  • eslint-plugin-react-refresh ^0.4.5 development
  • prettier ^3.5.3 development
  • vite ^5.1.0 development
  • vite-plugin-compression ^0.5.1 development
  • @langchain/core ^0.3.44
  • @langchain/langgraph-sdk ^0.0.78
  • @types/node ^22.14.1
  • @types/react ^19.1.1
  • @types/react-dom ^19.1.2
  • @types/react-syntax-highlighter ^15.5.13
  • @types/styled-components ^5.1.34
  • axios ^1.9.0
  • katex ^0.16.22
  • lucide-react ^0.511.0
  • react ^19.1.0
  • react-dom ^19.1.0
  • react-markdown ^10.1.0
  • react-plotly.js ^2.6.0
  • react-router-dom ^6.30.1
  • react-syntax-highlighter ^15.6.1
  • rehype-katex ^7.0.1
  • rehype-raw ^7.0.0
  • remark-gfm ^4.0.1
  • remark-math ^6.0.0
  • styled-components ^6.1.17
  • typescript ^5.8.3
backend/graph/pyproject.toml pypi
  • aiohttp >=3.12.15
  • aiosqlite >=0.21.0
  • fastapi >=0.116.1
  • genson >=1.3.0
  • greenlet >=3.2.3
  • httpx >=0.28.1
  • joblib >=1.5.1
  • kaleido ==0.2.0
  • langchain >=0.3.27
  • langchain-core >=0.3.72
  • langchain-gigachat >=0.3.12
  • langchain-mcp-adapters >=0.1.9
  • langchain-openai >=0.3.28
  • langchain-tavily >=0.2.11
  • langgraph >=0.6.3
  • langgraph-cli [inmem]>=0.3.6
  • langgraph-sdk >=0.2.0
  • markdownify >=1.1.0
  • matplotlib >=3.10.5
  • pillow >=11.3.0
  • plotly >=6.2.0
  • pydantic >=2.11.7
  • pydantic-core >=2.33.2
  • pydub >=0.25.1
  • python-dotenv >=1.1.1
  • redis >=6.3.0
  • requests >=2.32.4
  • scikit-learn >=1.7.1
  • sqlalchemy >=2.0.42
  • sqlmodel >=0.0.24
  • typing-extensions >=4.14.1
backend/graph/uv.lock pypi
  • 116 dependencies
backend/repl/pyproject.toml pypi
  • aiohappyeyeballs ==2.4.3
  • aiohttp ==3.10.10
  • aiosignal ==1.3.1
  • annotated-types ==0.7.0
  • anyio ==4.4.0
  • appnope ==0.1.4
  • argon2-cffi ==23.1.0
  • argon2-cffi-bindings ==21.2.0
  • arrow ==1.3.0
  • asttokens ==2.4.1
  • async-lru ==2.0.4
  • async-timeout ==4.0.3
  • attrs ==23.2.0
  • babel ==2.15.0
  • beautifulsoup4 ==4.12.3
  • bleach ==6.1.0
  • certifi ==2024.6.2
  • cffi ==1.16.0
  • charset-normalizer ==3.3.2
  • click ==8.1.7
  • cmdstanpy ==1.2.4
  • comm ==0.2.2
  • contourpy ==1.2.1
  • cycler ==0.12.1
  • cython ==3.0.11
  • dataclasses-json ==0.6.7
  • debugpy ==1.8.2
  • decorator ==5.1.1
  • defusedxml ==0.7.1
  • dill >=0.4.0
  • dnspython ==2.6.1
  • domdf-python-tools ==3.9.0
  • email-validator ==2.2.0
  • et-xmlfile ==1.1.0
  • exceptiongroup ==1.2.1
  • executing ==2.0.1
  • faker ==33.1.0
  • fastapi ==0.111.0
  • fastapi-cli ==0.0.4
  • fastjsonschema ==2.20.0
  • fonttools ==4.53.0
  • fqdn ==1.5.1
  • frozenlist ==1.4.1
  • gigachat ==0.1.35
  • h11 ==0.14.0
  • hdbscan >=0.8.40
  • holidays ==0.57
  • html5lib ==1.1
  • httpcore ==1.0.5
  • httptools ==0.6.1
  • httpx ==0.27.0
  • idna ==3.7
  • importlib-metadata ==8.0.0
  • importlib-resources ==6.4.0
  • ipykernel ==6.29.5
  • ipython ==8.18.1
  • ipywidgets ==8.1.3
  • isoduration ==20.11.0
  • jedi ==0.19.1
  • jinja2 ==3.1.4
  • joblib ==1.4.2
  • json5 ==0.9.25
  • jsonpatch ==1.33
  • jsonpointer ==3.0.0
  • jsonschema ==4.22.0
  • jsonschema-specifications ==2023.12.1
  • jupyter ==1.0.0
  • jupyter-client ==8.6.2
  • jupyter-console ==6.6.3
  • jupyter-core ==5.7.2
  • jupyter-events ==0.10.0
  • jupyter-lsp ==2.2.5
  • jupyter-server ==2.14.1
  • jupyter-server-terminals ==0.5.3
  • jupyterlab ==4.2.3
  • jupyterlab-pygments ==0.3.0
  • jupyterlab-server ==2.27.2
  • jupyterlab-widgets ==3.0.11
  • kaleido ==0.2.0
  • kiwisolver ==1.4.5
  • langchain-gigachat >=0.3.0
  • lxml ==5.3.0
  • markdown-it-py ==3.0.0
  • markupsafe ==2.1.5
  • marshmallow ==3.22.0
  • mathematical ==0.5.1.post1
  • matplotlib ==3.9.0
  • matplotlib-inline ==0.1.7
  • mdurl ==0.1.2
  • mistune ==3.0.2
  • multidict ==6.1.0
  • mypy-extensions ==1.0.0
  • natsort ==8.4.0
  • nbclient ==0.10.0
  • nbconvert ==7.16.4
  • nbformat ==5.10.4
  • nest-asyncio ==1.6.0
  • networkx ==3.2.1
  • nltk ==3.9.1
  • notebook ==7.2.1
  • notebook-shim ==0.2.4
  • numpy ==1.26.4
  • openai ==0.28.0
  • openpyxl ==3.1.5
  • orjson ==3.10.15
  • overrides ==7.7.0
  • packaging ==24.1
  • pandas ==2.2.2
  • pandocfilters ==1.5.1
  • parso ==0.8.4
  • patsy ==0.5.6
  • pexpect ==4.9.0
  • pillow ==10.4.0
  • platformdirs ==4.2.2
  • plotly ==6.1.0
  • pmdarima ==2.0.4
  • prometheus-client ==0.20.0
  • prompt-toolkit ==3.0.47
  • propcache ==0.2.0
  • prophet ==1.1.5
  • psutil ==6.0.0
  • ptyprocess ==0.7.0
  • pure-eval ==0.2.2
  • pycparser ==2.22
  • pydantic ==2.8.0
  • pydantic-core ==2.20.0
  • pygments ==2.18.0
  • pyparsing ==3.1.2
  • python-dateutil ==2.9.0.post0
  • python-docx >=1.2.0
  • python-dotenv ==1.0.1
  • python-json-logger ==2.0.7
  • python-multipart ==0.0.9
  • pytz ==2024.1
  • pyyaml ==6.0.1
  • pyzmq ==26.0.3
  • qtconsole ==5.5.2
  • qtpy ==2.4.1
  • referencing ==0.35.1
  • regex ==2024.11.6
  • requests ==2.32.3
  • requests-toolbelt ==1.0.0
  • rfc3339-validator ==0.1.4
  • rfc3986-validator ==0.1.1
  • rich ==13.7.1
  • rpds-py ==0.18.1
  • scikit-learn ==1.6.1
  • scipy ==1.13.1
  • seaborn ==0.13.2
  • send2trash ==1.8.3
  • shellingham ==1.5.4
  • six ==1.16.0
  • sniffio ==1.3.1
  • soupsieve ==2.5
  • sqlalchemy ==2.0.36
  • stack-data ==0.6.3
  • stanio ==0.5.1
  • starlette ==0.37.2
  • statsmodels ==0.14.3
  • tabulate ==0.9.0
  • tenacity ==8.4.2
  • terminado ==0.18.1
  • threadpoolctl ==3.5.0
  • tinycss2 ==1.3.0
  • tomli ==2.0.1
  • tornado ==6.4.1
  • tqdm ==4.66.5
  • traitlets ==5.14.3
  • typer ==0.12.3
  • types-python-dateutil ==2.9.0.20240316
  • typing-extensions ==4.12.2
  • typing-inspect ==0.9.0
  • tzdata ==2024.1
  • ujson ==5.10.0
  • umap-learn >=0.5.9.post2
  • uri-template ==1.3.0
  • urllib3 ==2.2.2
  • uvicorn ==0.29.0
  • watchfiles ==0.22.0
  • wcwidth ==0.2.13
  • webcolors ==24.6.0
  • webencodings ==0.5.1
  • websocket-client ==1.8.0
  • websockets ==12.0
  • widgetsnbextension ==4.0.11
  • wordcloud ==1.9.4
  • yarl ==1.15.3
  • zipp ==3.19.2
backend/repl/uv.lock pypi
  • 202 dependencies