Delphi için OpenAI Assistants

· Bileşenler

Assistants API, kendi uygulamalarınız içinde yapay zeka asistanları oluşturmanıza olanak tanır. Bir Asistanın talimatları vardır ve kullanıcı sorgularına yanıt vermek için modellerden, araçlardan ve dosyalardan yararlanabilir. Assistants API şu anda üç tür aracı destekler: Code Interpreter, File Search ve Function calling.


Genel Bakış

Assistants API'sinin tipik bir entegrasyonu şu akışa sahiptir:

Adım 1: Bir Asistan oluşturun

Bir Asistan, model, talimatlar ve araçlar gibi çeşitli parametreler kullanılarak bir kullanıcının mesajlarına yanıt verecek şekilde yapılandırılabilen bir varlığı temsil eder. 

// ... create a new assistant
oAssistant := TsgcAIOpenAIAssistant.Create(nil);
// ... set your api key
oAssistant.OpenAIOptions.ApiKey := txtAPIKey.Text;
// ... assistant options
oAssistant.AssistantOptions.Name := 'Math Tutor';
oAssistant.AssistantOptions.Instructions.Text := 'You are a personal math tutor. Write and run code to answer math questions.';
oAssistant.AssistantOptions.Model := 'gpt-4o';
// ... create the assistant
oAssistant.CreateAssistant(); 

Adım 2: Bir Thread oluşturun

Bir Thread, bir kullanıcı ile bir veya birden çok Asistan arasındaki bir konuşmayı temsil eder. Bir kullanıcı (veya yapay zeka uygulamanız) Asistanınızla bir konuşma başlattığında bir Thread oluşturabilirsiniz. 

oThread := oAssistant.CreateThread; 

Adım 3: Thread'e bir Mesaj ekleyin ve Çalıştırın

Kullanıcılarınızın veya uygulamalarınızın oluşturduğu mesajların içeriği, Thread'e Message nesneleri olarak eklenir. Mesajlar hem metin hem de dosya içerebilir. Thread'lere ekleyebileceğiniz Mesaj sayısında bir sınır yoktur; modelin bağlam penceresine sığmayan herhangi bir bağlamı akıllıca kısaltırız.

Tüm kullanıcı Mesajları Thread'e eklendikten sonra, Thread'i herhangi bir Asistanla Çalıştırabilirsiniz. Bir Run oluşturmak, bir yanıt üretmek için Asistanla ilişkili modeli ve araçları kullanır. Bu yanıtlar, asistan Mesajları olarak Thread'e eklenir.

procedure SendMessage(const oAssistant: TsgcAIOpenAIAssistant; const oThread: TsgcAIClass_Thread; const aMessage: string);
var
  i: Integer;
  oMessage: TsgcOpenAIClass_Message;
  oMessages: TsgcOpenAIClass_Response_List_Messages;
  oRun: TsgcOpenAIClass_Run;
begin
  DoLog('[user]: ' + aMessage);
  oMessage := oAssistant.CreateMessageText(oThread.Id, aMessage);
  if Assigned(oMessage) then
  begin
    oRun := oAssistant.CreateRunAndWait(oThread.Id);
    if Assigned(oRun) then
    begin
      oMessages := oAssistant.GetMessages(oThread.Id, oRun.Id);
      if Assigned(oMessages) and (Length(oMessages.Messages) > 0) then
      begin
        for i := 0 to Length(oMessages.Messages) - 1 do
          DoLog('[assistant]: ' + DoFormatResponse(oMessages.Messages[i].ContentText + #13#10));
      end;
    end;
  end;
end; 

Delphi Demosu

Windows için sgcWebSockets Enterprise kullanan, OpenAI Assistants'ın derlenmiş bir demosunu aşağıda bulabilirsiniz.