Assistants API を使用すると、独自のアプリケーション内に AI アシスタントを構築できます。アシスタントには指示があり、モデル、ツール、ファイルを活用してユーザーのクエリに応答できます。Assistants API は現在、Code Interpreter、File Search、Function calling の 3 種類のツールをサポートしています。
概要
Assistants API の一般的な統合は以下の流れになります。
- カスタム指示を定義してモデルを選択し、アシスタントを作成します。必要に応じてファイルを追加し、Code Interpreter、File Search、Function calling などのツールを有効にします。
- ユーザーが会話を開始したら、スレッドを作成します。
- ユーザーが質問するたびに、メッセージをスレッドに追加します。
- スレッドでアシスタントを実行し、モデルとツールを呼び出して応答を生成します。
ステップ 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: スレッドの作成
スレッドは、ユーザーと 1 つまたは複数のアシスタントとの会話を表します。ユーザー (または AI アプリケーション) がアシスタントとの会話を開始するときに、スレッドを作成できます。
oThread := oAssistant.CreateThread;
ステップ 3: メッセージをスレッドに追加して実行
ユーザーまたはアプリケーションが作成したメッセージの内容は、Message オブジェクトとしてスレッドに追加されます。メッセージはテキストとファイルの両方を含めることができます。スレッドに追加できるメッセージ数に制限はありません — モデルのコンテキストウィンドウに収まらないコンテキストはスマートに切り詰められます。
すべてのユーザーメッセージがスレッドに追加されたら、任意のアシスタントでスレッドを実行できます。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 デモ
Windows 用 sgcWebSockets Enterprise を使用した OpenAI Assistants のコンパイル済みデモを以下に示します。
