Announcing our new Paper: The Prompt Report, with Co-authors from OpenAI & Microsoft!

Check it out →
🧪 Прикладні запити🟢 Створити ChatGPT з GPT-3

🟢 Створити ChatGPT з GPT-3

Востаннє оновлено Сандер Шульхофф August 7, 2024 року

Вступ

ChatGPT набув шаленої популярності за останній місяць, отримавши мільйон користувачів лише за тиждень. Дивно, але основна модель, GPT-3, дебютувала у 2020 році та була випущена для загального доступу

понад рік тому!

Для тих, хто не знає, ChatGPT — це нова мовна модель від OpenAI, яка була доопрацьована з GPT-3 для оптимізації спілкування1. Вона має зручний інтерфейс чату, у якому ви можете вказати вхідні дані та отримати відповідь від помічника на основі ШІ. Ви можете знайти його на сайті chat.openai.com.

Хоча ранні версії GPT-3 не були такими просунутими, як поточна серія GPT-3.5, вони все одно приємно вражали. Ці моделі доступні через API та

платформи вебінтерфейсу, який дозволяє налаштовувати певні гіперпараметри конфігурації та пробні запити. GPT-3 отримав значну популярність, але він не наблизився до вірусного розповсюдження ChatGPT.

Що робить ChatGPT таким успішним у порівнянні з GPT-3, так це його доступність як безпосереднього помічника на основі ШІ для звичайної людини, незалежно від її знань у галузі даних, мовних моделей чи ШІ.

У цій статті я розглядаю, як чат-боти, такі як ChatGPT, можуть бути розроблені за допомогою великої мовної моделі, як-от GPT-3.

Мотивація

Ця стаття була написана частково завдяки твіту від

Райлі Гудсайд, у якому зазначено, як можна було б розробити ChatGPT.

Як і інші моделі серії GPT-3.5, ChatGPT було навчено за допомогою RLHF, але більша частина його ефективності залежить від використання потрібного запиту.

Запит

Повний запит чат-бота Скіппі із заголовка статті

Здійснення пошуку за запитом — це процес надання вказівок ШІ щось зробити.

Як ви, напевно, бачили в прикладах ChatGPT в Інтернеті, ви можете надати йому запит зробити будь-що. Типовими прикладами його використання є анотування тексту, написання контенту на основі опису або створення таких речей, як вірші, рецепти та багато іншого.

ChatGPT — це і мовна модель, і інтерфейс користувача. Запит, введений користувачем до інтерфейсу, фактично вставляється в більший запит, який містить увесь діалог між користувачем і ChatGPT. Це дозволяє базовій мовній моделі зрозуміти контекст розмови та відповідати належним чином.

Приклад вставки запиту користувача перед надсиланням його до моделі

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

GPT-3 здатний "навчатися" з простих вказівок або кількох прикладів у запиті. Останнє називається методом кількох прикладів, або навчанням за контекстом3. У запиті вище я створюю фіктивного чат-бота під назвою Skippy і даю йому вказівку надавати відповіді користувачам. GPT-3 підбирає зворотний формат, КОРИСТУВАЧ: {user input} і СКІППІ: {skippy response}. GPT-3 розуміє, що Скіппі — це чат-бот, а попередні обміни інформацією — це діалог, тому, коли ми надаємо вхідні дані наступного користувача, Скіппі відреагує.

Запам'ятовування

Попередні обміни інформацією між Скіппі та користувачем додаються до наступного запиту. Щоразу, коли ми надаємо більше вхідних даних користувачів і отримуємо більше результатів від чат-бота, запит розширюється, щоб включити цей новий обмін. Ось як чат-боти, такі як Skippy і ChatGPT, можуть запам'ятовувати попередні введення. Однак, існує обмеження на те, скільки чат-бот GPT-3 може запам’ятати.

Запити можуть стати об'ємними після кількох обмінів, особливо якщо ми використовуємо чат-бота для створення довгих відповідей, як-от дописів у блозі. Запити, надіслані до GPT-3, перетворюються на токени, які є окремими словами або їх частинами. Існує обмеження на

4097 токенів (приблизно 3000 слів)

для комбінованого запиту та згенерованої відповіді для моделей GPT-3, включно з ChatGPT.

Кілька прикладів

Існує багато різних випадків використання запитів чат-бота, які зберігають попередні діалоги. ChatGPT був створений для того, щоб бути універсальним загальним помічником, і, з мого досвіду, він рідко вимагає додаткових дій.

Чат-бот Therapy, який запитує, як минув ваш день

Мати чат-бота, який активно ставить запитання та отримує зворотний зв'язок від користувача, може стати в пригоді. Нижче наведено приклад запиту чат-бота Therapy, який ставитиме запитання та відповідатиме, щоб допомогти користувачеві подумати про свій день.

Запит для чат-бота Therapy

Поговоріть із молодшим собою, використовуючи старі записи в щоденнику

Мішель Хуан використовувала GPT-3, щоб поспілкуватися з молодшою собою. Запит використовує певний контекст, у цьому випадку старі записи щоденника, у поєднанні з форматом чат-бота. GPT-3 здатний імітувати людську особистість на основі цих записів.

Запит із твіту:

Нижче наведено розмову з дорослою Мішель (вік [redacted]) і юною Мішель (14 років).

Юна Мішель вносила такі записи в щоденнику:
[записи в щоденнику тут]

Доросла Мішель: [введіть тут свої запитання]

Автор зазначає, що записи в щоденнику можуть досягати обмеження токенів. У цьому випадку ви можете вибрати кілька записів або спробувати коротко узагальнити декілька записів.

Імплементація

Я розповім про кодування простого чат-бота на базі GPT-3 мовою Python. Включити GPT-3 у програму, яку ви створюєте, неймовірно легко за допомогою OpenAI API. Вам потрібно буде створити обліковий запис на OpenAI та отримати ключ API. Перегляньте їхні документи

тут.

Огляд того, що нам потрібно зробити:

  1. Відформатуйте введені користувачем вхідні дані в запит чат-бота для GPT-3
  2. Отримайте відповідь чат-бота як завершення GPT-3
  3. Оновіть запит як введенням даних користувача, так і відповіддю чат-бота
  4. Цикл

Ось запит, який я використаю. Ми можемо використовувати мову Python для заміни

<conversation history>

і

<user input>

для їхніх фактичних значень.

chatbot_prompt = """
    Як для просунутого чат-бота, ваша головна мета — якнайкраще допомагати користувачам. Це може охоплювати відповіді на запитання, надання корисної інформації або виконання завдань на основі вхідних даних користувача. Щоб ефективно допомагати користувачам, важливо бути детальними та ґрунтовними у своїх відповідях. Використовуйте приклади та докази, щоб підтвердити свої думки та обґрунтувати свої рекомендації чи рішення.


<conversation history>

    User:
<user input>
    Chatbot:"""

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

import openai

openai.api_key = "YOUR API KEY HERE"
model_engine = "text-davinci-003"
chatbot_prompt = """
Як для просунутого чат-бота, ваша головна мета — якнайкраще допомагати користувачам. Це може охоплювати відповіді на запитання, надання корисної інформації або виконання завдань на основі вхідних даних користувача. Щоб ефективно допомагати користувачам, важливо бути детальними та ґрунтовними у своїх відповідях. Використовуйте приклади та докази, щоб підтвердити свої думки та обґрунтувати свої рекомендації чи рішення.

<conversation history>

User:
<user input>
Chatbot:"""


def get_response(conversation_history, user_input):
    prompt = chatbot_prompt.replace("<conversation history>", conversation_history).replace("<user input>", user_input)

    # Get the response from GPT-3
    response = openai.Completion.create(
        engine=model_engine, prompt=prompt, max_tokens=2048, n=1, stop=None, temperature=0.5)

    # Extract the response from the response object
    response_text = response["choices"][0]["text"]

    chatbot_response = response_text.strip()

    return chatbot_response


def main():
    conversation_history = ""

    while True:
        user_input = input(">")
        if user_input == "exit":
            break
        chatbot_response = get_response(conversation_history, user_input)
        print(f"Chatbot: {chatbot_response}")
        conversation_history += f"User: {user_input}\nChatbot: {chatbot_response}\n"

main()

Ось посилання

на повний код простого чат-бота.

Тепер усе, що залишилося, це створити гарний інтерфейс, із яким користувачі зможуть взаємодіяти!

Автор: jayo78.

Footnotes

  1. OpenAI. (2022). ChatGPT: Optimizing Language Models for Dialogue. https://openai.com/blog/chatgpt/. https://openai.com/blog/chatgpt/

  2. Jurafsky, D., & Martin, J. H. (2009). Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics and Speech Recognition. Prentice Hall.

  3. Brown, T. B., Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P., Neelakantan, A., Shyam, P., Sastry, G., Askell, A., Agarwal, S., Herbert-Voss, A., Krueger, G., Henighan, T., Child, R., Ramesh, A., Ziegler, D. M., Wu, J., Winter, C., … Amodei, D. (2020). Language Models are Few-Shot Learners.

Word count: 0

Get AI Certified by Learn Prompting


Copyright © 2024 Learn Prompting.