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

Простое руководство по 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.

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

Помните, что 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 в стиле пирата”.

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

Фрагмент кода, который мы взяли из документации, очень прост, поэтому мы можем добавить больше кода для взаимодействия с 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" и сообщит нам ответ:

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

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

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

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

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

Мы можем решить эту проблему с помощью роли 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})

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

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

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

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

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

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

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

1111
14 комментариев

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

Ответить

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

Ответить

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

Ответить

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

Ответить

salom

Ответить

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

Ответить

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

Ответить