OpenAI API umożliwia budowanie własnych czatów AI z użyciem ChatGPT Turbo. Korzystając z biblioteki sgcWebSockets, bardzo łatwo jest interagować z API — dla danej rozmowy czatowej model zwróci odpowiedź w formie uzupełnienia czatu.
ChatGPT Delphi Example
OpenAI wymaga zbudowania żądania, w którym przekazujesz wiadomości do wysłania do ChatGPT Turbo, temperaturę (określającą losowość wyników) itd. Poniżej znajdziesz listę dostępnych parametrów.
- model: (wymagany) identyfikator modelu do użycia. Sprawdź tabelę zgodności punktów końcowych modeli, aby dowiedzieć się, które modele działają z Chat API.
- messages: (wymagane) wiadomości, dla których mają być generowane uzupełnienia czatu, w formacie czatu.
- temperature: temperatura próbkowania, od 0 do 2. Wyższe wartości (np. 0,8) czynią wyniki bardziej losowymi, niższe (np. 0,2) — bardziej skupionymi i deterministycznymi.
- top_p: alternatywa dla temperature — tzw. próbkowanie jądrowe, w którym model bierze pod uwagę tokeny o skumulowanym prawdopodobieństwie top_p. Wartość 0,1 oznacza, że rozważane są tylko tokeny z górnych 10% masy prawdopodobieństwa.
- n: liczba wariantów uzupełnienia czatu generowanych dla każdej wiadomości wejściowej.
- stream: jeśli ustawione, częściowe delty wiadomości będą wysyłane na bieżąco, podobnie jak w ChatGPT. Tokeny są przesyłane jako zdarzenia SSE (data-only), a strumień kończy się komunikatem data: [DONE]. Zobacz OpenAI Cookbook, aby zobaczyć przykładowy kod.
- stop: do 4 sekwencji, przy których API przestaje generować kolejne tokeny.
- max_tokens: maksymalna liczba tokenów do wygenerowania w uzupełnieniu czatu. Łączna długość tokenów wejściowych i wygenerowanych jest ograniczona długością kontekstu modelu.
- presence_penalty: liczba od -2,0 do 2,0. Wartości dodatnie penalizują nowe tokeny na podstawie tego, czy już pojawiły się w tekście, zwiększając skłonność modelu do poruszania nowych tematów.
- frequency_penalty: liczba od -2,0 do 2,0. Wartości dodatnie penalizują nowe tokeny na podstawie ich częstości w dotychczasowym tekście, zmniejszając skłonność modelu do dosłownego powtarzania tych samych zdań.
- logit_bias: modyfikuje prawdopodobieństwo pojawienia się wskazanych tokenów w uzupełnieniu. Przyjmuje obiekt JSON mapujący tokeny (podane przez ich ID w tokenizerze) na wartość obciążenia od -100 do 100. Matematycznie obciążenie jest dodawane do logitów modelu przed próbkowaniem. Dokładny efekt zależy od modelu; wartości od -1 do 1 zwiększają lub zmniejszają szansę wyboru, wartości -100 lub 100 odpowiednio blokują lub wymuszają wybór danego tokenu.
- user: unikalny identyfikator reprezentujący użytkownika końcowego, który pomaga OpenAI monitorować i wykrywać nadużycia.
Poniżej znajdziesz prosty przykład wysyłania wiadomości do ChatGPT-Turbo.
procedure SendMessageChatGPT(const aMessage: string);
var
i: Integer;
oMessages: TsgcOpenAIArray_Request_Completion_Messages;
oMessage: TsgcOpenAIClass_Request_Completion_Message;
oRequest: TsgcOpenAIClass_Request_ChatCompletion;
oResponse: TsgcOpenAIClass_Response_ChatCompletion;
begin
oRequest := TsgcOpenAIClass_Request_ChatCompletion.Create;
Try
// ... model
oRequest.Model := 'gpt-3.5-turbo';
// ... create message
oMessage := TsgcOpenAIClass_Request_Completion_Message.Create;
oMessage.Content := aMessage;
oMessages := oRequest.Messages;
SetLength(oMessages, 1);
oMessages[0] := oMessage;
oRequest.Messages := oMessages;
// ... send message
oResponse := OpenAI.CreateChatCompletion(oRequest);
// ... process response
for i := 0 to Length(oResponse.Choices) - 1 do
DoLog('[' + oResponse.Choices[i]._Message.Role + '] ' + oResponse.Choices[i]._Message.Content);
Finally
oRequest.Free
End;
End;

Poniżej znajdziesz skompilowane demo dla Windows z użyciem biblioteki sgcWebSockets OpenAI Delphi.
