OpenAI API – Jak korzystać z chata GPT z poziomu Python?

OpenAI – podłączenie w Python

Nie będę się tutaj rozwodził na temat OpenAI i ich Chat GPT. Chat GPT to zaawansowany model językowy oparty na AI. Odpowiada po polsku, angielsku i w wielu innych językach. Zna się na programowaniu, technologii, markach samochodów oraz wie niezliczoną masę innych rzeczy. To, co przedstawię w tym artykule, to przede wszystkim:

  • Jak w prosty sposób połączyć się z OpenAI API z poziomy Python
  • Jak zadać z poziomu Python do OpenAI API wiele pytań

To, czego będziemy potrzebowali to:

  • Python (ja korzystam z wersji 3.9)
  • Jakiś program do pisania w Python (korzystam z bezpłatnego PyCharm Community, o którym pisałem w tym artykule)
  • Baza MySQL (tylko, gdy chcemy składować wyniki zapytania w bazie danych)

Podłączenie do OpenAI z poziomu API – pobranie klucza API

W pierwszej kolejności logujemy się na openai.com. Jeśli nie mamy konta, zakładamy je. Zakładając konto dostajesz środki o wartości $18 na starcie. Po wyczerpaniu ich trzeba już zapłacić za każde zapytanie. Szczerze mówiąc, by wygenerować kilkanaście tysięcy tekstów, $18 powinno w zupełności wystarczyć, więc za korzystanie nie płacisz nic.

W prawym górnym rogu ekranu klikamy „View API Keys„. Klikamy „Create new secret Key” i od razu je kopiujemy. Po zamknięciu okienka, API Key nie można drugi raz podejrzeć. Jeśli jednak nie udało nam się go zapisać, to kasujemy poprzednio wygenerowane API Key i tworzymy nowe.

Podłączenie do OpenAI z poziomu API – pobranie klucza API

Teraz czas na kod Python krok po kroku:

Krok 1: Instalacja Python i Pycharm

Jeśli nie korzystałeś wcześniej z Python i PyCharm, to poniższe krótkie artykuły pomogą Ci je zainstalować. Opis instalacji znajdziesz tutaj:

Krok 2: Tworzymy środowisko wirtualne w Python (nie jest konieczne, ale tak jest lepiej) lub Instalujemy pakiet openai bezpośrednio

Odpalamy pyCharm i tworzymy nowy projekt. W prawym górny rogu powinien się pojawić komunikat o braku interpretera. Klikamy go, a następnie wybieramy z listy interpreter Python (systemowy, bądź z środowiska wirtualnego).

Instalujemy pakiet openai. Otwieramy CMD i wpisujemy:

pip install openai
Krok 3: Instalujemy pakiet openai

Krok 3: Kod właściwy komunikacji z chatem GPT z poziomu inputu

Poniżej przykład programu, który zwróci odpowiedź po podaniu tzw. inputu w Python. Odpalamy nasz program skrótem CTRL+SHIFT+F10. W linii poleceń pojawi się tekst „Insert text:”. Wprowadzamy nasze zapytanie + Enter.

# -*- coding: utf-8 -*-
# import packages:
import json
import openai

openai.api_key = '>>>YOUR_KEY<<<'

def get_content(in_prompt):
    response = openai.Completion.create(model="text-davinci-003",
                                        prompt=in_prompt,
                                        temperature=0,
                                        max_tokens=3900)
    return response

if __name__ == "__main__":
    in_prompt = input("Insert text: ")
    content_json = get_content(in_prompt)

    # result as JSON
    print(content_json)

    content_text = content_json["choices"][0]["text"]

    # Result as text
    print(content_text)

Odpowiedź będzie widoczna w konsoli w formie wiadomości JSON oraz w formie tekstu (zaznaczone na screenie poniżej). Zmienna content_text = content_json[„choices”][0][„text”] – to fragment naszego kodu, który wyciąga samą odpowiedź z JSON’a.

Kod właściwy komunikacji z chatem GPT z poziomu inputu

Krótki opis kodu:

  • # -*- coding: utf-8 -*- – ustawienie kodowania. Szczególnie ważne, gdy chcesz uzyskać odpowiedź od OpenAI w alfabecie innym niż angielski (np odpowiedź zawierająca polskie znaki).
  • openai.api_key = ’>>>YOUR_KEY<<<’ – tu wpisujesz swój klucz API. Jeśli tworzysz program profesjonalnie, klucz oczywiście nie powinien się znajdować w kodzie!
  • get_content() – funkcja zwracająca odpowiedź z OpenAI. in_prompt argument, w którym wstawiamy pytanie do OpenAI. Funkcja zwraca odpowiedź response.
  • content_text = content_json[„choices”][0][„text”] – to fragment naszego kodu, który wyciąga samą odpowiedź tekstową z JSON’a.
  • max_tokens=3900 – określa maksymalną liczbę tokenów, jaka może być zużyta na pojedyncze odpytanie API. Wprowadziłem liczbę 3900, która jest bliska maksimum (4095). Jeśli będziesz odpytywał openAI w innym języku niż angielski, proponuję wybrać mniejszą liczbę np 3900.

To, co może jeszcze zwrócić Twoją uwagę to wybrany model językowy. Najpopularniejszym modelem jest w tym momencie text-davinci-003. Ten model jest także wykorzystywany jako standardowy model w chacie GPT. Do wyboru są jeszcze (tańsze w obsłudze i pobierające mniej tokenów za zapytanie): text-babbage-001, text-ada-001.

Krok 4: Kod właściwy do pobierania odpowiedzi na pytania dostarczone w formie listy

Poniżej zmodyfikowany kod, który działa w następujący sposób:

  • Jest lista, zawierająca wiele pytań do OpenIA – Zmienna questions_list
  • Pętla odpytuję po kolei elementy listy
  • Odpowiedzi są zapisywane do innej listy – answers_list
  • Na koniec lista z odpowiedziami jest wyświetlana

Kod:

# -*- coding: utf-8 -*-
# import packages:
import json
import openai

openai.api_key = '>>>YOUR_KEY<<<'

def get_content(in_prompt):
    response = openai.Completion.create(model="text-davinci-003",
                                        prompt=in_prompt,
                                        temperature=0,
                                        max_tokens=3900)
    return response

if __name__ == "__main__":
    # in_prompt = input("Insert text: ")

    questions_list = ["How to learn Python?",
                     "What is your favorite film?",
                     "Can you write a program?"]
    answers_list = []

    for i in questions_list:
        content_json = get_content(i)
        content_text = content_json["choices"][0]["text"]
        answers_list.append(content_text)

    # Result as text
    for j in answers_list:
        print(j)

Kod właściwy do pobierania danych dostarczonych w formie listy

Co dodatkowo powinniśmy wiedzieć o obsłudze Chata GPT z poziomu API?

  • Czat często ulega awarii (a przynajmniej w tym momencie) – warto napisać jakąś obsługę wyjątków w komunikacji z API, bądź zwykły try…except.
  • Prawa autorskie do treści generowanych z Chata OpenAI nie są jasne. Chat odpowiada, że nie posiada praw autorskich do tekstów. Pytanie, czy posiadamy je my, skoro płacimy po okresie testowym za obsługę chata.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *