Skip to content

Latest commit

 

History

History
201 lines (131 loc) · 10.4 KB

File metadata and controls

201 lines (131 loc) · 10.4 KB
eXprompt

eXprompt

Зворотний T9 для LLM. Безкоштовний open-source CLI-проксі компресор промптів для ваших AI-промптів та агентів.

Pure Go No ML No network MIT licensed

English · Español · Français · Deutsch · 日本語 · Українська


Подивіться за секунду

$ exprompt 'Actually I think you should really check if the API returns correct JSON'

  → chk if the API rtrns crct JSON

  ███████████░░░░░░░░░  56% saved · 31 chars · 2 passes · <1ms

  ✓ copied to clipboard

Результат уже у вашому буфері обміну — вставляйте у ChatGPT, Claude чи будь-куди.


Що таке eXprompt

Невеликий CLI-інструмент, який стискає AI-промпти на 25–50 % до того, як вони потраплять до моделі. Видаляє слова-паразити, замінює поширені слова короткими формами та захищає технічні терміни (API, JSON, camelCase, func(), числа, імена файлів), щоб їх ніколи не зачепило.

Лише локально Жодних моделей, жодних мережевих викликів, ніякі дані не залишають вашу машину. Текст на вхід — текст на вихід.
Детермінований На основі словників. Однаковий вхід завжди дає однаковий вихід.
Гнучкий Перемикайте фільтри для одного запуску або зберігайте налаштування через exprompt config set.
Крихітний Один статичний Go-бінарник. Обробляє будь-який реалістичний промпт за <1 мс.
Відкритий Ліцензія MIT; кожна трансформація живе у звичайних JSON-файлах, які можна читати, форкати чи розширювати.

Не є метою: семантичне переписування (жоден LLM не переписує ваш текст), переклад чи робота як проксі інференсу.


Навіщо вам це

  • Менші рахунки за API. Кожен токен коштує грошей. eXprompt зрізає третину входу, не змінюючи відповіді моделі.
  • Більше місця у вікні контексту. Той самий бюджет, більше сигналу. Чудово для довгих чатів, code-review та RAG.
  • Швидші промпти. Менший текст швидше летить по мережі та швидше префільниться на боці моделі.
  • Одна команда, жодного lock-in. Працює з будь-яким LLM (ChatGPT, Claude, Gemini, Llama…), бо вихід — це звичайний текст.
  • Не заважає. Підключаєте до Claude Code один раз — і забуваєте, що воно є.

Як це працює

Фіксований детермінований ланцюжок проходить ваш текст. Весь ланцюжок повторюється доки вихід не перестане змінюватись (максимум 3 проходи) — щоб видалення окремих слів могло знову з'єднати багатослівні фрази, які наступний прохід уже впізнає.

flowchart TD
    Input([Ваш промпт]) --> P[<b>Anchors.Protect</b><br/>захищає func, ВЕЛИКІ ЛІТЕРИ,<br/>імена файлів, camelCase,<br/>числа → §A0 §A1 …]
    P --> Punct[<b>Пунктуація</b><br/>видаляє , . ! ? ; : ' &quot;]
    Punct --> AbbP[<b>Скорочення.Фрази</b><br/>багатослівні, на ОРИГІНАЛІ<br/><i>that is → i.e.</i>]
    AbbP --> Fil[<b>Паразити</b><br/>фрази → слова → фрази повторно<br/>+ зачистка займенників]
    Fil --> AbbW[<b>Скорочення.Слова</b><br/>окремі слова, після паразитів<br/><i>you→u, should→shld, and→&amp;</i>]
    AbbW --> Vow[<b>Голосні</b><br/>БЕТА, типово вимкнено]
    Vow --> Rest[<b>Anchors.Restore</b><br/>§A0 → оригінал]
    Rest --> Orph[<b>Зачистка осиротілого "I"</b><br/><i>I tht the X → the X</i>]
    Orph --> WS[<b>Стиск пробілів</b>]
    WS --> Conv{Дорівнює<br/>попередньому проходу?}
    Conv -- ні, змінилось --> P
    Conv -- так, збіглося --> Out([Стиснений промпт])
Loading

Чому потрібен цикл: у "I honestly think that the createUserTable() function should be documented" фраза "I think that" на першому проході не є суцільною (слово "honestly" між ними). Перший прохід прибирає "honestly". Другий прохід тепер бачить "I think that" як суцільний паразит і видаляє його. Третій прохід підтверджує: змін більше немає — готово.


Встановлення

Мета: щоб exprompt працював з будь-якої теки.

macOS / Linux — Homebrew (рекомендовано)

brew install bladysh/tap/exprompt
exprompt -v

Оновити: brew upgrade exprompt. Видалити: brew uninstall exprompt.

Windows — Scoop (рекомендовано)

scoop bucket add bladysh https://github.com/bladysh/scoop-bucket
scoop install exprompt
exprompt -v

Оновити: scoop update exprompt. Видалити: scoop uninstall exprompt.

Готові бінарники

Завантажте відповідний архів зі сторінки останнього релізу, розпакуйте та покладіть exprompt у каталог із вашого PATH.

З джерел

git clone https://github.com/bladysh/exprompt.git
cd exprompt
make install          # копіює в /usr/local/bin/ (запитає sudo)
exprompt -v

Швидке використання

⚠️ Завжди беріть промпт у лапки. Одинарні лапки найбезпечніші — інакше shell інтерпретує ( ) $ ! " ще до того, як exprompt їх побачить.

exprompt 'ваш промпт'                    # типова дія: стиснути
echo 'ваш промпт' | exprompt             # читати зі stdin
exprompt --stdin -q --no-copy < prompt.txt
exprompt '...' --no-copy                 # не чіпати буфер обміну
result=$(exprompt '...' -q)              # стиснений текст у змінну
exprompt '...' --disable fillers         # вимкнути окремий фільтр

Інтеграція з редакторами

Claude Code

cd ваш-проєкт
exprompt hook claude        # додає UserPromptSubmit-хук у .claude/settings.json

Тепер кожен промпт у Claude Code із цієї теки спочатку стискається. Хук зберігає абсолютний шлях до бінарника, тож працює незалежно від PATH. Прибрати: exprompt hook remove. Статус: exprompt hook status.


Як бібліотека

pkg/exprompt — публічний Go-пакет. Можна використовувати конвеєр зі свого коду без CLI:

go get github.com/bladysh/exprompt
import "github.com/bladysh/exprompt/pkg/exprompt"

p := exprompt.NewPipeline("en")
r, _ := p.Compress("Actually you should test the API")

fmt.Println(r.Text)     // "test the API"
fmt.Println(r.Savings)  // 0.42 (частка 0.0–1.0)
fmt.Println(r.Passes)   // 2 (скільки реальних проходів виконано)

Робочі приклади у examples/.


Детальніше

Розширені розділи — повна конфігурація, фільтр голосних (БЕТА), команда savings, безпека, структура проєкту й гайд для контриб'юторів — у README англійською.


Ліцензія

MIT — повністю open source, без обмежень.

На плечах гігантів

Наші англійські словники паразитів та хеджів стартували з MIT-ліцензованих списків Titus Wormer. Відтоді ми їх значно розширили, прокурували й переорганізували під стиск промптів — але саме ті репозиторії стали зерном, з якого виріс цей проєкт. Велика подяка:

Оригінальні тексти MIT-ліцензії (збережені для тих записів, які ми залишили) лежать у pkg/filters/dictionaries/README.md поруч із самими даними.


Зроблено на Go · Для тих, хто пише LLM-ам занадто ввічливо.