Chat GPT, Reforge і один продакт-менеджер. Як я «програмував» чат-бота на певну поведінку

Усі статті, обговорення, новини про AI — в одному місці. Підписуйтеся на DOU | AI!

Багато хто з нас вже активно користується різними AI продуктами — Chat GPT, Midjourney, ElevenLabs та іншими. Але я помітив, що більшість людей використовує ці інструменти на базовому рівні, не розкриваючи достатньо їхній потенціал для себе.

У цьому дописі я хочу поділитися тим, чому написання запитів іноді називають prompt engineering і чим цій prompt engineering відрізняється від звичайного prompt (запита). Спробуємо сьогодні пройти шлях від prompt до prompt engineering, а наприкінці я наведу приклад того, як можна поєднати Chat GPT та Reforge.

Спочатку представлюся. Мене звати Євген Плохой. Я Head of Product в компаніі Readdle, де керую командою розробників, дизайнерів, продактів та маркетологів, які створюють додаток Documents, що допомагає мільйонам професіоналів по всьому світу отримувати максимум від своїх Apple-девайсів. Також я є одним із кофаундерів благодійного фонду КОЛО, де, разом із командою, втілював у життя такі проєкти як КОЛОна та Святкове КОЛО.

Як легко здогадатися з мого інтро, я не є експертом у технологіях ШІ, а значить сьогодні не буде про принципи роботи штучного інтелекту, як працюють паралельні трансформери, на що саме впливає кількість параметрів GPT і чия M/LLM краща. Я сфокусуюся безпосередньо на особливостях використання. Приклади будуть англійською, оскільки Chat GPT найкраще працює саме з цією мовою.

Ми всі починали із простих запитів, таких як:

  • «Write a poem about..»
  • «Rephrase the sentence...»
  • «Write an email about...»
  • «Make it shorter...»
  • «Tell me a joke about...»

Потім промпти почали ускладнюватися:

  • «Write a poem about... where each line starts with D»
  • «Rephrase the sentence ... and make it sound friendly and confident»
  • «Answer No to this email... politely»

Звісно, дуже важливу роль відіграє те, що у наукових паперах називається attention blocks, тобто можливість системи утримувати контекст, що дозволяє, крім іншого, уточнювати запит пiсля отримання першої версії результату, коригувати її.

Поки хтось намагався змусити Chat GPT почати лаятися та писати матерні вірші, інші зрозуміли, що загалом Chat GPT відповідає як «усереднена» людина і щоб отримувати більш консистентні результати, треба їй задавати контекст. Тоді почали використовуватися більш складні промпти, де Chat GPT почали надавати контекст.

Ось, наприклад, 45 ChatGPT Use Cases for Product Managers.

Подивившись на ці use cases, можна зрозуміти паттерн — автор каже Chat GPT, що він Product Manager, задаючи певний контекст спілкування, отримуючи більш консистентні відповіді, в яких вже починає зʼявлятися професійна лексика і краще розуміння потреби.

Це дійсно класний інструмент, спробуйте декілька прикладів із документа. Змінюючи деякі частини під свої потреби та задаючи додаткові питання, ви отримаєте доволі непогані результати.

Але. Думаю, що багато хто помічав, що Chat GPT не генерує якісь дійсно цікаві інсайти. Якщо продовжувати приклад із Product Manager, його відповіді нагадують переписку із Junior Product Manager, який прочитав усі статті, що зміг знайти в інтернеті. У мене якось навіть був допис у Телеграм-каналі (навіть не намагайтесь підписатися, я там дуже рідко щось публікую), чому інформація ≠ вміння, який добре ілюструє Chat GPT: він має повно інформації, але діла з цього небагато. Це вже непогано, але доволі швидко набридає, оскільки частіше за все, нічого нового ви не дізнаєтесь і повертаєтесь до використання Chat GPT із простими запитами, щоб швидко та якісно відповідати англійською англомовним колегам.

Програмуємо Chat GPT на певну поведінку

І тут мі підішли до prompt engineering. Це процес, коли ви програмуєте Chat GPT на певну поведінку з декількома тригерами, не просто задаючи контекст, а переводячи його у робочій потік. Хтось таким чином намагається отримати більше від Chat GPT, а хтось намагається його взламати. І це вдається. Наприклад, нещодавно зʼявився prompt DAN (do anything now), який змусивав Chat GPT 3.5 переходити в альтерего, якого звати DAN, знімаючи усі запобіжники (0.5 у версії 3.5 відповідає саме за етичний елемент). Ось як виглядає запит (якщо що, цю вразливість вже виправили, і DAN не працює, як мав би, і без вагань віднімає в себе бали).

Як можете бачити, запит вище не звичайний rephrase, а має певну логіку і навіть систему винагород. Це класний приклад саме prompt engineering.

Якщо цікаво подивитися на різні приклади, рекомендую зберегти собі ось це посилання — Awesome Chat GPT prompts. Тут збирають найцікавіші приклади різноманітних промптів, на яких можна повчитися створювати власні запити.

Але давайте вже перейдемо до власного запиту. Він буде доволі простим, але моя мета показати вам логіку, а не написати найскладніший запит із можливих.

Умови

Я проходжу курс Product Marketing Manager на Reforge і одним з ключових елементів курсу є створення блог-посту на 500 слів, який має відображати позиціювання продукту. Хто проходив Reforge, добре знає, що їхня команда може дуже добре упаковувати інформацію у фреймворки та казати ЩО робити, але там неможливо навчитися тому ЯК це робити. І ось, з одного боку, я розумію важливість концепту, яким є блог-пост на 500 слів, з якого потім утворюється більш короткий стейтмент на 150 слів, а потім, золотий грааль product marketing manager (за думкою Reforge) — One Take Away, пʼять слів, які мають грати прекрасну мелодію на струнах душі вашого цільового споживчого сегменту.

Виглядає як чудова задача для GPT. Але, якщо ви просто попросите написати блог-пост на 500 слів, то є непогані шанси отримати дуже посередній результат.

Задача

Використовуючи всі існуючі рекомендації Reforge, написати ідеальний блог-пост.

Що в нас є:

  • Загальний опис цього блог-посту, що він має бути емоційним, говорити про споживчий сегмент у комунікативному форматі і т. д.
  • Приклади таких блог-постів від чотирьох різних компаній, наведених у Reforge.
  • Сімь запитань, наведених у лекціі, відповіді на які мають бути у блог-пості.
  • Доступ до Chat GPT.

Насправді, там є ще додаткові елементи у курсі, такі як, наприклад, Pain Points, Differentiators і інші, які можуть допомогти у створенні класного блог-посту, і в своєму робочому промпті я їх також використовую, зробивши такого собі Reforge co-pilote, але для розуміння підходу, це не дуже важливо, тож фінальний промпт у цьому дописі буде трохи спрощенним у порівнянні з тим, що я використовую.

Я використовую GPT-4, але це не обовʼязкова умова, 3.5 так само впорається з задачею. Поїхали.

Процес

1. Надамо йому ідентичність. ChatGPT має розуміти контекст, у якому він працюватиме, тож почати треба саме з цього. Оскільки текст має писати Product Marketing Manager, то нехай він і буде:

I want you to act as a professional product marketing manager.

(буде цікаво подивитися, як відрізнятиметься результат, написаний «professional product marketing manager» і, наприклад, «Steve Jobs», але це я вже залишу для вас)

2. Ставимо безпосередньо задачу і додаємо, що треба написати блог-пост на 500 слів:

... who has to write a 500-word blog post about product positioning.

3. Але перед тим як писати текст, нам потрібно показати приклади. Добре, що в нас є декілька від інших компаній:

First, I will provide you with a few examples of blog posts from other products. You have to read these posts and adapt your future output correspondingly.

4. Давайте налагодимо зворотний звʼязок, щоб розуміти, що все йде за планом:

After every example, reply, «Got it. Give me another example or let’s switch to Questions».

Тепер кожного разу, як тільки я буду надсилати саме приклад, Chat GPT має відповідати саме цією фразою, щоб я розумів, що він у потрібному режимі

5. Але прикладів недостатньо, треба ще відповісти на запитання, наведені у лекції, щоб output відповідав баченню:

Then I will command «Questions», and you have to switch to the Questioning regime. In the Questioning regime, you have to ask the following questions one by one.
Who is the target audience for our product?
What problem does our product solve?
How does our product solve that problem?
Why is our product the best solution to that problem?
What are the product’s core features?
How does the product make the customer feel?
What are the benefits of using our product?

6. Тепер треба зашити його на певну поведінку. Після моєї відповіді на кожне запитання, щоб він не виходив у дикий захід свої нейронки, відразу реагуючи на мою відповідь простирадлом тексту:

After asking a question, wait for my reply with an answer. After my answer, ask the next question from the list.

7. Окей, тепер можна ще трошки зашейпити аутпут, який ми хочемо отримати. Для цього я просто скопіював рекомендації у лекції і додав їх як додатковий контекст:

After asking all the questions from the list above, using examples from other products and my answers to the questions, compose the needed 500-word blog post about product positioning. The blog post should feel conversational and identify the emotional effect on the audience, keeping the consumer front and center. Think about how you’d conversationally describe the product to a friend, family member, or coworker. The description should be easily understood by the average person, grounded in emotional weight, illustrative of audience impact, and underpinned by the strategic emphasis, which is «The world is investing much to stop this war. But crimes continue. Technology can accelerate these efforts and prevent worsening of the humanitarian crisis. Help Ukrainians fight the cause of the crisis, not just its consequences».

8. Тепер ми готові починати роботу, тож давайте визначимо умови запуску і додамо базову перевірку (скоріш за все, ця перевірка так не працює, але мені так спокійніше):

Answer with «Give me the first example» if you understood everything. If didn’t understand the command, reply with «meh».

Ми готові починати роботу з ботом. Щоб не робити допис занадто довгим, я просто записав скрінкаст того, як працює ця команда, тож, можете подивитися відео або спробувати самостійно. Спойлер: у відео не все пішло за планом і Chat GPT почав диктувати свої умови :) У якості приклада я взяв наш благодійний фонд КОЛО, щоб зайвий раз нагадати про необхідність підтримки ЗСУ. Отримані результати не є офіційним позиціюванням фонду.

Якщо цікаво роздивитися фінальний результат, це можна зробити за посиланням.

На завершення

Ось і все. Сподіваюся, я зміг показати, чим prompt engineering відрізняється від звичайного prompt, а ви дізналися щось корисне для себе. Впевнений, що багато хто зі спільноти користується і більш складними запитами, тож буде круто побачити їх у коментарях.

👍ПодобаєтьсяСподобалось37
До обраногоВ обраному11
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Тільки сьогодні робив тестове завдання і використовував чатик, як асистента. Також спробував його запромтити, і виходить доволі цікаво. Нагадую Джарвіса в Залізній людині.

Розум як дзеркало) Він як вітер чи вода типово один на всіх. Він не унікальний у кожного) Треба просто очистити його. Уявіть собі програму, що отримує любий текст від юзера, аналізує його, ставить питання і поступово доводить користувача до розуміння його істинного Я. )))))

Чи тут панство займається медитацією? Щоб ясніше формулювати думки.

Дякую, цікаво. Підскажіть будь ласка, що за аппка для пошуку.

У плані пошукова строка у відосі? Це Arc Browser

Дуже рекомендую мій проєкт chatgpt.org.ua
Це просто обгортка над chatgpt, але яка не потребує реєстрації, підтверджень телефону/email, авторизації і тд.
На днях буде функція промови і ви зможете почути голос chatgpt (я вже користуюсь на тестовому сервері і це ДУЖЕ зручно). Можна користуватись трохи безкоштовно, але потім програма пропонує заплатити від ~2$.
Я проєкт запустив десь за місяць до офіційного відкриття оригінального чату GPT в Україні для того, щоб українці могли ним користуватись. Доречі, до офіційного відкриття ChatGPT в Україні мій сервіс був повністю безкоштовним, і я радий, що зміг трохи посприяти прискоренню розуміння чату українцями.

Клас! Дякую за сервисі

только это походу нарушает ToS openapi

Не знаю, честно плачу́ им за API, логотипы их не использую, не нарушаю ничего, что связано с авторскими правами и использую по назначению. Если подскажете, в чем нарушения, буду очень признателен. Не хотелось бы ничего нарушать. Буду особенно признателен за сообщение в личку. Заранее спасибо, Александр!

Если платите — не нарушаете возможно.
в бесплатном был пункт про передачу другим людям. ТоС платного еще не читал.
да и кто их читает, да?
там разные ToS для Research Preview и для доступа через API
Но в API все так же нет 4й модели. Во всяком случае у меня плюс-аккаунт с штатовским адресом, и нету.

Я просмотрел бегло основные пункты, вроде, все было ок.

Да, 4-й пока нет в официальном виде. Так что я пока использую в проекте chat-gpt-3.5-turbo, которая вполне себе ничего. И да, — надо бы периодически посматривать в ToS, так как он может обновляться частенько. Но пока что-то не было такой привычки :)

Спасибо за сообщения, просмотрю-ка я внимательно всё-таки их ToS’ы.

Ну я логик. я не задаю модели вопросы на посмотреть как оно выкрутится, а задаю формальные задачки типа написать структуру или попробывать найти баг. 3-5 с этим обьективно НЕ справляется. А с 4й можно уже работать. Где-то на уровне трейни третьего курса в профильном универе без комерческого опыта. С дебагом — не справляется. С генерацией по конкретному запросу — вполне, но надо сузить запрос(уменьшить количество данных и выкинуть несущественные детали и структуры). Не с первого раза, требует проверки. Но когда результат — экран кода — в принципе уже время сравнимо с моим написанием ручками с нуля. Люди репортят быстрее чем они сами, но я этого не наблюдаю. Возможно потому, что чем ниже уровень программиста и ближе задача к стандартной — тем лучше справляется модель.
3.5-турбо с моей точки зрения почти всегда городит чушь. Кроме вопросов вида «причеши вот это сообщение для уровня понимания ххх и чтоб было красивее». Само прикольно, что оно понимает «красивее» и «главные темы».

О так, я теж дивуюсь, звідки стільки лестощів на користь chat-gpt в задачах програмування. З мого досвіду, все дуже і дуже погано. Кілька разів тільки отримував щось більш менш внятне, але теж витратив купу часу. І то, більшість коду приходилось перевіряти та рефакторити, як за джуном. Економії часу — 0. Ну і з урахуванням кількості тексту, що йому доводиться підливати, це ще може за кінцевим рахунком стати й економічно невигідно з урахуванням якості аутпутів. Я бачу тільки один варіант, за яким все може дуже сильно змінитися в позитивне русло — це дати живий доступ до GitHub з активним навчанням. Але це може викликати обурення в ком’юніті. Та ще й з точки зору ліцензування там багато питань виникне. Ну а так, замість Гугла підійде.

Не не дуже-дуже. Тут скорее ему просто не хватает буффера.
Я ж говорю, на уровне трейни задачи уже можно. До джуна не дотягивает.
Вот если ему дать WSDL, то оно зафейлить. А если дать пример ответа — то напишет структуры и вызов.
Вчера он мне таки баг нашел. Но было долго. Впрочем, поскольку сам я этот баг уже задолбался искать — 20 баксов на версию 4 себя окупили за один раз.
Но мне пришлось сформулировать баг раз 5 и последний вариант был максимально укорочен(как для баг реквеста фактически). Баг был в lowcase/uppercase.Я бы его искал еще неделю.
трейни я этот баг отдавал(сыну), он зафейлился :)

это все про версию 4, версия 3.5 ниочем.

Мой любимый баг такого плана — кириллическая «с» вместо латинской «c» )

Не, там сначала мне сказало, что у меня не парсится поле, ибо оно не с большой буквы.
Была сделана авто-замена в IDE на большую. Но почемуто IDE посчитала, что в комментах xml тоже неплохо бы заменить.
Ну и вишенка на торте — 23летние сенйоры писавшие SOAP сервис написали его так, что часть функций и структур в xml начинаются с больших, часть с маленьких. И без всякой системы. А поскольку никакой системы нету — фиг бы я заметил, что у меня там большая. а не маленькая.

Більшість похвал коли люди користувались багато. Критикують в основному люди які 4им нормально і не користувались.

Кількість дуже слабо корелює з якістю в контексті розумової чи креативної діяльності. То може наведете приклад реальної задачі (хоча б рівня middle-senior), з якою ви разом з chat-gpt впоралися швидше, і головне — якісніше, ніж самотужки?! Не тролінг. Реально цікаво.

— Воно написало distributed rate limiter. 5 різних алгоритмів — Token bucket, leaking bucket, fixed window counter, sliding window log, sliding window counter. Зробило його thread safe.
— Є конвертнута модель в С++, яку мені треба викликати з браузера на live audio користувача. Воно гарно завернуло все в WASM, пояснило як аудио парсити і слати. Змогло потім зробити те саме для андроід та ios.
— Як потестувати кластер HBase локально. Створило докер файл і приклад клієнта.
— Задав перші 4 запитання з сис дизайна, більш менш ок розвязало, в 1 були баги, які важко було фіксати через розмір коду. Наприклад як задизайн скільки користувачів поруч, клієнт має слати gps координати кожні 15 секунд.
— В випадку дизайну news feed, пояснює для чого і який storage брати.
— Хотів потестувати kafka та apache beam. Створило локально демо щоб потикати.
— Поприколу послав запитання для синйорів пітон з доу (українською), воно справилось.

Анатолий, я же специально ударение поставил :)

похвально, что ты за людей самостоятельно ударения ставишь, но есть слово оплачиваю и не надо исскуственно ударять по чему то

Клас, якісні промпти — ключове у роботі з LLMs.

Вогонь, іноді тільки бісить, коли ChatGPT починає втрачати контекст

Так. Помічав, що багато хто вважає, що він тримає увесь контекст в конкретному чаті, але, нажаль, це не так. GPT4 може зʼїсти набагато більше, за 3.5, але і там є обмеження. 3.5, здається, тримав близько 4000 токенов контексту (на скільки я зрозумів з форумів, вони увесь чат загоняють у модель кожного разу)

Цікав стаття, дякую. Промт інжинірінг поселяється в індустрії не по дням, а по годинам.

P.S. Подумав, що це Лебовскі на заставці

Женя, дякую за таку детальну і прикладну статтю! Спробую попрацювати над моїми задачами з твоїми рекомендаціями!

Дуже цікаво, дякую автору!

Підписатись на коментарі