Różnica między ChatGPT a API modeli językowych
Na zajęciach będziemy programistycznie integrować różne modele LLM z naszą logiką. W związku z tym często będziemy komunikować się z różnymi API przystosowanymi do korzystania z modeli LLM. Jednym z najpopularniejszych są modele udostępnione przez OpenAI, z których być może mieliście już okazję skorzystać, rozmawiając w ChatGPT. ChatGPT jest nakładką, czyli graficznym interfejsem do OpenAI API. My również w ramach AI-boratoriów będziemy pisać własne rozwiązania. Mogą to być różnego rodzaju automatyzacje, w których użytkownik nie ma bezpośredniego dostępu do rozmowy z modelem, lub własne okienkowe chaty dodające zadania zarządzające naszą produktywnością, procesem redukcji tkanki tłuszczowej, bądź czymkolwiek innym, co sobie wyobrazimy jako wykonalne.
Wykonanie połączenia do OpenAI API
Nawiązanie połączenia do API OpenAI możemy wykonać poprzez proste zapytanie POST autoryzowane kluczem API. Klucz API pobieramy logując się na nasze konto i przechodząc w zakładkę API keys.
OpenAI API udostępnia nam szereg różnych modeli, z którymi możemy wejść w interakcję za pomocą kodu np. skryptów Python:
Zapytanie do API OpenAI możemy wykonać za pomocą SDK (np. Node.js bądź Python), platform no-cde (Make, Zapier, n8n itp.) używając wbudowanych modułów. Można też użyć klienta w postaci aplikacji Postman, którą warto w tym momencie rozważyć zainstalować.
Jako ciało zapytania POST do end-pointu https://api.openai.com/v1/chat/completions w najprostszej postaci potrzebujemy przekazać dwie właściwości tj. message
i model
:
{
"messages": [{"role": "user", "content": "Yin and"}],
"model": "gpt-4o"
}
Demonstracyjnie będę używał modelu gpt-4o ponieważ jest względnie tani i szybki. Oczywiście jako wartość właściwości model możecie wpisać dowolny model odpowiadający dedykowanemu endpointowi.Warto w tym miejscu poświęcić chwilę na zapoznanie się z listą endpointów wraz z odpowiadającymi im modelami:
Należy zaznaczyć, że w przypadku niedawno utworzonych kont, dostęp do pełnego spektrum dostępnych modeli może być początkowo ograniczony. Proces aktywacji wszystkich funkcjonalności może wymagać pewnego czasu.
Odpowiedzią od OpenAI API jest względnie rozbudowany obiekt. Szczególną uwagę warto zwrócić na właściwość choices
, w której jako lista przechowywana jest wygenerowana odpowiedź modelu. Drugą ciekawą właściwością jest usage
, gdzie możemy między innymi znaleźć łączną liczbę wykorzystanych tokentów. Wykonując zapytanie za pomocą aplikacji Postman możemy dodatkowo zapisać wygenerowaną odpowiedź do pliku.
Dodatkowymi właściwościami, które nie są dostępne z poziomu Playground, a które możemy przekazać programistycznie jako ciało obiektu JSON zapytania http(s) są:
n — które przyjmuje wartość integer bądź null . Wartość właściwości n odpowiada liczbie wygenerowanych odpowiedzi przez model w odpowiedzi na jedno zapytanie POST . Możemy wówczas wygenerować kilka odpowiedzi. Następnie automatycznie przesłać je ponownie do tego smaego bądź innego modelu i wybrać najlepszą. Zwróćcie uwagę, że im większa będzie wartość właściwości n tym większy koszt wygenerowania odpowiedzi poniesiemy.
Jak zauważyliście interakcję z modelem za pomocą OpenAI API wykonywaliśmy używając narzędzia Postman. Budując własną logikę aplikacji wskazane jest natomiast korzystanie z specjalnie przygotowanych SDK. Instalację SDK OpenAI można przeprowadzić za pomocą narzędzia pip, wpisując w terminalu komendę pip install openai. Choć możliwe jest wykonanie instalacji globalnie, zaleca się utworzenie wirtualnego środowiska dla danego projektu. Takie podejście pozwala na lepsze zarządzanie zależnościami i utrzymanie porządku w strukturze projektu.
Na zakończenie dzisiejszego AI-boratorium przedstawię w poniższym filmie szczegółową instrukcję wykonania zapytania API, od początku do końca procesu.