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.
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:
- Instalacja Python
- Instalacja PyCharm (Wersja Community)
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: 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.
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)
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.