OpenAI Assistants pour Delphi

· Composants

L'API Assistants te permet de construire des assistants IA dans tes propres applications. Un Assistant dispose d'instructions et peut tirer parti de modèles, d'outils et de fichiers pour répondre aux requêtes des utilisateurs. L'API Assistants prend actuellement en charge trois types d'outils : Code Interpreter, File Search et Function Calling.


Aperçu

Une intégration typique de l'API Assistants suit le flux suivant :

Étape 1 : créer un Assistant

Un Assistant représente une entité qui peut être configurée pour répondre aux messages d'un utilisateur via plusieurs paramètres comme le modèle, les instructions et les outils. 

// ... créer un nouvel assistant
oAssistant := TsgcAIOpenAIAssistant.Create(nil);
// ... définir ta clé api
oAssistant.OpenAIOptions.ApiKey := txtAPIKey.Text;
// ... options de l'assistant
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';
// ... créer l'assistant
oAssistant.CreateAssistant(); 

Étape 2 : créer un Thread

Un Thread représente une conversation entre un utilisateur et un ou plusieurs Assistants. Tu peux créer un Thread lorsqu'un utilisateur (ou ton application IA) démarre une conversation avec ton Assistant. 

oThread := oAssistant.CreateThread; 

Étape 3 : ajouter un Message au Thread et exécuter

Le contenu des messages créés par tes utilisateurs ou tes applications est ajouté au Thread sous forme d'objets Message. Les Messages peuvent contenir à la fois du texte et des fichiers. Il n'y a pas de limite au nombre de Messages que tu peux ajouter à un Thread — nous tronquons intelligemment tout contexte qui ne tient pas dans la fenêtre de contexte du modèle.

Une fois que tous les Messages utilisateur ont été ajoutés au Thread, tu peux exécuter le Thread avec n'importe quel Assistant. La création d'un Run utilise le modèle et les outils associés à l'Assistant pour générer une réponse. Ces réponses sont ajoutées au Thread sous forme de Messages d'assistant.

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
  begin
    oRun := oAssistant.CreateRunAndWait(oThread.Id);
    if Assigned(oRun) then
    begin
      oMessages := oAssistant.GetMessages(oThread.Id, oRun.Id);
      if Assigned(oMessages) and (Length(oMessages.Messages) > 0) then
      begin
        for i := 0 to Length(oMessages.Messages) - 1 do
          DoLog('[assistant]: ' + DoFormatResponse(oMessages.Messages[i].ContentText + #13#10));
      end;
    end;
  end;
end; 

Démo Delphi

Tu trouveras ci-dessous une démo compilée des OpenAI Assistants utilisant sgcWebSockets Enterprise pour Windows.