The Assistants API allows you to build AI assistants within your own applications. An Assistant has instructions and can leverage models, tools, and files to respond to user queries. The Assistants API currently supports three types of tools: Code Interpreter, File Search, and Function calling.
A typical integration of the Assistants API has the following flow:
An Assistant represents an entity that can be configured to respond to a user's messages using several parameters like model, instructions, and 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();
A Thread represents a conversation between a user and one or many Assistants. You can create a Thread when a user (or your AI application) starts a conversation with your Assistant.
oThread := oAssistant.CreateThread;
The contents of the messages your users or applications create are added as Message objects to the Thread. Messages can contain both text and files. There is no limit to the number of Messages you can add to Threads — we smartly truncate any context that does not fit into the model's context window.
Once all the user Messages have been added to the Thread, you can Run the Thread with any Assistant. Creating a Run uses the model and tools associated with the Assistant to generate a response. These responses are added to the Thread as assistant Messages.
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;
Find below a compiled demo of OpenAI Assistants using sgcWebSockets Enterprise for Windows.
When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.