Статья Обзор и Оценка GPT-3

Введение:
Недавно OpenAI открыла доступ к GPT-3: достаточно зарегистрироваться, получить API-ключ и начать изучать генерацию.
GPT-3 является алгоритмом обработки естественного языка, это так-же самая большая модель в мире.

План статьи:
1. Регистрация
2. Принцип работы GPT-3.
3. Рассматриваем пример и создаем свой.
4. Создадим свое приложение на python и сделаем вывод.

Регистрация:
К сожалению, регистрация недоступна на территории России, но мы можем это обойти. Подключаемся через VPN, переходим по ссылке OpenAI API. Используем Google аккаунт, после чего нас попросят подтвердить номер. Чтобы не делать этого можно скачать программу TempNumber и получить сообщение на один из его номеров. После регистрации у нас появится ключ, который можно скопировать на OpenAI API. Сервис в дальнейшем можно использовать без VPN.

Принцип работы GPT-3:
Важно понять, что GPT-3 не пишет текст, она его генерирует, это важное замечание. При написании текста, человек его осознает и обдумывает, в отличии от GPT-3, которая генерирует текст на основе определенного алгоритма, не понимая смысла. Главная задача GPT-3 - понимать текст.

Рассмотрим мысленный эксперимент "Китайская комната", который проводит аналогию с GPT-3:
В некой комнате есть человек, не понимающий китайских иероглифов. У него есть книга с инструкцией по использованию иероглифов, однако не сказано о их значении. Представим, что другой человек, знающий китайский, задаёт вопрос, составленный из иероглифов. Человек в комнате, согласно инструкции, составляет ответ и отдаёт человеку за стеной. Человек за стеной получит осмысленный, здравый ответ, как-будто он общался с человеком, знающим китайский, хотя это не так. Человек в комнате (GPT-3) не понимает ни единого иероглифа (слова), но использует заранее составленную книгу (алгоритм) для ответа.

Такая генерация конечно иногда приводит к ошибкам, которые можно легко выявить, если правильно составить запрос.

Например, зайдем на OpenAI API. В Load a Preset загрузим Chat.

картинка2.png


В графе Human зададим обычный вопрос:
Вопрос: Human: Who created you?
Ответ: Elon Musk and Sam Altman.

Все вроде бы отлично, но давайте зададим вопрос про что-то более точное:
Вопрос: How many rubles is one dollar?
Ответ: 25

Ответ, конечно, неверный (хотя, это в каком году посмотреть), но он полностью подходит как ответ на вопрос, не ломая логику.
Можно загрузить пресет Q and A и задать такой вопрос:
Вопрос: How many people are living in Belarus?
И получить честный ответ:
Ответ: Unknown

GPT-3 Обучена на множестве параметров. Чем больше параметров - тем лучше результат. По аналогии с инструкцией в китайской комнате, чем больше вариантов манипуляции с иероглифами в ней рассмотрено, тем точнее человек в комнате может составлять ответы.

Мы рассмотрели генерацию, но как GPT-3 обрабатывает сам текст на входе?
Не словами.
Вместо иероглифов, GPT-3 использует так называемые "Токены". Согласно документации, 1 токен равен примерно 4 символам. Именно их обрабатывает GPT-3, разбивая входной текст. После обработки, согласно алгоритму, на основе изученных параметров GPT-3 создает текст на выход.

Рассматриваем пример и создаем свой:
OpenAI подготовила для нас примеры, которые можно посмотреть на OpenAI API. По сути, всем, чем отличаются эти примеры от пустого PlayGround, так это заданным форматом входных и выходных данных, к примеру Chat:
The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.

Human: Hello, who are you?
AI: I am an AI created by OpenAI. How can I help you today?
Human: I'd like to cancel my subscription.

Уже загруженный здесь текст представляет собой инструкцию с примерами выполнения, который GPT-3 в дальнейшем использует.
Таким образом можно создать свой собственный пример, к примеру, пусть GPT-3 решает по действиям такой вид задач:
Человек имел Y объектов, после чего получил еще Z объектов от другого человека, сколько объектов стало у первого человека?

Создадим примеры:
Вопрос: Karen had 5 apples, then Martin gave her 2 more. How many apples Karen has?
Ответ: 1) 5+2=7

Вопрос: Dmitry had 10 bananas, then Anna gave him 9 more, and after that Mike also gave him 5 more.
Ответ:
1) 10+9=19
2) 19+5=24

И описание задачи бота: I am bot that can solve math problems, write me a problem and I will generate an answer.

Выбираем Q and A, удаляем весь текст и вставляем наше описание + задачи:
I am bot that can solve math problems, write me a problem and I will generate an Answer.
If I am not able to solve the problem, I will response with "Not able to solve"

Вопрос: Karen had 5 apples, then Martin gave her 2 more. How many apples Karen has?
Ответ: 1) 5+2=7
Вопрос: Dmitry had 10 bananas, then Anna gave him 9 more, and after that Mike also gave him 5 more. How many apples Dmitry has?
Ответ:
1) 10+9=19
2) 19+5=24

Попробуем дать такую задачу:
Вопрос: Vasily had 20 apples, Marine gave him 5 more. How many apples Vasily has?
Ответ:
1) 20+5=25
К сожалению бот может решать только такой тип задач и только на английском (Модель на русском гораздо слабее)

Создание приложения на python:
Мы увидели как работает GPT-3 и на что она способна, теперь можем написать свое первое приложение.
Перед началом работы нам понадобится установить модуль openai:
Bash:
pip3 install openai

Теперь, код. Мы возьмем один из примеров OpenAI за основу. К счастью, у них уже есть часть готового кода:
Python:
import openai #Импорт нужного модуля
openai.api_key = "КЛЮЧ" #Определение API ключа

API OpenAI отдает нам запрос в виде JSON, подключим так-же и эту библиотеку:
Python:
import json #Импорт нужного модуля

Скопируем готовый код для запроса с сайта OpenAI.
Python:
response = openai.Completion.create( #Создание запроса
  engine="davinci",
  prompt="The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.\n\nHuman: Hello, who are you?\nAI: I am an AI created by OpenAI. How can I help you today?\nHuman: I'd like to cancel my subscription.\nAI:",
  temperature=0.9,
  max_tokens=150,
  top_p=1,
  frequency_penalty=0.0,
  presence_penalty=0.6,
  stop=["\n", " Human:", " AI:"]
)

Начнем работать с кодом. Нужно получать запрос от пользователя(сообщение) и, пока программа не закончится, посылать его, после чего получать ответ.

Python:
while 1: #Цикл который не закончится до окончания программы
    query=input("\nHuman: ") #Получение запроса пользователя
    prompt="The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.\n\nHuman: Hello, who are you?\nAI: I am an AI created by OpenAI. How can I help you today?\nHuman: "+query+"\nAI: " #Определение текста запроса
    response = openai.Completion.create( #Создание запроса
      engine="davinci", #Определяем нужную нам модель
      prompt=prompt, #Текст запроса
      temperature=0.9, #Насколько креативен наш бот
      max_tokens=2000, #Максимальное кол-во токенов
      top_p=1,
      frequency_penalty=0,
      presence_penalty=0.6,
      stop=["\n", " Human:", " AI:"]
    )

Теперь выведем нужные нам данные:
Python:
data=json.loads(str(response)) #С помощью подключенного json обрабатываем данные
  generated="\nAI:"+data["choices"][0]["text"] #Забираем нужные нам параметры
  print(generated) #Выводим ответ

Этот цикл будет повторяться пока пользователь не закроет программу, так мы получаем полностью рабочего чат-бота!

картинка3.png
 
Последнее редактирование модератором:
  • Нравится
Реакции: BlackHundred
Статья хорошая, но картинок не хватает
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab