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
- OnStreamRun: run nesnesinde bir güncelleme olduğunda olay çağrılır.
- OnStreamMessage: message nesnesinde bir güncelleme olduğunda olay çağrılır: oluşturuldu, devam ediyor, tamamlandı...
- OnStreamMessageDelta: Bir Mesajın parçaları akıtılırken gerçekleşir.
- OnStreamDone: Bir hata oluştuğunda gerçekleşir. Bu, bir dahili sunucu hatası veya bir zaman aşımı nedeniyle olabilir.
- OnStreamError: Bir akış sona erdiğinde gerçekleşir.
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.
