by mshumer (community) GPT-4, Claude (через API)
Инструмент, который использует LLM для автоматической генерации и оптимизации промптов методом ELO-рейтинга. AI сам придумывает и выбирает лучший промпт для задачи. Как работает: - Описываешь задачу и несколько примеров input/output - GPT-4 генерирует N вариантов промптов - Каждая пара промптов тестируется на примерах - ELO-турнир выявляет лучший промпт - Итоговый промпт оптимален для твоей задачи Отдельный режим для classification-задач.
# Клонировать репо и установить зависимости: git clone https://github.com/mshumer/gpt-prompt-engineer cd gpt-prompt-engineer pip install -r requirements.txt # Настройка API (OpenAI или Anthropic): export OPENAI_API_KEY=sk-... # Запуск Jupyter-ноутбука: jupyter notebook gpt_prompt_engineer.ipynb
Будьте первыми, кто узнает о новых ИИ-проектах и демонстрациях!
Инжиниринг промптов — это что-то вроде алхимии. Нет четкого способа предсказать, что сработает лучше всего. Все сводится к экспериментам, пока вы не найдете правильный промпт. gpt-prompt-engineer — это инструмент, который выводит эти эксперименты на совершенно новый уровень.
Просто опишите свою задачу и предоставьте тестовые случаи, а система сгенерирует, протестирует и ранжирует множество промптов, чтобы найти наиболее эффективные.
Я добавил новую версию gpt-prompt-engineer, которая использует все возможности модели Anthropic Claude 3 Opus. Эта версия автоматически генерирует тестовые случаи и позволяет пользователю определять несколько входных переменных, что делает ее еще более мощной и гибкой. Попробуйте ее с ноутбуком claude-prompt-engineer.ipynb в репозитории!
Этот ноутбук позволяет создавать молниеносные и производительные ИИ-системы за небольшую часть обычных затрат. Используя Claude 3 Opus для установки латентного пространства и Claude 3 Haiku для фактической генерации, вы можете получить потрясающие результаты. Процесс работает следующим образом: используется Opus для создания коллекции высококачественных примеров, которые затем направляют Haiku для генерации вывода сопоставимого качества, при этом значительно снижая как задержку, так и стоимость за генерацию. Попробуйте ее с ноутбуком opus-to-haiku-conversion.ipynb в репозитории!
Генерация промптов: Используя GPT-4, GPT-3.5-Turbo или Claude 3 Opus, gpt-prompt-engineer может сгенерировать множество возможных промптов на основе предоставленного варианта использования и тестовых случаев.
Тестирование промптов: Настоящее волшебство происходит после генерации. Система проверяет каждый промпт на всех тестовых случаях, сравнивает их производительность и ранжирует с использованием рейтинговой системы ELO.
Рейтинговая система ELO: Каждый промпт начинает с рейтинга ELO 1200. По мере того как они конкурируют друг с другом, генерируя ответы на тестовые случаи, их рейтинги ELO меняются в зависимости от их производительности. Таким образом, вы можете легко увидеть, какие промпты являются наиболее эффективными.
Версия классификации: Наш блокнот gpt-prompt-engineer -- Версия классификации предназначен для выполнения задач классификации. Он оценивает корректность тестового случая, сопоставляя его с ожидаемым выходом ('true' или 'false'), и предоставляет таблицу с оценками для каждого промпта.
Версия для Claude 3: Ноутбук claude-prompt-engineer разработан для работы с моделью Anthropic Claude 3 Opus. Он автоматически генерирует тестовые случаи и позволяет использовать несколько входных переменных, что делает его еще более мощным и гибким.
Версия конвертации Claude 3 Opus -> Haiku: Разработана для сохранения качества Opus для вашего варианта использования при получении преимуществ скорости и стоимости от использования Haiku.
Логирование в Weights & Biases: Опциональное логирование в Weights & Biases ваших конфигураций (например, температуры и максимального количества токенов), системных и пользовательских промптов для каждой части, используемых тестовых случаев и итогового ранжированного рейтинга ELO для каждого кандидата-промпта. Установите use_wandb в True, чтобы использовать.
Portkey: Опциональный инструмент для логирования и отслеживания всех цепочек промптов и их ответов. Установите use_portkey в True, чтобы использовать.
Откройте ноутбук в Google Colab или в локальном Jupyter ноутбуке. Для классификации используйте этот.. Для версии Claude 3 используйте этот.
Добавьте свой API-ключ OpenAI в строку openai.api_key = "ADD YOUR KEY HERE". Если вы используете версию для Claude 3, добавьте свой API-ключ Anthropic в строку ANTHROPIC_API_KEY = "ADD YOUR KEY HERE".
description = "Given a prompt, generate a landing page headline." # this style of description tends to work well
test_cases = [
{
'prompt': 'Promoting an innovative new fitness app, Smartly',
},
{
'prompt': 'Why a vegan diet is beneficial for your health',
},
{
'prompt': 'Introducing a new online course on digital marketing',
},
{
'prompt': 'Launching a new line of eco-friendly clothing',
},
{
'prompt': 'Promoting a new travel blog focusing on budget travel',
},
{
'prompt': 'Advertising a new software for efficient project management',
},
{
'prompt': 'Introducing a new book on mastering Python programming',
},
{
'prompt': 'Promoting a new online platform for learning languages',
},
{
'prompt': 'Advertising a new service for personalized meal plans',
},
{
'prompt': 'Launching a new app for mental health and mindfulness',
}
]
Для версии классификации ваши тестовые случаи должны быть в формате:
test_cases = [
{
'prompt': 'I had a great day!',
'output': 'true'
},
{
'prompt': 'I am feeling gloomy.',
'output': 'false'
},
// add more test cases here
]
Для версии Claude 3 вы можете определить входные переменные в дополнение к описанию варианта использования:
description = "Given a prompt, generate a personalized email response."
input_variables = [
{"variable": "SENDER_NAME", "description": "The name of the person who sent the email."},
{"variable": "RECIPIENT_NAME", "description": "The name of the person receiving the email."},
{"variable": "TOPIC", "description": "The main topic or subject of the email. One to two sentences."}
]
Тестовые случаи будут автоматически сгенерированы на основе описания варианта использования и входных переменных.
Выберите количество генерируемых промптов. Имейте в виду, что генерация большого количества промптов может быть дорогой. 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 будут напечатаны в таблице, отсортированной по убыванию. Чем выше рейтинг, тем лучше промпт.
Для версии классификации оценки для каждого промпта будут напечатаны в таблице (см. изображение выше).
Этот проект лицензирован на условиях MIT.
Matt Shumer - @mattshumer_
Ссылка на проект: https://github.com/mshumer/gpt-prompt-engineer)
Наконец, если вы хотите попробовать что-то еще более крутое, чем это, зарегистрируйтесь в HyperWrite Personal Assistant (я трачу на это большую часть своего времени). Это по сути ИИ с доступом к информации в реальном времени, который а) невероятно хорошо пишет естественным языком и б) может управлять вашим веб-браузером для выполнения задач за вас.
Загляните на ShumerPrompt, мой "Github для промптов"!