OpenAI Assistants File Search

· Özellikler

sgcWebSockets 2024.10.0 sürümünden itibaren, genel modeli kullanmak yerine kendi dosyalarınızda arama yapmak için OpenAI Assistants'ı kullanabilirsiniz.

File Search, Asistanı modelinin dışındaki bilgilerle, örneğin tescilli ürün bilgileri veya kullanıcılarınızın sağladığı belgelerle zenginleştirir. OpenAI, belgelerinizi otomatik olarak ayrıştırır ve parçalara böler, embedding'leri oluşturup saklar ve kullanıcı sorgularını yanıtlamak için ilgili içeriği almak üzere hem vektör hem de anahtar kelime aramasını kullanır.

Desteklenen Dosyalar

Desteklenen dosyalar

text/ MIME türleri için kodlama şunlardan biri olmalıdır: utf-8, utf-16 veya ascii.

Dosya biçimiMIME türü
.ctext/x-c
.cpptext/x-c++
.cstext/x-csharp
.csstext/css
.docapplication/msword
.docxapplication/vnd.openxmlformats-officedocument.wordprocessingml.document
.gotext/x-golang
.htmltext/html
.javatext/x-java
.jstext/javascript
.jsonapplication/json
.mdtext/markdown
.pdfapplication/pdf
.phptext/x-php
.pptxapplication/vnd.openxmlformats-officedocument.presentationml.presentation
.pytext/x-python
.pytext/x-script.python
.rbtext/x-ruby
.shapplication/x-sh
.textext/x-tex
.tsapplication/typescript
.txttext/plain

Adım 1: File Search Etkin Yeni Bir Asistan oluşturun

Asistanın tools parametresinde file_search etkinleştirilmiş yeni bir asistan oluşturun. 

file_search aracı etkinleştirildikten sonra, model kullanıcı mesajlarına göre içeriğin ne zaman alınacağına karar verir.

Assistant := TsgcAIOpenAIAssistant.Create(nil);
Assistant.OpenAIOptions.ApiKey := 'sk-askdjfalskdjfl23kjkjasdefasdfj';
Assistant.AssistantOptions.Name := 'sgcWebSockets HelpDesk';
Assistant.AssistantOptions.Instructions.Text := 'You are a sgcWebSockets HelpDesk Agent. ' +
'Answer questions briefly, in a sentence or less. When asked a question,use the manual to answer the question.'
Assistant.AssistantOptions.Model := 'gpt-4o-mini';
Assistant.AssistantOptions.Tools.FileSearch.Enabled := True;
Assistant.AssistantOptions.Tools.CodeInterpreter.Enabled := False;

Adım 2: Dosyaları yükleyin ve bir Vector Store'a ekleyin

Dosyalarınıza erişmek için file_search aracı Vector Store nesnesini kullanır. Dosyalarınızı yükleyin ve bunları içerecek bir Vector Store oluşturun. 

procedure UploadFile();
var
  oDialog: TOpenDialog;
begin
  oDialog := TOpenDialog.Create(nil);
  Try
    if oDialog.Execute then
    begin
      Screen.Cursor := crHourGlass;
      Try
        Assistant.UploadVectorStoreFile('sgcVectorStore', oDialog.FileName);
      Finally
        Screen.Cursor := crDefault;
      End;
    end;
  Finally
    oDialog.Free;
  End;
end; 

Adım 3: Bir run oluşturun ve çıktıyı kontrol edin

Şimdi bir Run oluşturun ve modelin kullanıcının sorusuna yanıt vermek için File Search aracını kullandığını gözlemleyin. 

procedure SendMessage()
var
  i: Integer;
  oMessage: TsgcOpenAIClass_Message;
  oMessages: TsgcOpenAIClass_Response_List_Messages;
  oRun: TsgcOpenAIClass_Run;
begin
  DoLog('[user]: ' + memoMessage.Lines.Text);
  Screen.Cursor := crHourGlass;
  Try
    oMessage := Assistant.CreateMessageText('thread_id', 'Create a WebSocket Client that connects to eSeGeCe WebSocket Server');
    if Assigned(oMessage) then
    begin
      oRun := Assistant.CreateRunAndWait('thread_id');
      if Assigned(oRun) then
      begin
        oMessages := Assistant.GetMessages('thread_id', oRun.Id);
        if Assigned(oMessages) and (Length(oMessages.Messages) > 0) then
        begin
          memoMessage.Lines.Text := '';
          for i := 0 to Length(oMessages.Messages) - 1 do
            DoLog('[assistant]: ' + DoFormatResponse(oMessages.Messages[i]
              .ContentText + #13#10));
        end;
      end;
    end;
  Finally
    Screen.Cursor := crDefault;
  End;
end;