Skip to content

ResInferrer/VoiceAssistant

Repository files navigation

Голосовой ассистент с модульной архитектурой на LangGraph

Данный проект - это локальный голосовой ассистент с открытым исходным кодом, построенный на принципах модульной архитектуры и агентного подхода с использованием LangGraph. Он понимает голосовые команды, планирует их выполнение с помощью LLM и исполняет через подключенные модули, оставаясь при этом полностью оффлайн.

Python LangGraph Ollama MIT License

Основные возможности

  • Изменяемый вид ввода: При запуске будет выбор между текстовым и голосовым общением. Ответ получаете голосовым и текстовым. Распознавание (STT) и синтез речи (TTS) работают локально.
  • Модульная архитектура: Четкое разделение логики на независимые агенты (модули). Легко добавлять новые функции, создавая собственные модули.
  • Планирование на LangGraph: Центральный orchestrator_agent анализирует запрос, строит план выполнения и управляет цепочкой специализированных агентов через мощный фреймворк LangGraph.
  • Динамическое подключение модулей: Ключевой компонент plan_executor_agent позволяет во время выполнения подключать необходимые для задачи модули (например, test_agent, web_search_agent, music_agent).
  • Полная локальность: Все компоненты, включая языковую модель (через Ollama), работают на вашем компьютере. Данные и разговоры остаются приватными.

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

Проект построен вокруг графа агентов LangGraph, что обеспечивает гибкость, наблюдаемость и контроль над потоком выполнения. Графическую архитектуру проекта смотрите в файле agent_workflow_architecture.mmd.

Основные компоненты:

orchestrator_agent ("диспетчер"): Принимает текст запроса от STT или сразу текст, использует LLM для его анализа и создания плана - последовательности действий для plan_executor_agent. Использует модель qwen2.5:7b-instruct-q4_0 с больше ограничениями в конфиге, чем у основной модели. plan_executor_agent ("исполнитель"): Ключевой компонент системы. Получает план от оркестратора и динамически вызывает необходимые модули-агенты для его пошагового выполнения. Именно сюда подключаются все функциональные модули (см. graph/).

Функциональные модули (graph/): Независимые агенты, реализующие конкретные функции. По умолчанию включают:

  • general_agent: Универсальный чат-агент для ответов на вопросы. Модель: qwen2.5:7b-instruct-q4_0
  • tts_agent: Преобразует текст в речь.
  • stt_agent: Преобразует речь в текст.
  • test_agent: Заглушка. Пример модуля-заглушки для демонстрации и тестирования архитектуры.

config/: Централизованное управление промптами, параметрами моделей (temperature, num_ctx и т.д.) и другими настройками.

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

Предварительные требования

  • ОС: Windows (tts под эту платформу).
  • ОЗУ: 16 ГБ или более (для комфортной работы локальной LLM).
  • Python: 3.10 или новее.

Установка

  1. Клонируйте репозиторий:
git clone https://github.com/ResInferrer/VoiceAssistant.git
cd Lerche
  1. Установите Ollama (для локальной LLM): Скачайте и установите с (официального сайта)[https://ollama.com/download].

  2. Установите менеджер зависимостей uv:

pip install uv
  1. Установите зависимости проекта:
uv sync

Эта команда создаст виртуальное окружение и установит все пакеты из pyproject.toml.

  1. Загрузите языковую модель:
ollama pull qwen2.5:7b-instruct-q4_0

Почему именно эта модель? Она обеспечивает хороший баланс между качеством ответов, скоростью работы и требованиями к памяти для систем с 16 ГБ ОЗУ.

Запуск

  1. Убедитесь, что служба Ollama запущена. Если нет, то запустите:
ollama serve
  1. Выполните в терминале:
uv run main.py

Говорите в микрофон после звукового сигнала. Скажите или напишите "выход" для выхода из диалога.

Структура проекта

VoiceAssistant/
├── main.py                      # Точка входа, запускает главный цикл ассистента
├── graph/                       # Директория с реализациями всех агентов
│   ├── __init__.py
│   ├── agent_workflow.py        # Все агенты и workflow
├── config/                      # Конфигурации и промпты
│   ├── __init__.py
│   ├── llm_confing.py           # Параметры LLM (температура, модель и т.д.) и системные промты/промты
├── vosk_models/                 # Локальные модели для распознавания речи (Vosk)
│   └── vosk-model-small-ru-0.22/
└── pyproject.toml               # Зависимости и метаданные проекта

Лицензия

Этот проект распространяется под лицензией MIT. Подробнее см. в файле LICENSE.

About

This project is a local voice assistant built on the principles of modular architecture and an agent-based approach using LangGraph.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors