- BrainTools - https://www.braintools.ru -

MitM-прокси для LLM

MitM-прокси для LLM - 1

Многие разработчики в последнее время используют облачные LLM для генерации программного кода, в том числе с помощью агентов. Но это вызывает как минимум две проблемы:

  1. Утечка информации: мы не знаем, какие данные LLM передаёт в облако

  2. Бесконтрольный расход токенов, особенно в случае автоматических агентов, которые запускаются в автономную работу на длительный период

Для этого есть специальные инструменты мониторинга. Например, Tokentap [1] (бывший Sherlock) отслеживает использование токенов для LLM CLI в реальном времени на панели в консоли. Такой MitM-прокси полезен для информационной безопасности и просто для учёта расходов.


Особенности программы:

  • Отслеживание использования токенов: сколько токенов потребляет каждый запрос.

  • Мониторинг контекстных окон: визуальный индикатор показывает, сколько накопилось токенов, по сравнению с лимитом.

  • Отладка подсказок: автоматически сохраняет каждый запрос в форматах Markdown и JSON для просмотра.

  • Простая конфигурация (точнее, её отсутствие): программа работает сразу после установки, не требует сертификатов или дополнительной настройки.

Установка

Для установки Tokentap на Linux желательно сначала поставить пакеты pip и pipx. Тогда инсталляция с автоматической установкой виртуального окружения проходит проще всего:

pipx install tokentap
MitM-прокси для LLM - 2

Как вариант, можно вручную установить из исходников, но тогда нужно будет вручную установить venv:

git clone https://github.com/jmuncor/tokentap.git
cd tokentap
pip install -e .

Затем запускаем прокси:

tokentap start

Программа предложит сохранить перехваченные промты, а затем появится консоль такого вида:

┌─────────────────────────────────────────────────────────────┐
│  TOKENTAP - LLM Traffic Inspector                           │
├─────────────────────────────────────────────────────────────┤
│  Context Usage  ████████████░░░░░░░░░░░░░░░░  42%           │
│                 (84,231 / 200,000 tokens)                   │
├─────────────────────────────────────────────────────────────┤
│  Time     Provider    Model                      Tokens     │
│  14:23:01 Anthropic   claude-sonnet-4-20250514   12,847     │
│  14:23:45 Anthropic   claude-sonnet-4-20250514   8,234      │
│  14:24:12 Anthropic   claude-sonnet-4-20250514   15,102     │
├─────────────────────────────────────────────────────────────┤
│  Last Prompt: "Can you help me refactor this function..."   │
└─────────────────────────────────────────────────────────────┘

Или можно сразу запустить установленную локальную LLM через прокси:

# Для Claude Code
tokentap claude

# Для Gemini CLI
tokentap gemini

# Для OpenAI Codex
tokentap codex

Пока поддерживаются три провайдера LLM, все они обычно используются для программирования из консоли, в том числе запуска агентов.

Предположим, мы установили в системе Gemini CLI и подключились к аккаунту Google. Теперь запускаем прокси командой tokentap gemini:

MitM-прокси для LLM - 3

MitM-прокси

Схема работы прокси:

┌─────────────────────────────────────────────────────────────────┐
│  Terminal 1: tokentap start                                     │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │  HTTP Proxy (localhost:8080)                                ││
│  │  + Dashboard                                                ││
│  │  + Prompt Archive                                           ││
│  └─────────────────────────────────────────────────────────────┘│
└───────────────────────────────┬─────────────────────────────────┘
                                │ HTTP
                                │
┌───────────────────────────────┴─────────────────────────────────┐
│  Terminal 2: tokentap claude                                    │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │  Sets ANTHROPIC_BASE_URL=http://localhost:8080              ││
│  │  Runs: claude                                               ││
│  └─────────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────────┘
                                │
                                │ HTTPS
                                ▼
                      ┌───────────────────┐
                      │ api.anthropic.com │
                      └───────────────────┘

Опции при запуске:

tokentap start [OPTIONS]

Options:
  -p, --port NUM    Proxy port (default: 8080)
  -l, --limit NUM   Token limit for fuel gauge (default: 200000)

Что показывает информационная панель:

  • Зелёный индикатор: < 50% от лимита токенов

  • Жёлтый: 50-80% от лимита

  • Красный: > 80% от лимита

Каждый перехваченный запрос сохраняется в выбранный каталог в форматах Markdown (человекочитаемый формат для удобства) и JSON (исходное тело запросов API для отладки

При выходе из LLM-CLI отображается сводка сессии в таком формате:

Session complete. Total: 84,231 tokens across 12 requests.

Судя по фрагменту исходного кода [2], программа работает как расширение для mitmproxy [3], известного HTTPS-прокси.

MitM-прокси для LLM - 4

Локальные модели

Чтобы избежать утечки информации, специалисты по безопасности рекомендуют использовать локальные модели из набора Hugging Face [4]. Все модели на этом сайте доступны для скачивания:

MitM-прокси для LLM - 5

Модели работают через оболочку инференса llama.ccp [5] следующим образом:

# Использовать файл локальной модели
llama-cli -m my_model.gguf

# Скачать и запустить модель напрямую с Hugging Face
llama-cli -hf ggml-org/gemma-3-1b-it-GGUF

# Запустить OpenAI-совместимый сервер API
llama-server -hf ggml-org/gemma-3-1b-it-GGUF
MitM-прокси для LLM - 6

Оболочка для инференса llama.ccp основана на тензорной библиотеке машинного обучения [6] ggml [7], которая обеспечивает высокую производительность больших моделей на стандартном компьютерном железе. Библиотека не имеет внешних зависимостей, работает на любой аппаратной платформе и не выдвигает высоких требований к конфигурации ПК.

Несколько недель назад автор ggml Георгий Герганов объявил [8] о том, что небольшой коллектив разработчиков теперь войдёт в состав компании Hugging Face, что гарантирует дальнейшую разработку интерфейса для локального запуска моделей ИИ (Local AI). Проекты ggml остаются открытыми и управляемыми сообществом, а дополнительное внимание [9] в ближайшее время уделят интеграции с библиотекой transformers [10] от Hugging Face для улучшенной поддержки моделей.

Разработчики считают, что сейчас локальный инференс «становится значимой и конкурентоспособной альтернативой облачному». Для будущей сверхмощной системы ИИ важно, чтобы она работала по распределённой модели на железе пользователей, а не в дата-центре коммерческой корпорации.


Примечание. Локальная LLM может быть установлена на компьютер даже без ведома пользователя. Например, последние версии браузера Chrome принудительно устанавливают локальную модель Gemini Nano [11], не предупреждая об этом.

Отключить эту опцию можно с помощью параметров Optimization Guide On Device Model и Prompt API в браузере, которые изменяются через chrome://flags/.

MitM-прокси для LLM - 7

После этого модно удалить модель размером около 4 ГБ в папке AppData/Local/Google/Chrome/User Data/OptGuideOnDeviceModel/.

И в локальной, и в облачной нейронной модели для информационной безопасности желательно отслеживать, какие промты и токены к ней поступают, как она она их обрабатывает и какой выдаёт результат. Для облачной модели — также отслеживать и логгировать внешний трафик. Если мы не контролируем действия модели, то ей нельзя полностью доверять.

Автор: GlobalSign_admin

Источник [12]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/27942

URLs in this post:

[1] Tokentap: https://github.com/jmuncor/tokentap

[2] фрагменту исходного кода: https://github.com/jmuncor/tokentap/blob/fb76605fabbda351828ebc0e042f03d13caee502/sherlock/interceptor.py#L17

[3] mitmproxy: https://www.mitmproxy.org/

[4] Hugging Face: https://huggingface.co/

[5] llama.ccp: https://github.com/ggml-org/llama.cpp

[6] обучения: http://www.braintools.ru/article/5125

[7] ggml: https://github.com/ggml-org/ggml

[8] объявил: https://github.com/ggml-org/llama.cpp/discussions/19759

[9] внимание: http://www.braintools.ru/article/7595

[10] transformers: https://github.com/huggingface/transformers

[11] принудительно устанавливают локальную модель Gemini Nano: https://habr.com/ru/posts/1002320/

[12] Источник: https://habr.com/ru/companies/globalsign/articles/1016612/?utm_campaign=1016612&utm_source=habrahabr&utm_medium=rss

www.BrainTools.ru

Rambler's Top100