Local Multi-Agents: LangGraph, Ollama, Qwen3
flowchart LR
%% === STYLES ===
classDef main fill:#e3f2fd,stroke:#1e88e5,stroke-width:2px,color:#0d47a1;
classDef branch fill:#e8f5e9,stroke:#43a047,stroke-width:1.5px;
classDef tech fill:#fff8e1,stroke:#f9a825;
classDef current fill:#ffe0b2,stroke:#e65100,stroke-width:2px,color:#bf360c;
%% === Level 0 ===
U([Пользователь])
%% === Level 1 ===
U -- "периодические<br/>задачи" --> W["Использование web-чатов"]
U -- "повторяемые<br/>однотипные задачи" --> A["Автоматизация AI Agents"]
%% === Level 2A — Web Chats ===
W --> W1["ChatGPT"]
W --> W2["DeepSeek"]
W --> W3["Qwen (online)"]
W --> W4["Claude"]
W --> W5["Gemini"]
W --> W6["Llama Web UI"]
%% === Level 2B — Автоматизация ===
A --> ZC["ZeroCode"]
A --> PR["Программирование"]
%% === Level 3A — ZeroCode ===
ZC --> Z1["Make / Zapier"]
ZC --> Z2["Flowise / Dify"]
ZC --> Z3["n8n"]
ZC --> Z4["No-code AI Tools"]
%% === Level 3B — Programming ===
PR --> P1["Без framework"]
PR --> P2["Использование framework"]
%% === Level 4A — Without Framework ===
P1 --> NF1["Python + API LLM"]
P1 --> NF2["Скрипты вокруг Ollama"]
P1 --> NF3["Самописные state-machine"]
%% === Level 4B — Frameworks ===
P2 --> FG1["LangGraph"]
P2 --> FG2["CrewAI"]
P2 --> FG3["Autogen"]
%% === APPLY STYLES ===
class U main
class W,A branch
class ZC,PR branch
class P1,P2 branch
class W1,W2,W3,W4,W5,W6 tech
class Z1,Z2,Z3,Z4 tech
class NF1,NF2,NF3 tech
class FG1,FG2,FG3 tech
%% Highlight current-focus nodes
class PR,P2,FG1 current
Этот репозиторий содержит три примера локальных AI-агентных систем на базе:
- 🧠 LangGraph (ReAct-агенты, мультиагентные графы)
- 🖥 Ollama (локальный запуск LLM)
- 🧾 Qwen3 (
qwen3:latest) как основная модель
Структура:
C:\_AI\LocalMultiAgents_01
├─ README.md # текущий обзор
├─ requirements.txt
└─ Python
├─ Agent_04_Drafter # Single-agent (Drafter)
│ ├─ Agent_04_Drafter.py
│ └─ README.md
├─ Supervisor # Multi-agent Supervisor
│ ├─ supervisor_math_research.py
│ └─ README.md
└─ Swarm # Multi-agent Swarm
├─ swarm_flight_hotel.py
└─ README.md
Во всех трёх примерах используется локальная языковая модель (LLM), развернутая через Ollama:
from langchain_ollama import ChatOllama
model = ChatOllama(model="qwen3:latest")Это обеспечивает:
- 🔒 Полную локальность выполнения (данные не покидают инфраструктуру)
- 🧱 Возможность использовать современные модели (qwen3, llama3, mistral и др.)
- ⚙️ Гибкость в выборе и замене моделей
Назначение: Система для подготовки и редактирования текстовых документов (письма, записки, черновики и т.п.) в режиме Human-AI Collaboration.
Ключевые компоненты:
-
Инструменты:
update(content: str)— обновление содержимого документа (глобальная переменнаяdocument_content)save(filename: str)— сохранение документа в текстовый файл
-
Граф состояний (LangGraph
StateGraph):- Узел
agent— логика агента с системным промтом - Узел
tools(ToolNode) — автоматический вызов инструментов - Условный переход
should_continue()— решает, продолжать ли работу или завершить процесс после сохранения документа
- Узел
-
Логика работы:
- Принимает запросы на изменение документа
- Вызывает инструмент
update, когда нужно заменить содержимое - При запросе на сохранение вызывает
saveи завершает работу - Показывает эволюцию документа в диалоге
Архитектура: одиночный агент с инструментами (Single Agent + Tools).
- Подробнее:
Python/Agent_04_Drafter/README.md
Назначение: Решение математических и исследовательских задач с распределением ролей между агентами.
Ключевые компоненты:
-
Supervisor:
- Управляет маршрутизацией запросов между агентами
- Принимает решение, к какому агенту отправить задачу
-
Специализированные агенты:
-
math_expert— математические операции:add(a, b)multiply(a, b)
-
research_expert— имитация веб-поиска:web_search(query)(возвращает заранее подготовленные данные)
-
-
Инструменты: классические Python-функции, обёрнутые в инструменты ReAct-агентов
-
Сценарий работы:
- Supervisor получает запрос пользователя (например: “What’s the combined headcount of the FAANG companies in 2024?”)
- Направляет запрос
research_expert→ тот вызываетweb_search - Затем Supervisor направляет результаты в
math_expert→ тот суммирует значения (add/multiply)
Архитектура: иерархическая мультиагентная система с централизованным управлением (Supervisor).
- Подробнее:
Python/Supervisor/README.md
Назначение: Децентрализованная система, где агенты (Alice и Bob) могут динамически передавать управление друг другу (handoff) и совместно решать задачи.
Ключевые компоненты:
-
Агенты с индивидуальностью:
Alice— эксперт по сложению чисел, использует инструментadd(a, b)Bob— «пират», сам не считает, передает математические задачи Alice
-
Swarm-архитектура:
- Используется
create_swarmизlanggraph_swarm - Управление передается через
create_handoff_tool(agent_name=...) - Состояние диалога хранится в
InMemorySaver(checkpointer)
- Используется
-
Работа в одной сессии:
- Диалог связывается по
thread_id - Swarm помнит, какой агент был активен последним
- Диалог связывается по
Архитектура: децентрализованный «рой» равноправных агентов, без единого центра управления.
- Подробнее:
Python/Swarm/README.md
AI Agent — это автономная система, которая:
- использует LLM для принятия решений;
- имеет доступ к инструментам (функциям, API, БД);
- может выполнять последовательность шагов для достижения цели;
- сохраняет состояние и контекст взаимодействия (история сообщений, переменные).
В этом репозитории примером одиночного агента является Agent_04_Drafter.
| Аспект | Одиночный агент | Мультиагентная система |
|---|---|---|
| Архитектура | Один агент со всеми инструментами | Несколько специализированных агентов |
| Специализация | Скорее универсальный | Каждый агент отвечает за свою область |
| Сложность | Проще в реализации | Требуется координация (Supervisor / Swarm) |
| Масштабируемость | Ограничена | Легко добавлять новых агентов и роли |
| Примеры | Drafter | Supervisor, Swarm |
- Структура: иерархическая, с центральным координатором.
- Управление: Supervisor решает, какому агенту передать задачу.
- Преимущества: чёткое разделение ответственности, предсказуемое поведение.
- Подходит: когда задачи можно хорошо категоризировать (математика vs исследование).
- Структура: децентрализованная сеть агентов.
- Управление: агенты самостоятельно передают задачи друг другу (handoff).
- Преимущества: гибкость, устойчивость к ошибкам отдельного агента, естественная эволюция сценариев.
- Подходит: для сложных, условно «неструктурированных» процессов, где роли могут меняться.
-
Локальность через Ollama обеспечивает приватность и контроль над данными.
-
Примеры демонстрируют эволюцию сложности:
- от одиночного агента (Drafter)
- к Supervisor-архитектуре
- к Swarm-модели с децентрализованным handoff.
-
LangGraph предоставляет мощные абстракции:
StateGraph,ToolNode, ReAct-агенты- Supervisor и Swarm-архитектуры.
-
Практическая применимость:
- автоматизация документооборота;
- аналитика и исследовательские задачи;
- сценарии, где нужно координировать несколько «ролей» внутри одной системы.
- Python 3.11
- Установленный Ollama
- Локальная модель:
ollama pull qwen3:latest- Зависимости из
requirements.txt.
cd C:\_AI\LocalMultiAgents_01
pip install -r requirements.txt
pip install -U "langgraph-cli[inmem]"(При необходимости см. также README в каждом подпроекте.)
-
Drafter (Single Agent) см.
Python/Agent_04_Drafter/README.md -
Supervisor (Multi-Agent Supervisor) см.
Python/Supervisor/README.md -
Swarm (Multi-Agent Swarm) см.
Python/Swarm/README.md