OpenAI Assistants für Delphi

· Komponenten

Mit der Assistants-API kannst du KI-Assistenten in deinen eigenen Anwendungen erstellen. Ein Assistant verfügt über Anweisungen und kann auf Modelle, Werkzeuge und Dateien zurückgreifen, um auf Nutzeranfragen zu antworten. Die Assistants-API unterstützt derzeit drei Werkzeugtypen: Code Interpreter, File Search und Function Calling.


Übersicht

Eine typische Integration der Assistants-API hat folgenden Ablauf:

Schritt 1: Einen Assistant erstellen

Ein Assistant ist eine Entität, die so konfiguriert werden kann, dass sie mit verschiedenen Parametern wie Modell, Anweisungen und Werkzeugen auf die Nachrichten eines Nutzers antwortet. 

// ... create a new assistant
oAssistant := TsgcAIOpenAIAssistant.Create(nil);
// ... set your api key
oAssistant.OpenAIOptions.ApiKey := txtAPIKey.Text;
// ... assistant options
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';
// ... create the assistant
oAssistant.CreateAssistant(); 

Schritt 2: Einen Thread erstellen

Ein Thread repräsentiert ein Gespräch zwischen einem Nutzer und einem oder mehreren Assistants. Du kannst einen Thread erstellen, sobald ein Nutzer (oder deine KI-Anwendung) ein Gespräch mit deinem Assistant beginnt. 

oThread := oAssistant.CreateThread; 

Schritt 3: Eine Nachricht zum Thread hinzufügen und ausführen

Die Inhalte der Nachrichten, die deine Nutzer oder Anwendungen erstellen, werden dem Thread als Message-Objekte hinzugefügt. Nachrichten können sowohl Text als auch Dateien enthalten. Es gibt keine Begrenzung für die Anzahl der Messages, die du einem Thread hinzufügen kannst – wir kürzen Kontext, der nicht in das Kontextfenster des Modells passt, intelligent.

Sobald alle Nutzer-Messages zum Thread hinzugefügt wurden, kannst du den Thread mit einem beliebigen Assistant ausführen. Beim Erstellen eines Runs werden das Modell und die mit dem Assistant verknüpften Werkzeuge verwendet, um eine Antwort zu erzeugen. Diese Antworten werden dem Thread als Assistant-Messages hinzugefügt.

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; 

Delphi-Demo

Unten findest du eine kompilierte Demo der OpenAI Assistants mit sgcWebSockets Enterprise für Windows.