Простое руководство по ChatGPT API с использованием Python

Компания OpenAI недавно выпустила ChatGPT API. Этот API, который называется gpt-3.5-turbo, использует такую же модель, как и в продуктах ChatGPT.

Для тех, кто уже знаком с OpenAI API на Python, изучение того, как использовать ChatGPT API, должно быть простым, но всё ещё есть некоторые концепции, которые являются эксклюзивными для этого API. Их мы покажем в этой статье.

Давайте рассмотрим ChatGPT API на Python.

Примечание: Цена API составляет $ 0,002 за 1 тыс. токенов. Однако, у вас есть бесплатный кредит, которым вы можете воспользоваться. Похоже, теперь у меня есть ещё одна причина отменить мою подписку на ChatGPT Plus.

Генерация API Key

Прежде чем мы начнём работать с ChatGPT API, нам нужно войти в нашу учетную запись OpenAI и сгенерировать наши API keys.

Помните, что OpenAI не будет отображать ваш секретный API key после того, как вы его сгенерируете, поэтому сразу скопируйте его и сохраните. Я создам переменную окружения с именем OPENAI_API_KEY, которая будет содержать мой API key для этого руководства.

Установка библиотеки

Чтобы работать с ChatGPT API, сначала мы должны установить библиотеку openai, выполнив следующую команду:

pip install openai

Существует много вещей, которые вы можете сделать с помощью библиотеки OpenAI, но сегодня мы собираемся сосредоточиться на сохранении истории общения с ChatGPT API. Чтобы быть более точным, мы будем использовать “ChatCompletion” gpt-3.5-turbo.

Начало работы с ChatGPT API на Python

Чтобы начать, мы собираемся использовать приведённый ниже фрагмент кода, который я взял из официальной документации.

import os import openai openai.api_key = os.getenv("OPENAI_API_KEY") completion = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "user", "content": "Tell the world about the ChatGPT API in the style of a pirate."} ] ) print(completion.choices[0].message.content)

Это очень простой способ взаимодействия с API. Главное, что нужно знать, это то, что в списке messages есть словарь с 2 ключами: roles и content.

Content - это просто содержание сообщения, в то время как существуют три основные roles: “system”, “user” или “assistant”. “User” - это тот, кто даёт инструкции. Эта роль уже используется в приведённом выше коде.

Если мы запустим приведённый выше код, то получим следующее:

Эй, приятель, ты ищешь чат-API, который поразит тебя? Не смотри дальше, чем ChatGPT API, старый морской волк!С помощью ChatGPT API, ...

Это то же самое, что попросить ChatGPT “Рассказать миру об ChatGPT API в стиле пирата”.

Фрагмент кода, который мы взяли из документации, очень прост, поэтому мы можем добавить больше кода для взаимодействия с API, как если бы мы общались с ChatGPT. Кроме того, мы должны добавить роль system для настройки поведения помощника и роль assistant для хранения предыдущих ответов.

Роль System

Давайте добавим системную роль, чтобы задать поведение помощника. Вы можете назвать ассистента “полезным помощником, который переводит с английского на французский” или любым другим названием, каким захотите.

Чтобы упростить задачу, я настрою системную роль на “kind helpful assistant” в списке сообщений.

messages = [ {"role": "system", "content" : "You’re a kind helpful assistant"} ]

Сейчас я собираюсь добавить роль users к предыдущему списку и добавить функцию ввода, чтобы взаимодействовать с API так, как если бы мы работали с ChatGPT.

import openai content = input("User: ") messages.append({"role": "user", "content": content}) completion = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=messages ) chat_response = completion.choices[0].message.content print(f'ChatGPT: {chat_response}')

Теперь, если мы спросим “кто был первым человеком на Луне?”, система поведёт себя как “helpful assistant" и сообщит нам ответ:

Однако, есть одна маленькая деталь: assistant не сохраняет предыдущие ответы, поэтому система может не запомнить их.

Давайте спросим “откуда он?”, а затем “какого он роста?” Потом я добавлю цикл while, чтобы задать несколько вопросов.

Как вы можете видеть, теперь система отвечает на каждый новый вопрос, но при этом накапливает информацию из предыдущих ответов.

Мы можем решить эту проблему с помощью роли assistant .

Роль Assistant

Мы используем роль assistant для хранения предыдущих ответов. Сохраняя предыдущие ответы, мы можем создать историю разговоров, которая пригодится, когда инструкции user будут ссылаться на предыдущие сообщения.

С помощью приведённого ниже кода, мы добавляем роль assistant в наш список сообщений:

messages.append({"role": "assistant", "content": chat_response})

Обратите внимание, что в содержимом мы должны добавить chat_response, чтобы сохранять ответы.

Теперь мы добавляем предыдущую строку кода в наш цикл while:

import openai while True: content = input("User: ") messages.append({"role": "user", "content": content}) completion = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=messages ) chat_response = completion.choices[0].message.content print(f'ChatGPT: {chat_response}') messages.append({"role": "assistant", "content": chat_response})

Сейчас, если мы зададим тот же вопрос, что и раньше, мы сможем получить ответы получше.

На этом всё! Теперь вы знаете, как работать с 3 ролями, вы можете использовать API по своему усмотрению. Помимо модели и сообщений в теле запроса, вы также можете добавить другие параметры для настройки вашего запроса.

Вот несколько дополнительных параметров:

  • max_token: Максимальное количество токенов для генерации при завершении (здесь вы можете увидеть токенизатор, который использует OpenAI)
  • temperature: Используемая температура отбора проб. Значения, близкие к 1, придадут модели больше риска / креативности, в то время как значения, близкие к 0, будут генерировать чётко определённые ответы.
  • n: Количество вариантов завершения общения, которые необходимо сгенерировать для каждого входного сообщения.

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

Статья была взята из этого источника:

0
14 комментариев
Написать комментарий...
Sasha Siniytsin

Подскажите в чем может быть причина "OpenAI's services are not available in your country."? Через впн поднятый на впс в Нидерландах не работает, через GUI на сервере том же не работает. До этого все было нормально. Может быть как то забанен аккаунт? я в России

Ответить
Развернуть ветку
Сергей Комаров

Браузер, банально, какой?

Ответить
Развернуть ветку
Sasha Siniytsin

Chrome

Ответить
Развернуть ветку
Сергей Комаров

"Чистый", или на его движке что-то? Epic Browser и прочие нейронка не особенно любит, проверено лично. Причем, тоже все отлично работало, а позже начала ругаться. Перешел на Tor, там хоть и не полная стабильность, но лучше.

Ответить
Развернуть ветку
Sasha Siniytsin

Да, у меня на тор тоже все заработало

Ответить
Развернуть ветку
Эдуард Белокрылов

Код не работает у меня, такая ошибка:
"nameerror: name 'messages' is not defined python"

Ответить
Развернуть ветку
Эдуард Белокрылов

Нужно было объявить переменную такого вида "messages = []" перед "while True:". Странно что не указано в статье

Ответить
Развернуть ветку
Андрей

"messages = list() выглядит симпатичнее

Ответить
Развернуть ветку
asadbek iskandarov

salom

Ответить
Развернуть ветку
Павел Безруков

Не работает, пишет что нет квоты для тестирования

Ответить
Развернуть ветку
BOYPLEYGENDARY

Как активировать чат?

Ответить
Развернуть ветку
Nickolai Vasiliev

Оригинал взят с Medium?

Ответить
Развернуть ветку
Кирилл Баронин

Простите, а на какой версии библиотеки openai работает?

Ответить
Развернуть ветку
Олег Сташков

Тут пропущено словв "не"?

Ответить
Развернуть ветку
11 комментариев
Раскрывать всегда