OpenAI Assistants File Search

· Functies

Vanaf sgcWebSockets 2024.10.0 kun je de OpenAI Assistants gebruiken om in je eigen bestanden te zoeken in plaats van het generieke model te gebruiken.

File Search verrijkt de Assistant met kennis van buiten zijn model, zoals eigen productinformatie of documenten geleverd door je gebruikers. OpenAI parseert en chunkt je documenten automatisch, maakt en bewaart de embeddings en gebruikt zowel vector- als trefwoordzoekopdrachten om relevante inhoud op te halen voor het beantwoorden van gebruikersvragen.

Ondersteunde bestanden

Ondersteunde bestanden

Voor text/ MIME-typen moet de codering een van utf-8, utf-16 of ascii zijn.

BestandsformaatMIME-type
.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

Stap 1: Een nieuwe Assistant aanmaken met File Search ingeschakeld

Maak een nieuwe assistant aan met file_search ingeschakeld in de tools-parameter van de Assistant. 

Zodra de file_search-tool is ingeschakeld, beslist het model wanneer er content moet worden opgehaald op basis van gebruikersberichten.

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;

Stap 2: Bestanden uploaden en toevoegen aan een Vector Store

Om toegang te krijgen tot je bestanden gebruikt de file_search-tool het Vector Store-object. Upload je bestanden en maak een Vector Store om ze te bevatten. 

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; 

Stap 3: Een run aanmaken en de output controleren

Maak nu een Run aan en zie dat het model de File Search-tool gebruikt om een antwoord te geven op de vraag van de gebruiker. 

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;