Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新(準備中)

Apr 18, 2023 - コメント - 日記

チャットアプリの会話コンテキストリデューサー:Motörhead

AI を活用したチャットアプリの開発では、会話のコンテキストをどのようにプロンプトに含めるかが重要な課題です。 単純なチャットアプリでは、例えば直近 5 件分の会話をプロンプトに含めて AI の返答を自然にしたりします。

しかし、会話の中には文脈に関係ない情報が多く含まれていることがあります。これを効率的に削減するために、文脈の「要約」を AI で行い、それをプロンプトに含める方法があります。

Motörhead は、こういったチャットアプリの実装を代わりに行ってくれるツールです。

Motörhead はRedisのフロントエンドとして機能し、既定の数(MOTORHEAD_MAX_WINDOW_SIZE default:12)以上のメッセージを受け取ると会話の要約処理を行います。Motörhead から会話を取得すると、以下のような要約されたコンテキストが付与された形式で返ってきます。

{
  "messages": [
    ...
  ],
  "context": "The conversation covers topics such as clubs for electronic music in Bogotá, popular tourist attractions in the city, and general information about Colombia. The AI provides information about popular electronic music clubs such as Baum and Video Club, as well as electronic music festivals that take place in Bogotá. The AI also recommends tourist attractions such as La Candelaria, Monserrate and the Salt Cathedral of Zipaquirá, and provides general information about Colombia's diverse culture, landscape and wildlife."
}

要約作成には、gpt-3.5-turboが利用されており、プロンプトは以下のようになっています。要約処理はProgressively summarizeという方式で、要約を次々と追加していく仕組みになっています。

Progressively summarize the lines of conversation provided, adding onto the previous summary returning a new summary. If the lines are meaningless just return NONE
...
Current summary:
{prev_summary}
New lines of conversation:
{messages_joined}
New summary:

Motörhead の使い方を試すために、簡単なチャットアプリのサンプル が公開されています。これを利用して、チャットアプリの開発を効率化しましょう。