OpenAI Assistants Streaming

· Özellikler

OpenAI Assistant İstemcisi, bir run thread çağrılırken akış yanıtlarını uygulayacak şekilde geliştirildi. Bu yeni özellikten önce, tamamlanana kadar run nesnesi durumunun yoklanması gerekiyordu. Artık akış mesajlarını işlemek için yeni Stream olaylarını kullanabilirsiniz.


Akış Olayları

Asistandan gelen tam yanıtı beklemek yerine, yanıtı Server-Sent Events kullanarak akıtabilirsiniz. CreateRun işlevini kullanırken yalnızca Stream = True parametresini geçin; yanıt akış kullanacaktır.

Akış yanıtlarını işlemek için aşağıdaki olaylar kullanılır

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 Akış kullanarak Çalıştırın

Metninizi buraya girin ...

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
    oRun := oAssistant.CreateRun(oThread.Id, True);
end; 

Adım 4: Yanıtı İşleyin

Sunucu tarafından gönderilen akış mesajını okumak için OnStreamMessageDelta olayını kullanın. 

procedure OnStreamMessageDelta(Sender: TObject; const aMessageDelta: TsgcOpenAIClass_MessageDelta; const aRaw: string);
var
  i: Integer;
  vResponse: string;
  vType: string;
begin
  for i := Low(aMessageDelta.Content) to High(aMessageDelta.Content) do
  begin
    vType := aMessageDelta.Content[i]._Type;
    if vType = 'text' then
    begin
      vResponse := TsgcOpenAIClass_MessageDeltaContent_Text
        (aMessageDelta.Content[i]).Value;
    end;
  end;
end; 

OpenAI Delphi Örneği

Aşağıdaki sıkıştırılmış dosya, sgcWebSockets kitaplığı kullanılarak windows için oluşturulan Assistants demosunun kaynak kodunu içerir.