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

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です。

応答としてチャットメッセージの配列が返されます。各チャットメッセージにはrolecontenttsが含まれます。

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 } }
});

イベントはtypepayloadで構成されており、次のように区分されます:

  • comment: チャットメッセージが追加されるときにイベントが発生します。payloadchatMessageです。
  • clear: チャットセッションが削除されるときにイベントが発生します。payloadsessionIdです。
  • reset: 現在のチャットセッションがリセットされるときにイベントが発生します。payloadnullです。
  • load: チャットメッセージがロードされるときにイベントが発生します。payloadchatMessage配列です。
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;
}
});