Перейти к содержанию

protoprompt

Слоистый сборщик контекста для LLM-промптов: RAG + сжатая память сессии + профиль пользователя.

English version

Прод-LLM-приложения упираются в одну и ту же стену: модели нужен контекст, но окно конечно. Самописная сборка промпта превращается в кашу: документы ищутся отдельно от истории сессии, system prompt дублируется, и каждая команда переписывает один и тот же связующий код.

protoprompt разделяет три задачи и даёт каждой чистый протокол. ContextBuilder оркестрирует их; результат — единый system_prompt плюс структурированный ContextOutput, чтобы UI мог показать, откуда пришёл каждый фрагмент.

Зачем

flowchart TB
    Q[Запрос пользователя] --> CB[ContextBuilder]
    CB -->|embed| EMB[LLM.embed]
    EMB -->|vector| S1[RAG-хранилище]
    EMB -->|vector| S2[Хранилище сессии]
    CB --> P[Профиль пользователя]
    CB --> SP[Системный промпт]
    S1 -->|top-k| CB
    S2 -->|top-k| CB
    P --> CB
    SP --> CB
    CB --> OUT[ContextOutput]

Три компонуемых слоя, три подключаемых контракта:

Задача Протокол Реализация по умолчанию
Векторное хранилище StoreProtocol InMemStore (тесты), ChromaStore
Сжатие сессии StrategyProtocol HeuristicStrategy, LLMSummaryStrategy
Подсчёт токенов TokenCounter RegexTokenCounter, TiktokenCounter

Возможности

  • RAG по документам с top-k-поиском и фильтрами по метаданным.
  • Память сессии, сжимающая старые ходы в vector-friendly выжимку.
  • Профиль пользователя, автоматически извлекаемый из прошлых сообщений.
  • Токен-бюджет, защищающий контекстное окно модели.
  • Подключаемость всего: хранилищ, стратегий, счётчиков токенов, даже LLM-клиента (подойдёт всё, что реализует LLMClientProtocol).
  • Нулевые жёсткие зависимости — опционально только chromadb и tiktoken.

Установка

pip install protoprompt
pip install "protoprompt[chroma]"     # векторный бэкенд
pip install "protoprompt[tiktoken]"   # точные подсчёты токенов
pip install "protoprompt[chroma,dev]" # всё для разработки

Дальше