メインコンテンツまでスキップ

長期間にわたる AI 会話

AI アシスタント、会話スレッド、およびコンテキストファイルを管理して、ユーザーにユニークな AI エクスペリエンスを提供します

AI アシスタントでは、会話はスレッド内で行われ、アシスタントが進行中の会話から情報を取り入れることができます。これにより、個人的かつグローバルなレベルでユーザーと繋がるオーダーメイドの体験が実現します。

利点

  • ユーザーセッションを跨いで会話履歴にアクセスし、必要な時に適切な人に適切な情報を提供します。
  • ファイルをコンテキストとして取り込む機能を持つアシスタントレベルで、グローバル規模のユーザーサポートを実現します。
  • スレッド単位でユーザーにユニークな体験を提供し、特に関連性の高いインタラクションを可能にします。
  • 様々なニーズに合わせたユニークな指示で、新しいアシスタントやコンテキストを即時に生成します。

アシスタントと対話するには、Squid Client SDK を使用してください。

Note

Squid AI assistant には admin access が必要なため、そのメソッドは Squid backend で実行する必要があります。

アシスタントクライアントの作成

アシスタントの操作を行うには、まず ai().assistant() メソッドを使用してアシスタントクライアントを作成します:

Backend code
const assistantClient = squid.ai().assistant();

アシスタントの作成

新しい AI アシスタントを作成するには、createAssistant メソッドを使用します。このメソッドは以下のパラメータを取ります:

  • name - アシスタントの名前。
  • instructions - アシスタントへの指示。例: "You are a pirate; only answer questions like a pirate would."
  • functions - オプションの、Squid backend において @aiFunction で注釈された関数名の配列。詳細は documentation on AI functions を参照してください。
  • toolTypes - オプションのツールタイプの配列。利用可能なツールタイプは 'code_interpreter' と 'retrieval' の2種類です。Code interpreter はサンドボックス化されファイアウォールで保護された環境内で動作する Python インタープリターを使用します。Retrieval は自然言語クエリを使用して、個人または組織のドキュメントを柔軟にセマンティック検索および取得するためのソリューションを提供します。

このメソッドは、作成されたアシスタントの ID を返す promise を返します。アシスタント ID を使用して、スレッドの追加や削除、ファイルの追加や削除、アシスタントの削除などの操作を管理できます。将来的に利用するため、Squid Client SDKdatabase connector を使用して、アシスタント ID をデータベースに保存しておくことができます。

Backend code
const assistantId = await assistantClient.createAssistant(
'YOUR_ASSISTANT_NAME',
"YOUR ASSISTANT'S INSTRUCTIONS",
['AI_FUNCTION_NAME_1', 'AI_FUNCTION_NAME_2'],
['ASSISTANT_TOOL_TYPE_1', 'ASSISTANT_TOOL_TYPE_2']
);

スレッドの作成

AI アシスタントとの会話はスレッド内で行われます。各スレッドは、特定のアシスタントとの長期間持続する会話であり、質問を送信するためのものです。AI アシスタントと対話するには、少なくとも1つのスレッドが必要です。

新しいスレッドを作成するには、createThread メソッドを使用し、スレッドを作成する対象の AI アシスタントの ID を渡します。このメソッドは、AI アシスタント用の新しいスレッドを作成します。

このメソッドは、作成されたスレッドの ID を返す promise を返します。

Backend code
const threadId = await assistantClient.createThread(assistantId);

アシスタント ID と同様に、このスレッド ID をデータベースに保存することで、Squid Client SDKdatabase connector を使用して将来的に会話へアクセスできます。

アシスタントへのファイルの追加

取得やコード分析のために AI アシスタントにファイルを追加するには、addFileToAssistant メソッドを使用し、アシスタント ID とファイルを渡します。このメソッドは、追加されたファイルの ID を返す promise を返します。

フロントエンドからファイルを追加する場合は File 型を使用します。
バックエンド環境からファイルを追加する場合は BlobAndFilename 型を使用します。

Backend code
const fileId = await assistantClient.addFileToAssistant(assistantId, YOUR_FILE);

アシスタントからのファイルの削除

アシスタントからファイルを削除するには、removeFileFromAssistant メソッドを使用し、アシスタント ID と削除するファイルのファイル ID を渡します:

Backend code
await assistantClient.removeFileFromAssistant(assistantId, fileId);

このメソッドは、ファイルが削除されると解決される promise を返します。

スレッドへのファイルの追加

AI アシスタントは、会話中に動的にコンテキストを提供することをサポートしています。ユーザーは特定のスレッドにドキュメントや画像を提供でき、アシスタントはそれらのファイルに基づいてクエリに応答します。

スレッドにファイルを追加するには、addFileToThread メソッドを使用し、スレッド ID とファイルを渡します。

フロントエンドからファイルを追加する場合は File 型を使用します。
バックエンド環境からファイルを追加する場合は BlobAndFilename 型を使用します。

Backend code
const fileId = await assistantClient.addFileToThread(threadId, FILE_TO_ADD);
Note

特定のスレッドに追加されたファイルは、そのスレッドのみでアクセス可能です。これらのファイルによって提供されるコンテキストは、同じアシスタント内の他のスレッドでは利用できません。

アシスタントへのクエリ

アシスタントに質問を送信するには、queryAssistant メソッドを使用し、アシスタント ID、スレッド ID、プロンプト、および関連するファイルのファイル ID を渡します。ファイル ID は指定されたスレッドに紐付けられています。

このメソッドは、アシスタントの応答を返す promise を返します。

Backend code
const response = await assistantClient.queryAssistant(
assistantId,
threadId,
"What is our company's policy on bringing pets to the office?",
fileId
);

デフォルトでは、クエリの応答は文字列形式です。JSON 形式の応答は、値を他の関数に渡したり、データベースでのクエリや書き込みなどの操作を行う際にプロセスを簡素化するため、自動化タスクに非常に有用です。

クエリ応答の形式を指定するには、queryAssistant 呼び出し時にオプションの options パラメータを含めます:

Backend code
const response = await queryAssistant(
assistantId,
threadId,
"What is our company's policy on bringing pets to the office? Respond in JSON format",
fileId,
{ responseFormat: 'json_object' } // options
);

options オブジェクトには現在複数の属性があり、reference documentation で確認できます。

Note

応答形式として json_object を指定する場合、プロンプトに "JSON" という単語を含める必要があります。

アシスタントの削除

アシスタントを削除するには、deleteAssistant メソッドを使用し、アシスタント ID を渡します。

この関数は、アシスタントが削除されると解決される promise を返します。

Backend code
await assistantClient.deleteAssistant(assistantId);

スレッドの削除

スレッドを削除するには、deleteThread メソッドを使用し、スレッド ID を渡します。

この関数は、スレッドが削除されると解決される promise を返します。

Backend code
await assistantClient.deleteThread(threadId);