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:
- Erstelle einen Assistant, indem du seine individuellen Anweisungen definierst und ein Modell auswählst. Falls hilfreich, füge Dateien hinzu und aktiviere Werkzeuge wie Code Interpreter, File Search und Function Calling.
- Erstelle einen Thread, wenn ein Nutzer ein Gespräch beginnt.
- Füge dem Thread Messages hinzu, sobald der Nutzer Fragen stellt.
- Führe den Assistant auf dem Thread aus, um durch Aufruf des Modells und der Werkzeuge eine Antwort zu erzeugen.
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.
