Assistants API 允许您在自己的应用程序中构建 AI 助手。助手拥有指令,可以利用模型、工具和文件响应用户查询。Assistants API 目前支持三种工具类型:代码解释器、文件搜索和函数调用。
概览
Assistants API 的典型集成流程如下:
- 通过定义自定义指令并选择模型来创建助手。如有需要,可添加文件并启用代码解释器、文件搜索和函数调用等工具。
- 当用户开始对话时创建一个线程(Thread)。
- 随着用户提问,向线程中添加消息(Message)。
- 在线程上运行助手,通过调用模型和工具来生成响应。
步骤 1:创建助手
助手代表一个可配置的实体,通过模型、指令和工具等参数响应用户消息。
// ... 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();
步骤 2:创建线程
线程(Thread)代表用户与一个或多个助手之间的对话。当用户(或您的 AI 应用程序)开始与助手对话时,您可以创建一个线程。
oThread := oAssistant.CreateThread;
步骤 3:向线程添加消息并运行
用户或应用程序创建的消息内容将作为消息对象添加到线程中。消息可以包含文本和文件。可添加到线程的消息数量没有限制——系统会智能截断不适合模型上下文窗口的内容。
将所有用户消息添加到线程后,您可以使用任何助手运行该线程。创建运行(Run)将使用与助手关联的模型和工具来生成响应。这些响应将作为助手消息添加到线程中。
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 示例
以下是使用 sgcWebSockets Enterprise 在 Windows 上运行的 OpenAI Assistants 编译示例。
