挨拶
ども!すごく良い調子で弊社開催の「#2024アドベントカレンダー」が進んでいます。内容としても様々な内容が投稿されていて、弊社の特徴が出ていて素晴らしいですね。
今期は、【Streamlit】【Qumcum】【AIエージェント】の3つを掛け合わせて、ロボットを操作するAIエージェントを作成しました。
AIエージェントでロボットを制御する【langchain・Streamlit】このデモの過程で、今回の内容がすごく面白いと感じたので注目して書いていきたいと思います。今回の内容は以下の通りです。
- 日本人が感覚で理解している「表現」を数値化する
生成AIでニュアンスを数値化する
これまで、「文章から特定の評価に従って数値化」には時間と手間がかかっていました。生成AIを活用することで、プロンプトのみで数値化することができるようになっています。今回はサンプルとして検証した内容を公開していきます。
シンプルな数値化
とても単純な方法は、以下のようなプロンプトを入力すればよいです。
文章に含まれる、喜びの感情を1~100で数値化してください。
{{input}}
例えば、「とてもうれしい」という入力をChatGPTに投げかけてみます。
「とてもうれしい」に含まれる喜びの感情を1~100で数値化すると、98と評価できます。
理由:
「とても」という強調表現が、喜びの度合いを極めて高めているため、ほぼ最大値に近い値を割り当てます。
最大値である100を絶対的なピークとすると、「とてもうれしい」はそれに非常に近い表現と考えられます。
単純な数値のみでなく理由も返答されてきました。数値化した内容の利用用途に寄りますが、プロンプトで出力を制限することができます。
文章に含まれる、喜びの感情を1~100で数値化してください。
- 出力結果は数字のみにしてください。
{{input}}
プロンプトに一行追加するだけで出力を数字のみに限定することができます。また、数値の範囲も範囲を変更することで判断して出力してくれます。
指標を追加する
シンプルな方法で「喜び」の感情を数値化しました。ここでは、もう少し深堀していきたいと思います。シンプルな実装方法の場合だと、「とても」や「めっちゃ」などの表現が入っていれば、最大点となります。それを制限する方法は、以下のような手段が挙げられます。
- 例を与えて最大点を引き下げる:Few-Shot One-Shot
- 制限を追加する
例を与えて最大点を引き下げる方法
シンプルな実装では、「とても」や「めっちゃ」で最大点になります。プロンプト内でサンプルとして、採点した情報を与えることで最大点をずらすことができます。
文章に含まれる、喜びの感情を1~100で数値化してください。
- 出力結果は数字のみ
例は以下になります。
- とてもうれしい:20
{{input}}
サンプルの数値を下げることで、判別の閾値を下げることができます。よく使われる表現などをまとめてサンプルとして与えてあげることで、よりサンプルの感覚に近い数値をはじき出せるようになります。
値を散らす方法に関しては、後輩が検証している記事があったので紹介しておきます。
制限を追加する
こちらの方法では、追加の制限を設けることで点数を散らす方法について紹介します。制限については以下のような内容から選択すると良いと思います。
- よく使われる表現の場合は減点してください
- 面白い表現の場合は加点してください
- 古風な表現を用いた場合は加点してください
- 比喩表現は良いですね~加点しましょう
加点や減点の指標が衝突する可能性もあるので、制限をすべて追加するわけにはいきません。利用目的に即した制限を追加する必要があります。
個人的には「よく使われる表現の場合は減点してください」を追加するだけで評価指標が大きく変わるのが面白いですね。
文章に含まれる、喜びの感情を1~100で数値化してください。
- 出力結果は数字のみ
- よく使われる表現の場合は減点してください
{{input}}
ニュアンス数値化を使ってみた
今回紹介した、数値化を行っているデモは二つ作成していました。軽ーく紹介しておきますね。
泳げ!進め!カツオくん
このゲームでは、「音声認識」と「生成AI」をベースに考えたゲームになります。ゲーム内では、「感情」を数値化して活用しています。
文字列の長さで魚の位置を決定して障害物をよけて進みます。音声入力されたテキストを数値化し、スコアとして加点していくことで競うゲームですね。
ロボットを操作する:AIエージェント
こちらは、「AIエージェント」「ロボット」をベースに考えたデモになります。デモでは、「表現」を数値化して活用しています。
こちらのデモでは、ユーザーの入力から内容をAIエージェントに処理してもらい、ロボットの出力として動作してもらいます。ダンスの項目では、生成AIの実行の結果として実行回数と実行スピードを受け取ることができます。
サンプルでは「日本舞踊のようなスピード」と「最高のスピード」とで実行してみました。結果としては、日本舞踊は「ゆっくり」と最高のスピードは「あらぶり」という結果になりました。
絶妙なニュアンスに関しても生成AIは拾うことができるので面白いです。
デモは、こちらにまとまっています。
終わり
今回は生成AIを使って、テキストからニュアンスを数値化する方法を紹介しました。プロンプトの工夫次第で、より精度の高い数値化が可能になることが分かりました。この技術を活用することで、様々な面白いアプリケーションが作れそうですね。これまでなかなか数値化しにくい業界にも入り込みやすくなりました。
ではまた!