README.md

Агент для создания стихов на базе LLM

Интерактивный агент для сочинения стихотворений на Русском языке с помощью большой языковой модели (LLM). Агент реализует многофазовый алгоритм:

  • сбор фактов
  • согласование сюжета
  • итеративное написание строф с проверкой размера и рифмы
  • и финальное сохранение

Пример работы

Баллада о Плюсах

Завёл я раз массив в плюсах,
Он десяток вмещает частей.
Но шагнул за границу — и ах!
Злой сегфолт прилетел без затей.

Я сам за память отвечал,
Набрал легко — не удалил.
Ресурс утёк — и я пропал,
Всё место мусором забил!

Что за нрав у программы — беда!
Словно призрак в коде, всегда.
Притаился, не дрогнет, молчит.
А потом, что захочет, — творит!

Написал я простейший шаблон,
Компилятор взбесился — и вон:
Сто страниц сообщений подряд,
Словно демона вызвать — обряд!

Пусть сегфолты грозят — не беда,
И шаблоны грызут, не щадя.
Я на плюсах останусь, друзья!
Это путь, отступать мне нельзя.

Архитектура

main.py                 — точка входа, цикл взаимодействия с LLM
├── tools_manager.py    — регистрация и диспетчеризация инструментов
├── context_manager.py  — управление историей сообщений (токен-лимит, сжатие)
├── creativity_manager.py — управление температурой LLM
├── user_input.py       — обработка команд пользователя
├── system.md           — системный промпт: роль, правила, алгоритм
├── user.md             — начальный запрос пользователя
└── tools/
    ├── accents.py      — расстановка ударений (ruaccent)
    ├── file.py         — чтение/запись/замена в файлах
    ├── web_search.py   — поиск в интернете (DuckDuckGo)
    └── memory.py       — векторная долговременная память (ChromaDB + bge-m3)

Как это работает

Алгоритм создания стихотворения

  1. Фаза 0 — Понимание запроса. Агент выясняет тему, если она не указана.
  2. Фаза 1 — Исследование. Поиск фактов в интернете, сохранение в векторную память.
  3. Фаза 2 — Согласование сюжета. Агент показывает план (разбивку на строфы) и ждёт одобрения пользователя.
  4. Фаза 3 — Написание строф. Для каждой строфы: генерация сюжета → подбор размера → цикл строк с проверкой ударений → показ пользователю → исправления по обратной связи.
  5. Фаза 4 — Завершение. Финальная запись в файл.

Инструменты LLM

Инструмент Описание
get_accents Расставляет ударения в русском тексте (проверка ритма)
read_file / write_file / search_replace Операции с файлами
web_search Поиск в интернете через DuckDuckGo
add_fact / search_facts / delete_facts Долговременная векторная память
set_temperature Управление креативностью модели (0.0–2.0)

Управление температурой

Модель автоматически переключает температуру в зависимости от фазы работы:

  • 0.1–0.4 — точный анализ (проверка размера, грамматики)
  • 0.5–0.8 — стандартные операции (файлы, поиск, диалог)
  • 0.9–1.5 — творческий режим (генерация сюжета, строк, рифм)
  • 1.2–1.5 — «прорыв» при застревании

Команды пользователя

/stop             — завершить генерацию
/show             — показать текущий текст
/save [файл]      — сохранить в файл
/redo             — отменить последний ответ модели
/текст            — дать инструкцию для продолжения
[Enter]           — продолжить автоматически

Управление контекстом

Контекстное окно (32K токенов) управляется автоматически:

  • Длинные ответы инструментов обрезаются (начало + конец).
  • При приближении к лимиту удаляются старые сообщения (с сохранением краткого содержания).
  • В критической ситуации внедряется сжатая сводка вместо первого непрограммного сообщения.
  • После цикла инструментов очищаются все tool-сообщения.

Требования

  • Python 3.10+
  • OpenAI-совместимый API-ключ (endpoint: https://polza.ai/api/v1)

Установка

pip install openai httpx chromadb sentence-transformers ruaccent beautifulsoup4 ddgs requests huggingface-hub torch

Настройка

  1. Укажите ваш API-токен в main.py:

    LM_API_TOKEN = "ваш_токен"
    
  2. При необходимости измените модель или endpoint.
  3. Отредактируйте user.md — начальный запрос к модели.

Запуск

python main.py

Агент начнёт диалог, следуя алгоритму из system.md. После каждой строфы он запрашивает подтверждение пользователя.

Примечания

  • Все операции с файлами ограничены текущей рабочей директорией.
  • Поиск в интернете использует DuckDuckGo (без API-ключа) с фильтрацией нежелательных доменов.
  • Векторная память использует BAAI/bge-m3 для эмбеддингов и ChromaDB для хранения.
  • Модель ударений — ruaccent (размер turbo3.1).
  • При первом запуске модель эмбеддингов скачивается из HuggingFace Hub (кэшируется локально).
Описание
Реализация автономного агента для взаимодействия с LLM с нуля.
Конвейеры
0 успешных
0 с ошибкой
Разработчики