ChatGPT Delphi İstemcisi (2 / 5)

· Özellikler

OpenAI API, ChatGPT Turbo kullanarak kendi Yapay Zeka Sohbetlerinizi oluşturmanıza olanak tanır. sgcWebSockets kütüphanesini kullanarak API ile etkileşim kurmak çok kolaydır; bir sohbet konuşması verildiğinde, model bir sohbet tamamlama yanıtı döndürür. 

ChatGPT Delphi Örneği

OpenAI, ChatGPT Turbo'ya gönderilecek mesajları, sıcaklığı (daha fazla veya daha az rastgele bir çıktı almak için) geçirdiğiniz bir istek oluşturmayı gerektirir... kullanılabilir parametrelerin bir listesini aşağıda bulabilirsiniz.

- model: (Zorunlu) Kullanılacak modelin kimliği. Hangi modellerin Chat API ile çalıştığına dair ayrıntılar için model uç noktası uyumluluk tablosuna bakın.
- messages: (Zorunlu) Sohbet biçiminde, sohbet tamamlamalarının oluşturulacağı mesajlar.
- temperature: 0 ile 2 arasında hangi örnekleme sıcaklığının kullanılacağı. 0,8 gibi yüksek değerler çıktıyı daha rastgele hale getirirken, 0,2 gibi düşük değerler onu daha odaklı ve belirleyici hale getirir.
- top_p: Modelin top_p olasılık kütlesine sahip tokenların sonuçlarını dikkate aldığı, nucleus sampling adı verilen, sıcaklıkla örneklemeye bir alternatif. Yani 0,1, yalnızca en üst %10 olasılık kütlesini oluşturan tokenların dikkate alındığı anlamına gelir.
- n: Her girdi mesajı için kaç sohbet tamamlama seçeneği oluşturulacağı.
- stream: Ayarlanırsa, ChatGPT'deki gibi kısmi mesaj deltaları gönderilir. Tokenlar kullanılabilir hale geldikçe yalnızca veri içeren sunucu tarafından gönderilen olaylar olarak gönderilir ve akış bir data: [DONE] mesajıyla sonlandırılır. Örnek kod için OpenAI Cookbook'a bakın.
- stop: API'nin daha fazla token üretmeyi durduracağı en fazla 4 dizi.
- max_tokens: Sohbet tamamlamada üretilecek maksimum token sayısı. Girdi tokenları ve üretilen tokenların toplam uzunluğu, modelin bağlam uzunluğuyla sınırlıdır.
- presence_penalty: -2,0 ile 2,0 arasında bir sayı. Pozitif değerler, yeni tokenları şimdiye kadarki metinde görünüp görünmediklerine göre cezalandırır ve modelin yeni konular hakkında konuşma olasılığını artırır.
- frequency_penalty: -2,0 ile 2,0 arasında bir sayı. Pozitif değerler, yeni tokenları şimdiye kadarki metinde mevcut sıklıklarına göre cezalandırır ve modelin aynı satırı kelimesi kelimesine tekrarlama olasılığını azaltır.
- logit_bias: Belirtilen tokenların tamamlamada görünme olasılığını değiştirir. Tokenları (tokenizer'daki token kimlikleriyle belirtilen) -100 ile 100 arasında ilişkili bir bias değerine eşleyen bir json nesnesi kabul eder. Matematiksel olarak, bias, örneklemeden önce model tarafından üretilen logitlere eklenir. Kesin etki modele göre değişir, ancak -1 ile 1 arasındaki değerler seçim olasılığını azaltmalı veya artırmalıdır; -100 veya 100 gibi değerler ilgili tokenın yasaklanmasına veya yalnızca seçilmesine neden olmalıdır.
- user: OpenAI'nin kötüye kullanımı izlemesine ve tespit etmesine yardımcı olabilecek, son kullanıcınızı temsil eden benzersiz bir tanımlayıcı.



ChatGPT-Turbo'ya bir mesaj gönderen basit bir örneği aşağıda bulabilirsiniz.

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; 

sgcWebSockets OpenAI Delphi Kütüphanesini kullanan Windows için derlenmiş Demoyu aşağıda bulabilirsiniz.