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