newsmode
search
Меню
arrow_back Назад

Iterative Prompt Development – Hamel’s Blog - Hamel Husain

auto_awesomeКраткое саммари

Заметка Hamel Husain демонстрирует итеративный подход к разработке промптов на примере генерации маркетингового описания офисного кресла на основе технического фактологического листа. Автор показывает базовую настройку с OpenAI API и моделью gpt-3.5-turbo, а затем последовательно решает три типичные проблемы. Сначала текст оказывается слишком длинным — решение в добавлении ограничения «не более 50 слов». Затем описание фокусируется не на тех деталях — нужно явно указать целевую аудиторию (мебельные ритейлеры) и попросить акцент на материалах. Наконец, добавляется требование вывести таблицу с размерами в дюймах и оформить всё как HTML с тегом <div>. Подход иллюстрирует, что качественный промпт получается через последовательное уточнение требований, а не с первой попытки.

Подготовка

import openai import os from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # читаем локальный .env файл openai.api_key = os.getenv('OPENAI_API_KEY')

def get_completion(prompt, model="gpt-3.5-turbo"): messages = [{"role": "user", "content": prompt}] response = openai.ChatCompletion.create( model=model, messages=messages, temperature=0, # степень случайности вывода модели ) return response.choices[0].message["content"]

Генерация маркетингового описания товара на основе технического фактологического листа

fact_sheet_chair = """ ОБЗОР - Часть красивой коллекции офисной мебели в стиле mid-century, включая картотечные шкафы, столы, книжные шкафы, столы для переговоров и многое другое. - Несколько вариантов цвета корпуса и отделки основания. - Доступно с пластиковой спинкой и обивкой спереди (SWC-100) или с полной обивкой (SWC-110) — 10 вариантов ткани и 6 вариантов кожи. - Варианты отделки основания: нержавеющая сталь, матовый чёрный, глянцевый белый или хром. - Кресло доступно с подлокотниками и без. - Подходит для дома и офиса. - Сертифицировано для коммерческого использования. КОНСТРУКЦИЯ - 5-колёсное алюминиевое основание с пластиковым покрытием. - Пневматический механизм регулировки кресла для лёгкого подъёма/опускания. РАЗМЕРЫ - ШИРИНА 53 СМ | 20.87" - ГЛУБИНА 51 СМ | 20.08" - ВЫСОТА 80 СМ | 31.50" - ВЫСОТА СИДЕНЬЯ 44 СМ | 17.32" - ГЛУБИНА СИДЕНЬЯ 41 СМ | 16.14" ОПЦИИ - Варианты роликов для мягкого или твёрдого пола. - Два варианта плотности пены сиденья: средняя (1.8 lb/ft3) или высокая (2.8 lb/ft3) - Без подлокотников или 8-позиционные PU-подлокотники МАТЕРИАЛЫ КОРПУС, ОСНОВАНИЕ, ПОЛЗУНОК - Литой алюминий с модифицированным нейлоновым покрытием PA6/PA66. - Толщина корпуса: 10 мм. СИДЕНЬЕ - Пена HD36 СТРАНА ПРОИСХОЖДЕНИЯ - Италия """

prompt = f""" Твоя задача — помочь маркетинговой команде создать описание для сайта розничной торговли на основе технического фактологического листа. Напиши описание продукта на основе информации, предоставленной в технических спецификациях, отделённых тройными обратными кавычками. Технические спецификации: ```{fact_sheet_chair}``` """ response = get_completion(prompt) print(response)

Проблема 1: Текст слишком длинный

Ограничьте количество слов/предложений/символов.

prompt = f""" Твоя задача — помочь маркетинговой команде создать описание для сайта розничной торговли на основе технического фактологического листа. Напиши описание продукта на основе информации, предоставленной в технических спецификациях, отделённых тройными обратными кавычками. Используй не более 50 слов. Технические спецификации: ```{fact_sheet_chair}``` """ response = get_completion(prompt) print(response)

len(response)

Проблема 2. Текст фокусируется не на тех деталях

Попросите модель сосредоточиться на аспектах, релевантных для целевой аудитории.

prompt = f""" Твоя задача — помочь маркетинговой команде создать описание для сайта розничной торговли на основе технического фактологического листа. Напиши описание продукта на основе информации, предоставленной в технических спецификациях, отделённых тройными обратными кавычками. Описание предназначено для розничных продавцов мебели, поэтому оно должно быть техническим по характеру и фокусироваться на материалах, из которых сделан продукт. Используй не более 50 слов. Технические спецификации: ```{fact_sheet_chair}``` """ response = get_completion(prompt) print(response)

prompt = f""" Твоя задача — помочь маркетинговой команде создать описание для сайта розничной торговли на основе технического фактологического листа. Напиши описание продукта на основе информации, предоставленной в технических спецификациях, отделённых тройными обратными кавычками. Описание предназначено для розничных продавцов мебели, поэтому оно должно быть техническим по характеру и фокусироваться на материалах, из которых сделан продукт. В конце описания включи каждый 7-символьный Product ID из технической спецификации. Используй не более 50 слов. Технические спецификации: ```{fact_sheet_chair}``` """ response = get_completion(prompt) print(response)

Проблема 3. Описанию нужна таблица размеров

Попросите модель извлечь информацию и оформить её в виде таблицы.

prompt = f""" Твоя задача — помочь маркетинговой команде создать описание для сайта розничной торговли на основе технического фактологического листа. Напиши описание продукта на основе информации, предоставленной в технических спецификациях, отделённых тройными обратными кавычками. Описание предназначено для розничных продавцов мебели, поэтому оно должно быть техническим по характеру и фокусироваться на материалах, из которых сделан продукт. В конце описания включи каждый 7-символьный Product ID из технической спецификации. После описания добавь таблицу с размерами продукта. Таблица должна иметь два столбца. В первом столбце укажи название размера. Во втором столбце укажи измерения только в дюймах. Назови таблицу 'Product Dimensions'. Оформи всё как HTML, который можно использовать на сайте. Помести описание в элемент

. Технические спецификации: ```{fact_sheet_chair}``` """ response = get_completion(prompt) print(response)

Загрузка Python-библиотек для просмотра HTML

from IPython.display import display, HTML

display(HTML(response))

Попробуйте поэкспериментировать самостоятельно!