Введение:
Недавно OpenAI открыла доступ к GPT-3: достаточно зарегистрироваться, получить API-ключ и начать изучать генерацию.
GPT-3 является алгоритмом обработки естественного языка, это так-же самая большая модель в мире.
План статьи:
1. Регистрация
2. Принцип работы GPT-3.
3. Рассматриваем пример и создаем свой.
4. Создадим свое приложение на python и сделаем вывод.
Регистрация:
К сожалению, регистрация недоступна на территории России, но мы можем это обойти. Подключаемся через VPN, переходим по ссылке
Принцип работы GPT-3:
Важно понять, что GPT-3 не пишет текст, она его генерирует, это важное замечание. При написании текста, человек его осознает и обдумывает, в отличии от GPT-3, которая генерирует текст на основе определенного алгоритма, не понимая смысла. Главная задача GPT-3 - понимать текст.
Рассмотрим мысленный эксперимент "Китайская комната", который проводит аналогию с GPT-3:
В некой комнате есть человек, не понимающий китайских иероглифов. У него есть книга с инструкцией по использованию иероглифов, однако не сказано о их значении. Представим, что другой человек, знающий китайский, задаёт вопрос, составленный из иероглифов. Человек в комнате, согласно инструкции, составляет ответ и отдаёт человеку за стеной. Человек за стеной получит осмысленный, здравый ответ, как-будто он общался с человеком, знающим китайский, хотя это не так. Человек в комнате (GPT-3) не понимает ни единого иероглифа (слова), но использует заранее составленную книгу (алгоритм) для ответа.
Такая генерация конечно иногда приводит к ошибкам, которые можно легко выявить, если правильно составить запрос.
Например, зайдем на
В графе 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 подготовила для нас примеры, которые можно посмотреть на
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:
Теперь, код. Мы возьмем один из примеров OpenAI за основу. К счастью, у них уже есть часть готового кода:
API OpenAI отдает нам запрос в виде JSON, подключим так-же и эту библиотеку:
Скопируем готовый код для запроса с сайта OpenAI.
Начнем работать с кодом. Нужно получать запрос от пользователя(сообщение) и, пока программа не закончится, посылать его, после чего получать ответ.
Теперь выведем нужные нам данные:
Этот цикл будет повторяться пока пользователь не закроет программу, так мы получаем полностью рабочего чат-бота!
Недавно OpenAI открыла доступ к GPT-3: достаточно зарегистрироваться, получить API-ключ и начать изучать генерацию.
GPT-3 является алгоритмом обработки естественного языка, это так-же самая большая модель в мире.
План статьи:
1. Регистрация
2. Принцип работы GPT-3.
3. Рассматриваем пример и создаем свой.
4. Создадим свое приложение на python и сделаем вывод.
Регистрация:
К сожалению, регистрация недоступна на территории России, но мы можем это обойти. Подключаемся через VPN, переходим по ссылке
Ссылка скрыта от гостей
. Используем Google аккаунт, после чего нас попросят подтвердить номер. Чтобы не делать этого можно скачать программу TempNumber и получить сообщение на один из его номеров. После регистрации у нас появится ключ, который можно скопировать на
Ссылка скрыта от гостей
. Сервис в дальнейшем можно использовать без VPN.Принцип работы GPT-3:
Важно понять, что GPT-3 не пишет текст, она его генерирует, это важное замечание. При написании текста, человек его осознает и обдумывает, в отличии от GPT-3, которая генерирует текст на основе определенного алгоритма, не понимая смысла. Главная задача GPT-3 - понимать текст.
Рассмотрим мысленный эксперимент "Китайская комната", который проводит аналогию с GPT-3:
В некой комнате есть человек, не понимающий китайских иероглифов. У него есть книга с инструкцией по использованию иероглифов, однако не сказано о их значении. Представим, что другой человек, знающий китайский, задаёт вопрос, составленный из иероглифов. Человек в комнате, согласно инструкции, составляет ответ и отдаёт человеку за стеной. Человек за стеной получит осмысленный, здравый ответ, как-будто он общался с человеком, знающим китайский, хотя это не так. Человек в комнате (GPT-3) не понимает ни единого иероглифа (слова), но использует заранее составленную книгу (алгоритм) для ответа.
Такая генерация конечно иногда приводит к ошибкам, которые можно легко выявить, если правильно составить запрос.
Например, зайдем на
Ссылка скрыта от гостей
. В Load a Preset загрузим Chat.В графе 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 обрабатывает сам текст на входе?
Не словами.
Рассматриваем пример и создаем свой:
OpenAI подготовила для нас примеры, которые можно посмотреть на
Ссылка скрыта от гостей
. По сути, всем, чем отличаются эти примеры от пустого 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) #Выводим ответ
Этот цикл будет повторяться пока пользователь не закроет программу, так мы получаем полностью рабочего чат-бота!
Последнее редактирование модератором: