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.
| Bestandsformaat | MIME-type |
|---|---|
.c | text/x-c |
.cpp | text/x-c++ |
.cs | text/x-csharp |
.css | text/css |
.doc | application/msword |
.docx | application/vnd.openxmlformats-officedocument.wordprocessingml.document |
.go | text/x-golang |
.html | text/html |
.java | text/x-java |
.js | text/javascript |
.json | application/json |
.md | text/markdown |
.pdf | application/pdf |
.php | text/x-php |
.pptx | application/vnd.openxmlformats-officedocument.presentationml.presentation |
.py | text/x-python |
.py | text/x-script.python |
.rb | text/x-ruby |
.sh | application/x-sh |
.tex | text/x-tex |
.ts | application/typescript |
.txt | text/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;
