Узнавайте первыми о новых AI-сборках и демо!
Инженерия промптов похожа на алхимию: заранее не угадаешь, что сработает лучше. Нужно экспериментировать, пока не найдёшь подходящий промпт. gpt-prompt-engineer выносит эти эксперименты на новый уровень.
Достаточно задать описание задачи и тестовые случаи — система сгенерирует множество промптов, проверит их и отсортирует по рейтингу, чтобы выделить самые эффективные.
Добавлена версия gpt-prompt-engineer под Anthropic Claude 3 Opus. В ней тестовые случаи генерируются автоматически, а пользователь может задать несколько входных переменных — это делает инструмент мощнее и гибче. Запускайте ноутбук claude-prompt-engineer.ipynb из репозитория.
Ноутбук позволяет собирать быстрые и эффективные AI-системы при заметно меньших затратах. Opus задаёт «пространство» качества, а Haiku используется для генерации: Opus создаёт набор эталонных примеров, по которым Haiku выдаёт результат сопоставимого качества при существенно меньшей задержке и стоимости. Запускайте opus-to-haiku-conversion.ipynb.
-
Генерация промптов: с помощью GPT-4, GPT-3.5-Turbo или Claude 3 Opus генерируются варианты промптов по заданному сценарию и тестовым случаям.
-
Проверка промптов: каждый вариант проверяется на всех тестовых случаях, результаты сравниваются и ранжируются по системе ELO.
-
Рейтинг ELO: у каждого промпта стартовый рейтинг 1200. В «турнире» по ответам на тестовые случаи рейтинги обновляются в зависимости от качества. Так видно, какие промпты работают лучше всего.
-
Версия для классификации: ноутбук
gpt-prompt-engineer -- Classification Versionзаточен под задачи классификации. Корректность проверяется по соответствию ожидаемому ответу ('true' или 'false'), в итоге выводится таблица с оценками по каждому промпту.
-
Версия Claude 3: ноутбук claude-prompt-engineer работает с Claude 3 Opus, сам генерирует тестовые случаи и поддерживает несколько входных переменных.
-
Конвертация Opus → Haiku: сохраняет качество Opus для вашего сценария при скорости и стоимости Haiku.
-
Логирование в Weights & Biases: по желанию можно логировать конфиг (temperature, max tokens), системные и пользовательские промпты, тестовые случаи и итоговый ELO по каждому кандидату. Включите:
use_wandb = True. -
Portkey: опциональное логирование и трассировка цепочек промптов и ответов. Включите:
use_portkey = True.
-
Откройте ноутбук в Google Colab или в локальном Jupyter. Для классификации — этот. Для Claude 3 — этот.
-
Укажите OpenAI API ключ: создайте файл
_secrets.pyиз_secrets.example.pyи пропишите в нёмOPENAI_API_KEY. В версии для Claude 3 укажите ключ Anthropic в переменнойANTHROPIC_API_KEY.
- Для версии на GPT-4 задайте сценарий использования и тестовые случаи. Сценарий — это описание того, что должна делать модель. Тестовые случаи — конкретные запросы, на которые она будет отвечать. Пример:
description = "По запросу сгенерировать заголовок для лендинга." # такое описание обычно даёт хороший результат
test_cases = [
{'prompt': 'Продвижение нового фитнес-приложения Smartly'},
{'prompt': 'Почему веганская диета полезна для здоровья'},
{'prompt': 'Запуск онлайн-курса по цифровому маркетингу'},
{'prompt': 'Запуск линейки экологичной одежды'},
{'prompt': 'Продвижение блога о бюджетных путешествиях'},
{'prompt': 'Реклама ПО для управления проектами'},
{'prompt': 'Презентация книги по изучению Python'},
{'prompt': 'Продвижение платформы для изучения языков'},
{'prompt': 'Реклама сервиса персональных планов питания'},
{'prompt': 'Запуск приложения для ментального здоровья и медитации'},
]
Для версии классификации тестовые случаи задаются в формате:
test_cases = [
{'prompt': 'У меня был отличный день!', 'output': 'true'},
{'prompt': 'Мне грустно.', 'output': 'false'},
# добавьте свои тестовые случаи
]
Для версии Claude 3 можно задать входные переменные помимо описания сценария:
description = "По запросу сгенерировать персональный ответ на email."
input_variables = [
{"variable": "SENDER_NAME", "description": "Имя отправителя письма."},
{"variable": "RECIPIENT_NAME", "description": "Имя получателя."},
{"variable": "TOPIC", "description": "Тема или суть письма. Одно-два предложения."}
]
Тестовые случаи будут сгенерированы автоматически по описанию и переменным.
-
Выберите, сколько вариантов промптов генерировать. Учтите, что при большом числе запросов затраты растут. Разумный старт — 10.
-
Вызовите
generate_optimal_prompt(description, test_cases, number_of_prompts)— будет сгенерирован список промптов и оценена их эффективность. В версии классификации достаточно выполнить последнюю ячейку. В версии Claude 3:generate_optimal_prompt(description, input_variables, num_test_cases, number_of_prompts, use_wandb). -
Итоговые рейтинги ELO выводятся в таблице по убыванию: чем выше рейтинг, тем лучше промпт.
В версии классификации для каждого промпта выводятся оценки в таблице (как на изображении выше).
- несколько генераторов системных промптов в разных стилях (с примерами, краткие, развёрнутые, markdown и т.д.);
- автоматическая генерация тестовых случаев;
- расширение версии классификации на более чем два класса (например, с tiktoken).
Проект распространяется под лицензией MIT.
Matt Shumer — @mattshumer_
Ссылка на проект: https://github.com/mshumer/gpt-prompt-engineer
Если интересны ещё более продвинутые инструменты — загляните в HyperWrite Personal Assistant: ИИ с доступом к актуальной информации, который умеет писать естественно и управлять браузером для выполнения задач.
А также ShumerPrompt — «Github для промптов».