Раздел навигации

Используем OpenAI в Python

Добро пожаловать!

Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.

Зарегистрироваться!
  • Если Вы желаете помогать развитию проекта, готовы заполнять раздел(-ы) и подсказывать другим пользователям на портале, есть возможность попасть в команду редакторов. Для этого следует обратиться в техническую поддержку
lua / python developer
Редактор
Регистрация
13 Июн 2022
Сообщения
48
В этом гайде я наглядно покажу, как использовать нейросети в своём коде.
>> Для начала работы нам требуется получить токен OpenAI.
1. Покупка в интернете.
2. Получение на официальном сайте.
1. Посмотреть гайд в интернете =)

1.Включить ВПН
2. Купить номер(желательно Индонезия) ( https://5sim.biz/ )
3. Зайти на сайт ( https://platform.openai.com/login?launch )
4. Пройти регистрацию и получить токен OpenAI в разделе "API Keys"

>> После получения токена - скачивание библиотеки и выбор модели.

В Python существует библиотека для работы с OpenAI. Как не странно, называется она - OpenAI.
Для установки библиотеки , введём в консоль однострочный код. Обязательно скачиваем библиотеку версии 0.28!
pip install openai==0.28
Теперь определяемся с моделью для генерации. На выбор есть два GPT - Instruct и Chat.

>> InstructGPT:

Рекомендуемая - Davinci.

ADA - самая быстрая модель и самая низкая стоимость. Дата обучения: Октябрь 2019 года
Babbage - Быстрое выполнение задач, дешевый. Дата обучения: Октябрь 2019 года
Curie - мощный и дешевле чем Davinci. Дата обучения: Октябрь 2019 года
Davinci - самая дорогая и самый мощная модель. Дата обучения: Июнь 2021 года

Цена за 1.000 токенов:
ADA: $0.0004 / 1K tokens
Babbage: $0.0005 / 1K tokens
Curie: $0.0020 / 1K tokens
Davinci: $0.0200 / 1K tokens

>> ChatGPT:


gpt-3.5-turbo - $0.002 / 1K tokens - Медленнее, чем InstructGPT. Очень хорошо анализирует текст и даёт плодотворный ответ.


>> Теперь перейдём к самому интересному - кодинг!

Почему важно определяться с моделью генерации до кодинга? - Ответ прост. При написании кода код будет напрямую зависеть от выбранной модели.

InstructGPT:
Python:
import openai

def send_openai(prompt):
    response = openai.Completion.create( # Делаем запрос в InstructGPT
        engine="text-davinci-003", # Наша выбранная модель
        prompt=f"Q: {prompt}\nA:", # Делаем правильный запрос
        temperature=0.5, # Используется для контроля случайности и креативности сгенерированного текста
        max_tokens=419, # Максимальное количество токенов за один запрос.
        top_p=1,
        frequency_penalty=0, # Контролирует предпочтение модели использовать более распространенные слова или фразы.
        presence_penalty=0 # Влияет на вероятность того, что модель повторит слова или фразы в своем ответе.
    )
  
    answer = response.choices[0].text.strip() # Получаем наши данные. strip() - убирает лишние пробелы
    return answer

print(send_openai("Hello!")) # Пример вызова функции

ChatGPT:
Python:
import openai

def send_openai(prompt):
    responce = openai.ChatCompletion.create( # Делаем запрос
        model="gpt-3.5-turbo", # Модель ChatGPT-3
        messages=[{"role": "user", "content": prompt}], # Запросы нужно делать именно передавая класс List.
        temperature=0.5,
        max_tokens=419,
        top_p=1,
        frequency_penalty=0,
        presence_penalty=0,
    )

    answer = responce.choices[0].message.content.strip() # Получаем ответ
    return answer

print(send_openai("hello")) # Пример вызова функции


>> В чём основное отличие InstructGPT и ChatGPT?

1. При запросе в InstructGPT вы передаёте только 1 сообщение с запросом. В ChatGPT - передаётся роль, а также сообщение. В ChatGPT можно передавать сразу несколько сообщений, для поддержания целого диалога.
2. ChatGPT можно настроить, передавая ему определенный текст при запросе.
3. ChatGPT даёт более плодотворный ответ, нежели InstructGPT. А также он намного дешевле.

>> Как создавать чат с ChatGPT?

1. Каждый запрос и ответ должны сохраняться в List. Пример:

Python:
prompts = []

def send_openai(prompts):
    responce = openai.ChatCompletion.create( # Делаем запрос
        model="gpt-3.5-turbo", # Модель ChatGPT-3
        messages=prompts, # Запросы нужно делать именно передавая класс List.
        temperature=0.5,
        max_tokens=419,
        top_p=1,
        frequency_penalty=0,
        presence_penalty=0,
    )

    answer = responce.choices[0].message.content.strip() # Получаем ответ
    prompts.append({
        "role": "system",
        "content": answer
    }) # В List prompts мы должны сохранять абсолютно все запросы и ответы
    return answer

prompts.append({
    "role": "user",
    "content": "Hello!" # Вместо "Hello!" - своё текст
})
print(send_openai(prompts))
2. Запрос передаётся в List, где находятся словари с ключами "role" - роль( system - ChatGPT / user - вы ) и "content" - текст / ответ.

Пример массива prompts:
Python:
# [{"role": "user", "content":"Hello"}, {"role": "system", "content":"Hello, User!"}]
 
Сверху