Używanie API Chat GPT

Udostępnienie API do Chata GPT to nowy poziom użytkowania tego narzędzia. Od teraz możemy używać chata bezpośrednio w naszych kodach, tworząc zautomatyzowane programy polegające na jego wiedzy.

Wchodzimy na stronę https://platform.openai.com/apps i tym razem nie wybieramy opcji Chat GPT tylko API:

W zakładce Usage możemy sprawdzić stan naszych środków do wykorzystania w API. Uwaga! Środki na API są odrębnymi kosztami od płatnych wersji Chata GPT

Najbardziej interesującą nas zakładką jest API Keys, gdzie widzimy wygenerowane przez nas klucze, za pomocą którego w kodach będziemy się łączyć z chatem. Możemy wygenerować także nowy klucz.

Importujemy lub instalujemy bibliotekę OpenAI:

import openai

import os

Wpisujemy nasz klucz:

api_key = 'xxx'

Tworzymy zapytanie do Chata GPT:

openai.api_key = api_key

response = openai.ChatCompletion.create(
model="gpt-3.5-turbo", # Wybór modelu GPT-3.5 Turbo
messages=[
{"role": "system", "content": "Jesteś agentem windykacji"}, # Instrukcja dla modelu
{"role": "user", "content": "Klient przeklina, co robić?"} # Pytanie użytkownika
],
temperature=0.5, # Parametr kontrolujący kreatywność odpowiedzi (0 - deterministyczne, 1 - losowe)
max_tokens=2400, # Maksymalna liczba tokenów (słów/fragmentów tekstu) w odpowiedzi
top_p=0.95, # Parametr kontrolujący różnorodność odpowiedzi (sampling nucleus)
frequency_penalty=0, # Kara za powtarzanie tych samych słów/fraz w odpowiedzi
presence_penalty=0 # Kara za wprowadzanie nowych tematów do odpowiedzi
)

print(response.choices[0].message['content']) # wyswietlanie generowanej odpowiedzi

Przykład użycia z operacją na pliku

Aby użyć chata na plikach, musimy plik ten wcześniej przygotować i zapisać jako tekst.

import pandas as pd

df = pd.read_excel('sciezka/kwoty.xlsx')

descriptions = df['property2'].to_list()

def analyze_description(description):
response = openai.ChatCompletion.create(
model="gpt-4", # Użyj odpowiedniego modelu
messages=[
{"role": "system", "content": "You are a data analysis assistant."},
{"role": "user", "content": f"Wyznacz największą liczbę z tekstu. Podaj tylko liczbę, bez innych wyrazów, nie pokazuj liczb dziesiętnych \n{description}"}
],
max_tokens=150,
temperature=0.7
)
return response.choices[0].message['content'].strip()

df['Analysis'] = df['property2'].apply(analyze_description)