À partir de sgcWebSockets 2024.10.0, tu peux utiliser les OpenAI Assistants pour effectuer des recherches dans tes propres fichiers au lieu d'utiliser le modèle générique.
File Search enrichit l'Assistant avec des connaissances issues de l'extérieur de son modèle, comme des informations produit propriétaires ou des documents fournis par tes utilisateurs. OpenAI analyse et découpe automatiquement tes documents, crée et stocke les embeddings, et utilise à la fois la recherche vectorielle et la recherche par mots-clés pour récupérer le contenu pertinent et répondre aux requêtes des utilisateurs.
Fichiers pris en charge
Fichiers pris en charge
Pour les types MIME text/, l'encodage doit être l'un de utf-8, utf-16 ou ascii.
| Format de fichier | Type MIME |
|---|---|
.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 |
Étape 1 : créer un nouvel Assistant avec File Search activé
Crée un nouvel assistant avec file_search activé dans le paramètre tools de l'Assistant.
Une fois l'outil file_search activé, le modèle décide quand récupérer le contenu en fonction des messages utilisateur.
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;
Étape 2 : télécharger des fichiers et les ajouter à un Vector Store
Pour accéder à tes fichiers, l'outil file_search utilise l'objet Vector Store. Télécharge tes fichiers et crée un Vector Store pour les contenir.
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;
Étape 3 : créer un run et vérifier la sortie
Crée maintenant un Run et observe que le modèle utilise l'outil File Search pour fournir une réponse à la question de l'utilisateur.
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;
