Expanding – Hamel’s Blog - Hamel Husain
Статья из курса Hamel Husain по промпт-инжинирингу посвящена технике «расширения» (Expanding) — генерации персонализированных писем службы поддержки на основе отзывов клиентов. Показан пример использования OpenAI API (модель gpt-3.5-turbo) для автоматического создания ответного письма, учитывающего тональность отзыва: при негативном — извинение и предложение обратиться в поддержку, при позитивном — благодарность. Демонстрируется, как параметр temperature влияет на вариативность генерируемого ответа, и подчёркивается важность указания модели использовать конкретные детали из отзыва клиента.
Генерация писем службы поддержки, персонализированных под отзыв каждого клиента.
Подготовка
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')
def get_completion(prompt, model="gpt-3.5-turbo",temperature=0): # Andrew mentioned that the prompt/ completion paradigm is preferable for this class messages = [{"role": "user", "content": prompt}] response = openai.ChatCompletion.create( model=model, messages=messages, temperature=temperature, # this is the degree of randomness of the model's output ) return response.choices[0].message["content"]
Настройка автоматического ответа на письмо клиента
# на основе тональности из урока «Извлечение выводов», # и исходного сообщения клиента, персонализируем письмо sentiment = "negative" # отзыв на блендер review = f""" Итак, набор из 17 предметов всё ещё продавался на сезонной \ распродаже примерно за $49 в ноябре, то есть \ примерно за полцены, но по какой-то причине (назовём это завышением цен) \ примерно на второй неделе декабря цены взлетели \ до $70–$89 за тот же \ набор. А набор из 11 предметов подорожал примерно на $10 \ по сравнению с прежней акционной ценой в $29. \ В целом выглядит нормально, но если посмотреть на основание — ту часть, \ где нож фиксируется на месте — оно выглядит не так хорошо, \ как в предыдущих моделях несколько лет назад, но я \ планирую обращаться с ним очень бережно (например, я сначала \ измельчаю твёрдые продукты вроде бобов, льда, риса и т. д. в \ блендере, затем перемалываю их до нужной порции \ в блендере, потом переключаюсь на взбивающий \ нож для более тонкого помола, а при приготовлении смузи сначала использую перекрёстный нож, \ затем плоский нож, \ если нужна более мелкая/менее волокнистая консистенция). Совет для приготовления \ смузи: мелко нарежьте и заморозьте фрукты и \ овощи (если используете шпинат — слегка потушите его, чтобы \ размягчить, затем заморозьте до использования; а если готовите \ сорбет, используйте небольшой или средний кухонный комбайн) — \ так вы сможете не добавлять столько \ льда (или вообще обойтись без него) при приготовлении смузи. \ Примерно через год мотор начал издавать странный звук. \ Я позвонил в службу поддержки, но гарантия уже \ истекла, поэтому мне пришлось купить новый. К сведению: общее \ качество таких продуктов снизилось, и \ производители, похоже, рассчитывают на узнаваемость бренда и \ лояльность потребителей для поддержания продаж. Доставили примерно \ за два дня. """
prompt = f""" Вы — ИИ-ассистент службы поддержки клиентов. Ваша задача — отправить ответное письмо ценному клиенту. На основе письма клиента, ограниченного ```, \ сгенерируйте ответ с благодарностью за отзыв. Если тональность позитивная или нейтральная, поблагодарите за \ отзыв. Если тональность негативная, извинитесь и предложите \ обратиться в службу поддержки. Обязательно используйте конкретные детали из отзыва. Пишите в лаконичном и профессиональном тоне. Подпишите письмо как `AI customer agent`. Отзыв клиента: ```{review}``` Тональность отзыва: {sentiment} """ response = get_completion(prompt) print(response)
Напомните модели использовать детали из письма клиента
prompt = f""" Вы — ИИ-ассистент службы поддержки клиентов. Ваша задача — отправить ответное письмо ценному клиенту. На основе письма клиента, ограниченного ```, \ сгенерируйте ответ с благодарностью за отзыв. Если тональность позитивная или нейтральная, поблагодарите за \ отзыв. Если тональность негативная, извинитесь и предложите \ обратиться в службу поддержки. Обязательно используйте конкретные детали из отзыва. Пишите в лаконичном и профессиональном тоне. Подпишите письмо как `AI customer agent`. Отзыв клиента: ```{review}``` Тональность отзыва: {sentiment} """ response = get_completion(prompt, temperature=0.7) print(response)