長期にわたる AI 会話
ユニークな AI エクスペリエンスをユーザーに提供するために、AI アシスタント、会話スレッド、コンテキストファイルを管理します
AI アシスタントを用いると、会話はスレッド内で行われ、アシスタントは進行中の会話から情報を組み入れることができます。これにより、ユーザーとパーソナルかつグローバルなレベルで繋がることができるオーダーメイドな体験が実現します。
Benefits
- ユーザーセッション全体にわたる会話履歴にアクセスでき、必要なときに適切な情報を正しい人々に届けることができます。
- コンテキストとしてファイルを取り込み、適切に応答できるアシスタントレベルで、グローバルなユーザーサポートを提供します。
- スレッドレベルでユニークな体験をユーザーに提供し、特定のニーズに応じた関連性の高いやりとりを実現します。
- 多様なニーズに合わせた固有の指示を用いて、アシスタントやコンテキストを即時に生成します。
アシスタントと対話するには、Squid Client SDK を使用してください。
Squid AI アシスタントは管理者アクセスを必要とするため、そのメソッドは Squid バックエンドで実行する必要があります。
アシスタントクライアントの作成
アシスタントの操作を行うには、まず ai().assistant() メソッドを使用してアシスタントクライアントを作成します:
const assistantClient = squid.ai().assistant();
アシスタントの作成
新しい AI アシスタントを作成するには、createAssistant メソッドを使用します。このメソッドは以下のパラメータを取ります:
- name - アシスタントの名前。
- instructions - アシスタントへの指示。例: 「You are a pirate; only answer questions like a pirate would.」
- functions - アシスタントが利用可能な Squid バックエンドで
@aiFunction注釈が付けられた関数名のオプションの配列。詳しくは documentation on AI functions をご覧ください。 - toolTypes - ツールタイプのオプションの配列。利用可能なツールタイプは 'code_interpreter' と 'retrieval' の 2 つです。code interpreter はサンドボックス化されファイアウォールで保護された実行環境内で稼働する Python インタープリターを利用します。retrieval は自然言語クエリを使用して、個人または組織の文書のセマンティック検索と取得を柔軟に実現します。
このメソッドは作成されたアシスタントの ID を解決する Promise を返します。アシスタント ID は、スレッドの追加・削除、ファイルの追加・削除、アシスタントの削除などの操作の管理に使用します。将来的なアクセスのために、アシスタント ID を Squid Client SDK と database connector を使用してデータベースに保存することができます。
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 を返します。
const threadId = await assistantClient.createThread(assistantId);
アシスタント ID と同様に、このスレッド ID も Squid Client SDK と database connector を用いてデータベースに保存して、後で会話にアクセスすることができます。
アシスタントにファイルを追加する
AI アシスタントに対して取得またはコード解析のためのファイルを追加するには、addFileToAssistant メソッドを使用し、アシスタント ID とファイルを渡します。このメソッドは、追加されたファイルの ID を解決する Promise を返します。
フロントエンドからファイルを追加する場合は File タイプを使用してください。
バックエンド環境からファイルを追加する場合は BlobAndFilename タイプを使用してください。
const fileId = await assistantClient.addFileToAssistant(assistantId, YOUR_FILE);
アシスタントからファイルを削除する
アシスタントからファイルを削除するには、removeFileFromAssistant メソッドを使用し、アシスタント ID と削除するファイルのファイル ID を渡します:
await assistantClient.removeFileFromAssistant(assistantId, fileId);
このメソッドは、ファイルが削除されたときに解決する Promise を返します。
スレッドにファイルを追加する
AI アシスタントは、会話中にコンテキストを即時に提供することをサポートしています。ユーザーは特定のスレッドに文書や画像を提供することができ、アシスタントはそれらのファイルに基づいてクエリに応答できます。
スレッドにファイルを追加するには、addFileToThread メソッドを使用し、スレッド ID とファイルを渡します。
フロントエンドからファイルを追加する場合は File タイプを使用してください。
バックエンド環境からファイルを追加する場合は BlobAndFilename タイプを使用してください。
const fileId = await assistantClient.addFileToThread(threadId, FILE_TO_ADD);
アシスタントにファイルを追加する場合と同様に、このメソッドは追加されたファイルの ID を解決する Promise を返します。
特定のスレッドに追加されたファイルは、そのスレッドでのみアクセス可能です。これらのファイルによって提供されたコンテキストは、同じアシスタント内の他のスレッドでは利用できません。
アシスタントにクエリを送信する
アシスタントに質問を送信するには、queryAssistant メソッドを使用し、アシスタント ID、スレッド ID、プロンプト、および関連ファイルのファイル ID を渡します。ファイル ID は指定されたスレッドに関連付けられています。
このメソッドはアシスタントの応答を解決する Promise を返します。
const response = await assistantClient.queryAssistant(
assistantId,
threadId,
"What is our company's policy on bringing pets to the office?",
fileId
);
デフォルトでは、クエリの応答は文字列形式です。JSON 形式の応答は、値を他の関数に渡したり、クエリまたは書き込みのようなデータベースの操作を実行したりするプロセスを簡易化できるため、タスクの自動化に非常に有用です。
クエリ応答タイプを指定するには、queryAssistant 呼び出し時にオプションの options パラメータを含めます:
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 を参照してください。
応答フォーマットに json_object を指定する場合、プロンプトに「JSON」という単語を含めなければなりません。
アシスタントの削除
アシスタントを削除するには、deleteAssistant メソッドを使用し、アシスタント ID を渡します。
この関数は、アシスタントが削除された際に解決する Promise を返します。
await assistantClient.deleteAssistant(assistantId);
スレッドの削除
スレッドを削除するには、deleteThread メソッドを使用し、スレッド ID を渡します。
この関数は、スレッドが削除された際に解決する Promise を返します。
await assistantClient.deleteThread(threadId);