L'API Assistants ti permette di costruire assistenti AI all'interno delle tue applicazioni. Un Assistant ha istruzioni e può sfruttare modelli, tool e file per rispondere alle query degli utenti. L'API Assistants supporta attualmente tre tipi di tool: Code Interpreter, File Search e Function calling.
Panoramica
Una tipica integrazione dell'API Assistants segue questo flusso:
- Crea un Assistant definendo le sue istruzioni personalizzate e scegliendo un modello. Se utile, aggiungi file e abilita tool come Code Interpreter, File Search e Function calling.
- Crea un Thread quando un utente avvia una conversazione.
- Aggiungi Message al Thread man mano che l'utente fa domande.
- Esegui (Run) l'Assistant sul Thread per generare una risposta chiamando il modello e i tool.
Passo 1: creare un Assistant
Un Assistant rappresenta un'entità che può essere configurata per rispondere ai messaggi di un utente usando diversi parametri come model, instructions e tools.
// ... 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();
Passo 2: creare un Thread
Un Thread rappresenta una conversazione tra un utente e uno o più Assistant. Puoi creare un Thread quando un utente (o la tua applicazione AI) avvia una conversazione con il tuo Assistant.
oThread := oAssistant.CreateThread;
Passo 3: aggiungere un Message al Thread ed eseguirlo
I contenuti dei messaggi che i tuoi utenti o applicazioni creano vengono aggiunti al Thread come oggetti Message. I Message possono contenere sia testo sia file. Non c'è limite al numero di Message che puoi aggiungere ai Thread: tronchiamo in modo intelligente qualsiasi contesto che non entra nella context window del modello.
Una volta aggiunti tutti i Message dell'utente al Thread, puoi eseguire il Thread con un qualsiasi Assistant. La creazione di un Run usa il modello e i tool associati all'Assistant per generare una risposta. Queste risposte vengono aggiunte al Thread come Message dell'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;
Demo Delphi
Qui sotto trovi una demo compilata di OpenAI Assistants che usa sgcWebSockets Enterprise per Windows.
