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>. Подход иллюстрирует, что качественный промпт получается через последовательное уточнение требований, а не с первой попытки.

Setup

Подготовка

import openai import os from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # read local .env file openai.api_key = os.getenv('OPENAI_API_KEY')

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, # this is the degree of randomness of the model's output ) return response.choices[0].message["content"]

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"]

Generate a marketing product description from a product fact sheet

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

fact_sheet_chair = """ OVERVIEW - Part of a beautiful family of mid-century inspired office furniture, including filing cabinets, desks, bookcases, meeting tables, and more. - Several options of shell color and base finishes. - Available with plastic back and front upholstery (SWC-100) or full upholstery (SWC-110) in 10 fabric and 6 leather options. - Base finish options are: stainless steel, matte black, gloss white, or chrome. - Chair is available with or without armrests. - Suitable for home or business settings. - Qualified for contract use. CONSTRUCTION - 5-wheel plastic coated aluminum base. - Pneumatic chair adjust for easy raise/lower action. DIMENSIONS - WIDTH 53 CM | 20.87” - DEPTH 51 CM | 20.08” - HEIGHT 80 CM | 31.50” - SEAT HEIGHT 44 CM | 17.32” - SEAT DEPTH 41 CM | 16.14” OPTIONS - Soft or hard-floor caster options. - Two choices of seat foam densities: medium (1.8 lb/ft3) or high (2.8 lb/ft3) - Armless or 8 position PU armrests MATERIALS SHELL BASE GLIDER - Cast Aluminum with modified nylon PA6/PA66 coating. - Shell thickness: 10 mm. SEAT - HD36 foam COUNTRY OF ORIGIN - Italy """

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""" Your task is to help a marketing team create a description for a retail website of a product based on a technical fact sheet. Write a product description based on the information provided in the technical specifications delimited by triple backticks. Technical specifications: ```{fact_sheet_chair}``` """ response = get_completion(prompt) print(response)

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

Issue 1: The text is too long

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

  • Limit the number of words/sentences/characters.
  • Ограничьте количество слов/предложений/символов.

    prompt = f""" Your task is to help a marketing team create a description for a retail website of a product based on a technical fact sheet. Write a product description based on the information provided in the technical specifications delimited by triple backticks. Use at most 50 words. Technical specifications: ```{fact_sheet_chair}``` """ response = get_completion(prompt) print(response)

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

    len(response)

    len(response)

    Issue 2. Text focuses on the wrong details

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

  • Ask it to focus on the aspects that are relevant to the intended audience.
  • Попросите модель сосредоточиться на аспектах, релевантных для целевой аудитории.

    prompt = f""" Your task is to help a marketing team create a description for a retail website of a product based on a technical fact sheet. Write a product description based on the information provided in the technical specifications delimited by triple backticks. The description is intended for furniture retailers, so should be technical in nature and focus on the materials the product is constructed from. Use at most 50 words. Technical specifications: ```{fact_sheet_chair}``` """ response = get_completion(prompt) print(response)

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

    prompt = f""" Your task is to help a marketing team create a description for a retail website of a product based on a technical fact sheet. Write a product description based on the information provided in the technical specifications delimited by triple backticks. The description is intended for furniture retailers, so should be technical in nature and focus on the materials the product is constructed from. At the end of the description, include every 7-character Product ID in the technical specification. Use at most 50 words. Technical specifications: ```{fact_sheet_chair}``` """ response = get_completion(prompt) print(response)

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

    Issue 3. Description needs a table of dimensions

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

  • Ask it to extract information and organize it in a table.
  • Попросите модель извлечь информацию и оформить её в виде таблицы.

    prompt = f""" Your task is to help a marketing team create a description for a retail website of a product based on a technical fact sheet. Write a product description based on the information provided in the technical specifications delimited by triple backticks. The description is intended for furniture retailers, so should be technical in nature and focus on the materials the product is constructed from. At the end of the description, include every 7-character Product ID in the technical specification. After the description, include a table that gives the product's dimensions. The table should have two columns. In the first column include the name of the dimension. In the second column include the measurements in inches only. Give the table the title 'Product Dimensions'. Format everything as HTML that can be used in a website. Place the description in a <div> element. Technical specifications: ```{fact_sheet_chair}``` """ response = get_completion(prompt) print(response)

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

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

    Load Python libraries to view HTML

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

    from IPython.display import display, HTML

    from IPython.display import display, HTML

    display(HTML(response))

    display(HTML(response))

    Try experimenting on your own!

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