会話履歴
Amplify AI kitは、ユーザーごとに会話履歴を自動的かつ安全に保存するため、過去の会話を簡単に再開できます。
Amplifyデータスキーマで会話ルートを定義すると、Amplify AI kitはそれを2つのデータモデルに変換します:ConversationとMessageです。Conversationモデルはスキーマで定義された他のデータモデルとほぼ同じように機能します。それらをリストしてフィルタリングできます(オーナーベースの認可を使用するため、ユーザーは自分の会話のみが表示されます)。また、IDで特定の会話を取得できます。会話インスタンスを取得したら、その中にメッセージがある場合はそれらを読み込み、メッセージを送信し、返されるストリームイベントをサブスクライブできます。
会話をリストする
ユーザーが持つすべての会話をリストするには、.list()メソッドを使用できます。これは他のAmplifyデータモデルと同じように機能します。オプションでlimitまたはnextTokenを渡すことができます。
const { data: conversations } = await client.conversations.chat.list()updatedAtフィールドは新しいメッセージが送信されたときに更新されるため、これを使用して最新のメッセージを持つ会話を確認できます。.list()を介して取得された会話は、updatedAtによって降順でソートされます。
ページネーション
.list()の結果にはnextTokenプロパティが含まれます。これは後続の会話ページを取得するために使用できます。
const { data: conversations, nextToken } = await client.conversations.chat.list();
// 次のページを取得if (nextToken) { const { data: nextPageConversations } = await client.conversations.chat.list({ nextToken });}会話にはnameとmetadataフィールドもあり、過去の会話を簡単に見つけて再開するために使用できます。nameは文字列で、metadataはJSONオブジェクトなので、必要な追加情報を保存できます。
会話を再開する
会話IDを使用して.get()メソッドを呼び出すことで、会話を再開できます。.create()と.get()の両方が会話インスタンスを返します。
export function Chat({ id }) { const [ data: { messages } handleSendMessage, ] = useAIConversation('chat', { id })}