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(); // イベントリスナー購読のキャンセル
このメソッドはunsubscribe
メソッドを含むオブジェクトを返します。このメソッドを使用してイベントリスナーの購読をキャンセルできます。
2. プロパティ
sessionId (セッションID)
このプロパティはAIチャットの固有識別子です。初めてはnull
です。prompt
またはload
メソッドを呼び出すことでチャットメッセージを取得すると、セッションIDが生成されます。
import { eliceContents } from 'src/constants';
eliceContents.subscribe(event => {
switch (event.type) {
case 'prompt':
console.log(eliceContents.ai.chat.sessionId); // '550e8400-e29b-41d4-a716-446655440000'
break;
case 'reset':
console.log(eliceContents.ai.chat.sessionId); // null
break;
}
});
chatMessages (チャットメッセージ)
このプロパティはチャットメッセージの配列です。現在のセッションのチャットメッセージを含んでいます。初めては空の配列です。load
またはprompt
メソッドを呼び出すとチャットメッセージで満たされます。reset
メソッドを呼び出すと空になります。
import { eliceContents } from 'src/constants';
eliceContents.subscribe(event => {
switch (event.type) {
case 'load':
console.log(eliceContents.ai.chat.chatMessages); // [{ role: 'system', content: '小学生が簡単に解ける問題を作成します...', ts: 1634025600000 }, ...]
break;
case 'comment':
console.log(eliceContents.ai.chat.chatMessages); // [{ role: 'system', content: '小学生が簡単に解ける問題を作成します...', ts: 1634025600000 }, ...]
break;
case 'clear':
console.log(eliceContents.ai.chat.chatMessages); // []
break;
case 'reset':
console.log(eliceContents.ai.chat.chatMessages); // []
break;
}
});