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
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
Metadata Files
README.md
GigaAgent
GigaAgent — это агент-оркестратор для решения широкого круга задач. Например, он может придумать мем, описать бизнес-модель стартапа или создать лендинг. Для этого GigaAgent использует субагентов, среду для исполнения кода и сторонние сервисы.
[!CAUTION] GigaAgent может писать и исполнять код без участия пользователя. Учитывая раннюю стадию разработки проекта, это может быть опасно. Используйте агента с большой осторожностью.
GigaAgent умеет:
- работать с разными моделями, доступными в LangChain: GigaChat, ChatGPT, Anthropic и другими;
- исполнять код в чате с помощью в REPL-среды, подобной блокнотам jupyter;
- обмениваться данными со сторонними сервисами: VK, GitHub, 2GIS и другими;
- использовать инструменты для анализа данных, генерации изображений, создания презентаций и лендингов;
- генерировать изображения с помощью разных провайдеров: GigaChat, FusionBrain, OpenAI;
- работать локально или в облаке, с помощью Docker-контейнера.
Демо

Примеры работы с GigaAgent в формате PDF:
- кластеризация комментариев в VK;
- анализ настроений комментариев в VK и вывод основных жалоб;
- создание сайта со списком изменений, созданным на основе последних закрытых PR.
[!NOTE] Примеры работы субагентов, а также подробная информация о них — в разделе Субагенты.
Запуск
Запуск (через Docker)
pip install langgraph-climake init_files- Заполнить .docker.env в корне проекта
make build_graphdocker compose up -d- Проект запущен на 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
- Repositories: 60
- Profile: https://github.com/ai-forever
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
- python 3.11 build
- giga_agent latest
- postgres 16
- redis 6
- repl latest
- nginx alpine build
- node 18-alpine build
- @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
- 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
- 116 dependencies
- 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
- 202 dependencies