Найти тему
Машинное обучение

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

Оглавление

https://t.me/Chatgpturbobot - бесплатный бот chatgpt в телеграме.

Компания 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.

-2

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

-3

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

-4

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

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

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

-5

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

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

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

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