1. Tworzenie żądań API

1.1 Wysyłanie żądań przy użyciu CURL

CURL to narzędzie wiersza poleceń, które obsługuje wysyłanie i odbieranie danych za pomocą różnych protokołów, takich jak HTTP i HTTPS. Aby wysłać żądanie do API OpenAI za pomocą CURL, najpierw musisz mieć ważny klucz API, a następnie dodać go do nagłówka żądania.

Oto przykład polecenia CURL użytego do wysłania żądania do API OpenAI:

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
     "model": "gpt-3.5-turbo",
     "messages": [{"role": "user", "content": "Powiedz, że to jest test!"}],
     "temperature": 0.7
   }'

Musisz zastąpić zmienną $OPENAI_API_KEY swoim kluczem API. Ze względów bezpieczeństwa unikaj ujawniania klucza API w jakimkolwiek publicznym miejscu.

1.2 Analiza nagłówków żądania

W powyższym poleceniu CURL użyliśmy dwóch kluczowych nagłówków żądania: Content-Type i Authorization.

  • Content-Type: Informuje serwer, że wysyłamy dane w formacie JSON. Jego wartość to zazwyczaj application/json.
  • Authorization: Jest to poświadczenie używane do uwierzytelnienia żądania API, a jego format to zawsze Bearer (twój klucz API).

Zapewnienie poprawności tych dwóch nagłówków jest kluczowe dla powodzenia żądania.

1.3 Konstruowanie treści żądania

Treść żądania to sformatowany w formacie JSON ciąg znaków, który informuje OpenAI o naszych intencjach. W tym żądaniu używamy model do określenia modelu, który używamy, przekazujemy tablicę messages, definiującą dane wejściowe użytkownika, i ustawiamy temperature, aby dostosować zmienność odpowiedzi.

JSON wygląda tak:

{
  "model": "gpt-3.5-turbo",
  "messages": [{"role": "user", "content": "Powiedz, że to jest test!"}],
  "temperature": 0.7
}

W tym przykładzie prosimy model o wygenerowanie odpowiedzi testowej na podstawie wiadomości wejściowej.

1.4 Szczegółowe objaśnienie parametrów żądania

W treści żądania znajduje się kilka ważnych parametrów do zauważenia:

  • model: Określa model sztucznej inteligencji, który zamierzamy użyć. OpenAI dostarcza wiele modeli, z różnymi funkcjonalnościami i efektami.
  • messages: Jest to tablica zawierająca jedną lub więcej obiektów wiadomości, przy czym każda wiadomość składa się z role, podającą rolę wiadomości, i content, reprezentującą treść wiadomości.
  • temperature: Kontroluje pewność odpowiedzi. Mniejsza temperature generuje bardziej pewne odpowiedzi, podczas gdy wyższa wartość prowadzi do większej losowości.

2. Analiza odpowiedzi API

2.1 Zrozumienie odpowiedzi

Gdy wysyłasz żądanie, serwer zwraca kod stanu HTTP oraz ewentualnie ciało odpowiedzi. Zazwyczaj udane żądanie otrzyma kod stanu z serii 200. Zwracane dane JSON zawierają wynik żądania, a przykładowa odpowiedź wygląda następująco:

{
    "id": "chatcmpl-abc123",
    "object": "chat.completion",
    "created": 1677858242,
    "model": "gpt-3.5-turbo-1106",
    "usage": {
        "prompt_tokens": 13,
        "completion_tokens": 7,
        "total_tokens": 20
    },
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "\n\nTo jest test!"
            },
            "logprobs": null,
            "finish_reason": "stop",
            "index": 0
        }
    ]
}

W tej odpowiedzi widzimy identyfikator zakończenia, znacznik czasu utworzenia, użyty model, zużycie tokenów i rzeczywistą treść odpowiedzi (w polu choices).

2.2 Kompletność i obsługa błędów

Pole finish_reason wskazuje, dlaczego API przestało generować więcej treści. Powszechne przyczyny zakończenia to stop, length i idle. Jeśli wystąpi błąd, na przykład przekroczenie limitów tokenów lub nieprawidłowy klucz API, otrzymasz odpowiedni komunikat błędu i kod stanu. Ważne jest właściwe obsługiwanie tych błędów, aby zapewnić ciągłość doświadczenia użytkownika i stabilność aplikacji. W przypadku obsługi błędów możesz zdecydować o odpowiedniej strategii obsługi błędów na podstawie zwróconego kodu stanu i komunikatu błędu, takiej jak ponowne próbowanie żądania czy udzielanie informacji zwrotnej użytkownikowi wyjaśniającej powód błędu.

2.3 Wysyłanie żądań API za pomocą Python SDK

Poniżej znajduje się przykład używania oficjalnego Python SDK OpenAI do wykonywania wywołań API.

Najpierw musisz zainstalować bibliotekę openai, co można zrobić za pomocą polecenia pip:

pip install --upgrade openai

Następnie możesz użyć poniższego kodu Python, aby wykonać podobne żądanie API jak w powyższym przykładzie. Pamiętaj, aby zastąpić YOUR_OPENAI_API_KEY swoim kluczem API.

from openai import OpenAI

client = OpenAI(
   api_key="TWÓJ_OPENAI_API_KEY",
)

completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "Jesteś profesjonalnym asystentem programistycznym, biegłym w rozwiązywaniu różnych problemów programistycznych."},
    {"role": "user", "content": "Napisz funkcję do sortowania quicksort w Go."}
  ]
)

print(completion.choices[0].message)