ai.chat (AIチャット)
ai.chatは、AIチャットサービスと相互作用するためのさまざまなメソッドとプロパティを提供するオブジェクトです。
1. メソッド
prompt (AIチャットプロンプト)
import { eliceContents } from 'src/constants';
eliceContents.ai.chat.prompt('小学生が簡単に解ける問題を作成します...', {
systemInstruction: '...',
});
// { session: '550e8400-e29b-41d4-a716-446655440000', contentResponse: '小学生が簡単に解ける問題を作成します...' }
このメソッドを使用してAIチャットの応答を生成できます。プロンプトを設定して応答を生成できます。最初の引数はプロンプト内容で、二番目の引数は構成です。構成はオプションで、次のようなオプションを提供します:
systemInstruction: システムの指示内容を設定でき、この引数を渡すことでシステムの指示内容が常に再定義されます。
⚠️ 応答の場合、セッションIDとAIコンテンツの応答が返されます。ユーザーがページをリフレッシュしてもチャットメッセージを再ロードするには、このセッションIDをKVストアまたはローカルストレージに保存する必要があります。
load (AIチャットロード)
import { eliceContents } from 'src/constants';
const initChat = async () => {
const sessions = await eliceContents.getKeyValue({ key: 'sessions' });
const firstSession = sessions[0];
if (firstSession) {
eliceContents.ai.chat.load(firstSession); // [{ role: 'system', content: '小学生が簡単に解ける問題を作成します...', ts: 1634025600000 }, ...]
}
};
このメソッドを使用してAIチャットサービスでチャットメッセージをロードできます。最初の引数はプロンプトメソッドで取得したセッションIDです。
応答としてチャットメッセージの配列が返されます。各チャットメッセージにはrole、content、tsが含まれます。
roleは現在3つに区分されます:
system: システム指示内容assistant: AI応答内容user: ユーザー入力内容
clear (AIチャットクリア)
サーバーに保存された特定のセッションのチャットメッセージをクリアするにはこのメソッドを使用します。最初の引数はpromptメソッドで取得したセッションIDです。
import { eliceContents } from 'src/constants';
const clearChat = async () => {
await eliceContents.ai.chat.clear('550e8400-e29b-41d4-a716-446655440000');
};
reset (AIチャットリセット)
このメソッドは現在のセッションのチャットメッセージをリセットするために使用されます。現在のsessionIdとメッセージのローカルデータを初期化します。
import { eliceContents } from 'src/constants';
const startNewChat = () => {
eliceContents.ai.chat.reset();
eliceContents.ai.chat.prompt('小学生が簡単に解ける問題を作成します...', {
systemInstruction: '...',
});
};
subscribes (AIチャットサブスクライブ)
subscribeは、複数のチャットイベントを聴取できるようにするメソッドです。イベントが発生したときに実行されるイベントリスナーを最初の引数に渡します。
import { eliceContents } from 'src/constants';
eliceContents.ai.chat.subscribe(event => {
console.log(event); // { type: 'comment', payload: { role: 'assistant', content: '小学生が簡単に解ける問題を作成します...', ts: 1634025600000 } }
});
イベントはtypeとpayloadで構成されており、次のように区分されます:
- comment: チャットメッセージが追加されるときにイベントが発生します。
payloadはchatMessageです。 - clear: チャットセッションが削除されるときにイベントが発生します。
payloadはsessionIdです。 - reset: 現在のチャットセッションがリセットされるときにイベントが発生します。
payloadはnullです。 - load: チャットメッセージがロードされるときにイベントが発生します。
payloadはchatMessage配列です。
import { eliceContents } from 'src/constants';
const { unsubscribe } = eliceContents.ai.chat.subscribe(/* イベントリスナー */);
unsubscribe(); // イベントリスナー購読のキャンセル