LLM Guard by Protect AI is a comprehensive tool designed to fortify the security of Large Language Models (LLMs).
Documentation | Playground | Changelog
By offering sanitization, detection of harmful language, prevention of data leakage, and resistance against prompt injection attacks, LLM-Guard ensures that your interactions with LLMs remain safe and secure.
Begin your journey with LLM Guard by downloading the package:
pip install llm-guard
Important Notes:
- LLM Guard is designed for easy integration and deployment in production environments. While it's ready to use out-of-the-box, please be informed that we're constantly improving and updating the repository.
- Base functionality requires a limited number of libraries. As you explore more advanced features, necessary libraries will be automatically installed.
- Ensure you're using Python version 3.9 or higher. Confirm with:
python --version
. - Library installation issues? Consider upgrading pip:
python -m pip install --upgrade pip
.
Examples:
- Get started with ChatGPT and LLM Guard.
- Deploy LLM Guard as API
- Anonymize
- BanCode
- BanCompetitors
- BanSubstrings
- BanTopics
- Code
- CodeCipherObfuscator
- Gibberish
- InvisibleText
- Language
- PromptInjection
- Regex
- Secrets
- Sentiment
- TokenLimit
- Toxicity
- BanCode
- BanCompetitors
- BanSubstrings
- BanTopics
- Bias
- Code
- Deanonymize
- JSON
- Language
- LanguageSame
- MaliciousURLs
- NoRefusal
- ReadingTime
- FactualConsistency
- Gibberish
- Regex
- Relevance
- Sensitive
- Sentiment
- Toxicity
- URLReachability
LLM Guard is an open source solution. We are committed to a transparent development process and highly appreciate any contributions. Whether you are helping us fix bugs, propose new features, improve our documentation or spread the word, we would love to have you as part of our community.
- Give us a ⭐️ github star ⭐️ on the top of this page to support what we're doing, it means a lot for open source projects!
- Read our docs for more info about how to use and customize LLM Guard, and for step-by-step tutorials.
- Post a Github Issue to submit a bug report, feature request, or suggest an improvement.
- To contribute to the package, check out our contribution guidelines, and open a PR.
Join our Slack to give us feedback, connect with the maintainers and fellow users, ask questions, get help for package usage or contributions, or engage in discussions about LLM security!
We're eager to provide personalized assistance when deploying your LLM Guard to a production environment.
Сервис для обфускации и деобфускации кода при взаимодействии с LLM, основанный на подходе CodeCipher и использующий механизм vault LLM Guard.
Данное решение позволяет защитить конфиденциальный код при взаимодействии с языковыми моделями, такими как GPT-4, Claude, и другими. Основные возможности:
- Обфускация кода: Преобразование исходного кода в нечитаемую форму при сохранении функциональности
- Хранение соответствий в vault: Сохранение оригинального и обфусцированного кода для последующей деобфускации
- Деобфускация ответов: Восстановление оригинального кода в ответах LLM
docker-compose.yml
- Конфигурация для запуска LLM Guard API с поддержкой CodeCipherllm_guard_api/
- Директория с исходным кодом LLM Guard APIllm_guard_api/config/scanners.yml
- Конфигурация сканеров, включая CodeCipherObfuscatorcode_cipher_client.py
- Клиент для демонстрации работы с сервисомtest_prompt.txt
- Пример промпта с кодом для тестирования
- Docker и Docker Compose
- Python 3.9+
- pip (для установки зависимостей клиента)
- Настройте параметры в файле
docker-compose.yml
, особенноAUTH_TOKEN
для безопасности:
environment:
- AUTH_TOKEN=your_secure_token_here # Замените на безопасный токен
- Запустите сервис с помощью Docker Compose:
docker-compose up -d
- Проверьте, что сервис успешно запущен:
curl http://localhost:8000/healthcheck
pip install requests argparse
python code_cipher_client.py --file test_prompt.txt --api-key your_secure_token_here
или
python code_cipher_client.py --prompt "Помоги оптимизировать этот код: \`\`\`python\ndef hello():\n print('Hello world')\n\`\`\`" --api-key your_secure_token_here
Данные хранилища vault сохраняются в томе Docker cipher_vault_data
. Для просмотра их содержимого можно подключиться к контейнеру:
docker exec -it llm_guard_api_1 /bin/bash
ls -la /home/user/app/cipher_vault
Для ускорения работы CodeCipherObfuscator можно использовать предварительно обученные модели, что позволяет избежать повторного обучения при каждом запросе:
Используйте скрипт code_cipher_pretraining.py
для обучения моделей на примерах кода:
python code_cipher_pretraining.py --models-dir ./pretrained_models --languages python javascript java cpp
Для обучения на собственных примерах кода подготовьте JSON-файл и передайте его в параметре --code-examples
:
python code_cipher_pretraining.py --models-dir ./pretrained_models --code-examples ./my_code_examples.json
Формат JSON-файла с примерами:
{
"python": ["def example():\n return 42", "class Test:\n pass"],
"javascript": ["function example() {\n return 42;\n}"]
}
Для использования предварительно обученных моделей в LLM Guard API:
- Раскомментируйте и настройте
PretrainedCodeCipherObfuscator
вllm_guard_api/config/scanners.yml
:
- type: PretrainedCodeCipherObfuscator
params:
pretrained_models_dir: "/home/user/app/pretrained_models"
vault_dir: "/home/user/app/cipher_vault"
skip_patterns: ["# COPYRIGHT", "# DO NOT OBFUSCATE"]
-
Закомментируйте или удалите стандартный
CodeCipherObfuscator
-
Перезапустите LLM Guard API:
docker-compose restart
Для тестирования скорости и качества обфускации с предварительно обученными моделями используйте скрипт pretrained_code_cipher_example.py
:
python pretrained_code_cipher_example.py --models-dir ./pretrained_models
В текущей версии LLM Guard API отсутствует эндпоинт для деобфускации ответов. Для полной функциональности необходимо:
- Добавить новый эндпоинт
/deobfuscate
вllm_guard_api/app/app.py
- Реализовать логику доступа к хранилищу vault и вызова метода
deobfuscate()
- Обновить клиент для использования этого эндпоинта
- Всегда используйте токен аутентификации для защиты API
- Контролируйте доступ к хранилищу vault, так как оно содержит оригинальный код
- Периодически очищайте устаревшие данные из хранилища
- CodeCipher может замедлить обработку запросов из-за дополнительных вычислений
- В некоторых случаях обфускация может быть недостаточной для сложного кода
- LLM может генерировать код, отличающийся от обфусцированного, что затруднит деобфускацию
Подробности о методе CodeCipher можно найти в исследовательской работе CodeCipher: Learning to Obfuscate Source Code Against LLMs.
Данное решение распространяется под лицензией MIT, как и LLM Guard.
CodeCipher - это система для безопасного обмена кодом с LLM, которая автоматически обфусцирует чувствительный код перед отправкой и деобфусцирует ответы от модели после получения.
Основные компоненты системы:
- LLM Guard API с точкой доступа
/deobfuscate
для деобфускации кода - CodeCipherObfuscator - сканер для обфускации кода в запросах
- Хранилище (vault) - для сохранения данных, необходимых для деобфускации
- Клиентский скрипт - для простого использования функциональности
- Интеграция с DeepSeek API - для полного цикла тестирования с реальной LLM
# Запуск API в Docker контейнере
docker-compose up -d
Сервис доступен по адресу http://localhost:8000
# Проверка статуса API
curl http://localhost:8000/healthcheck
Клиентский скрипт автоматически обфусцирует код, отправит его в LLM и деобфусцирует ответ:
python code_cipher_client.py --file path/to/your/code.py --api-key your_secret_token_here
Система включает скрипты для генерации тестовых примеров кода и проведения комплексного тестирования:
- Генерация примеров кода в различных языках программирования:
python generate_code_examples.py --count 100 --output ./code_examples
- Запуск тестов обфускации, вызова реальной LLM и деобфускации:
python test_code_cipher.py --examples ./code_examples --api-key your_secret_token_here \
--llm-api-key your_secret_token_here \
--llm-model deepseek-coder-v2
- Быстрый запуск всего цикла тестирования:
./run_test.sh --test-files 5
--count NUM Количество примеров для генерации (по умолчанию: 1000)
--output DIR Директория для сохранения примеров (по умолчанию: ./code_examples)
--workers NUM Количество рабочих потоков (по умолчанию: 4)
--examples DIR Директория с примерами кода (по умолчанию: ./code_examples)
--api-url URL URL API LLM Guard (по умолчанию: http://localhost:8000)
--api-key KEY Ключ API для LLM Guard (по умолчанию: your_secret_token_here)
--llm-api-url URL URL API DeepSeek (по умолчанию: https://api.deepseek.com/v1)
--llm-api-key KEY Ключ API для DeepSeek (по умолчанию: )
--llm-model MODEL Модель для DeepSeek API (по умолчанию: deepseek-coder-v2)
--workers NUM Количество рабочих потоков (по умолчанию: 4)
--limit NUM Ограничение количества тестируемых файлов
--report FILE Файл для сохранения отчета (по умолчанию: code_cipher_report.csv)
--api-key KEY Ключ API для LLM Guard
--llm-api-key KEY Ключ API для DeepSeek
--llm-api-url URL URL API DeepSeek
--llm-model MODEL Модель для DeepSeek API
--examples NUM Количество генерируемых примеров
--test-files NUM Количество файлов для тестирования
--workers NUM Количество рабочих потоков
Хранилище (vault) организовано следующим образом:
cipher_vault/
├── session_id_1/
│ ├── mapping.json # Словарь соответствия оригинальных и обфусцированных имен
│ └── original.py # Оригинальный код (для проверки)
├── session_id_2/
│ ├── ...
...
После выполнения тестов создается CSV-файл с подробной информацией о каждом тесте и журнал тестирования в файле test_code_cipher.log
. Отчет включает:
- Успешность обфускации кода
- Успешность вызова DeepSeek API
- Успешность деобфускации ответа LLM
- Соответствие исходного и деобфусцированного кода
- Время выполнения каждой операции
- Соотношение размеров обфусцированного и оригинального кода
- Время обфускации: Зависит от размера и сложности кода (обычно менее 1 секунды)
- Время вызова DeepSeek API: Обычно 2-5 секунд в зависимости от размера кода
- Время деобфускации: Зависит от размера и сложности кода (обычно менее 1 секунд 7BEF )
- Сохранение функциональности: Обфусцированный код сохраняет синтаксическую корректность
- Коэффициент увеличения размера: Обычно 1.1-1.5x от исходного размера
Система использует DeepSeek API для тестирования полного цикла обфускации и деобфускации:
- Код обфусцируется с помощью CodeCipherObfuscator
- Обфусцированный код отправляется в DeepSeek API для анализа и улучшения
- Ответ от DeepSeek API деобфусцируется для восстановления оригинальных имен переменных и функций
- Выполняется сравнение для проверки корректности деобфускации
Это позволяет проводить реалистичное тестирование системы с реальной LLM вместо имитации ответов.
- API защищен токеном аутентификации
- Оригинальный код никогда не передается в исходном виде
- Данные для деобфускации хранятся в безопасном хранилище
- API ключи хранятся локально и могут быть заменены пользователем
- Некоторые сложные конструкции кода могут обфусцироваться с ошибками
- Производительность может снижаться при обработке очень больших файлов
- При сбоях деобфускации возвращается исходный ответ LLM
- Тестирование с DeepSeek API требует валидный API ключ
- Улучшение обработки сложных конструкций кода
- Поддержка дополнительных языков программирования
- Интеграция с IDE и текстовыми редакторами
- Автоматическая ротация сессий для повышения безопасности
- Поддержка других LLM API (OpenAI, Anthropic, Cohere и т.д.)