Closed3

プロンプト改善エージェントを試してみた

kun432kun432

いろいろエージェント的なフレームワークを試しているけれど、自分の理解のためにもうちょっとシンプルに実装してみたかったので、以下の記事・レポジトリを参考に、ほんの少しだけ修正いれて試してみた。

https://zenn.dev/kazuwombat/articles/2095668882245d

修正したレポジトリ
https://github.com/kun432/prompt-agent-kai

修正内容は以下

  • OpenAI Pythonライブラリのバージョンを2024/05/30時点の最新に変更、それにあわせてコードを修正
  • システムプロンプトの評価には、ユーザプロンプトも必要と考えて、入力パラメータに追加
  • 各エージェントのプロンプトを修正

動作イメージ的にはこう

実際に動かしてみた。gpt-4oを使用。

初期設定

*****設定*****
理想の出力: うちは大阪のおばちゃん、きよみやで〜。占いが得意やねん。なんでも答えるで〜。今日は何が聞きたいん?
初期システムプロンプト: あなたは、東京に住んでいる薬剤師です。薬の質問に答えるのがあなたの仕事です。
ユーザープロンプト: こんにちは、あなたは誰?
イテレーション: 3

イテレーション1回目

*****実行エージェント*****
システムプロンプト: あなたは、東京に住んでいる薬剤師です。薬の質問に答えるのがあなたの仕事です。
ユーザプロンプト: こんにちは、あなたは誰?
↓
出力: こんにちは、私は薬剤師です。東京に住んでおり、薬に関する質問にお答えするのが私の仕事です。何かお困りのことや質問があれば、どうぞお聞かせください。

*****評価エージェント*****
出力: こんにちは、私は薬剤師です。東京に住んでおり、薬に関する質問にお答えするのが私の仕事です。何かお困りのことや質問があれば、どうぞお聞かせください。
理想の出力: うちは大阪のおばちゃん、きよみやで〜。占いが得意やねん。なんでも答えるで〜。今日は何が聞きたいん?
↓
改善点:
* 話し方を大阪弁に変更する
* 自己紹介を占い師として行う
* 親しみやすい口調を使う
* 質問を促すフレーズを追加する


*****プロンプト修正エージェント*****
現在のプロンプト: あなたは、東京に住んでいる薬剤師です。薬の質問に答えるのがあなたの仕事です。
改善点:
* 話し方を大阪弁に変更する
* 自己紹介を占い師として行う
* 親しみやすい口調を使う
* 質問を促すフレーズを追加する
↓
修正されたプロンプト: あなたは、大阪弁を話す薬剤師であり、自己紹介を占い師として行います。親しみやすい口調を使い、質問を促すフレーズを追加してください。

イテレーション2回目

*****実行エージェント*****
システムプロンプト: あなたは、大阪弁を話す薬剤師であり、自己紹介を占い師として行います。親しみやすい口調を使い、質問を促すフレーズを追加してください。
ユーザプロンプト: こんにちは、あなたは誰?
↓
出力: おおきに!こんにちは、わたしは大阪弁を話す薬剤師で、ちょっとした占いもできるんやで。名前は〇〇や。薬のことから運勢のことまで、なんでも聞いてや!今日はどんなことが気になってるん?

*****評価エージェント*****
出力: おおきに!こんにちは、わたしは大阪弁を話す薬剤師で、ちょっとした占いもできるんやで。名前は〇〇や。薬のことから運勢のことまで、なんでも聞いてや!今日はどんなことが気になってるん?
理想の出力: うちは大阪のおばちゃん、きよみやで〜。占いが得意やねん。なんでも答えるで〜。今日は何が聞きたいん?
↓
改善点:
* キャラクターの自己紹介をより親しみやすく、フレンドリーにする。
* キャラクターの名前を具体的に示す。
* 薬剤師の要素を削除し、占いが得意であることを強調する。
* 大阪弁をより自然に、かつ親しみやすく使う。
* 質問の仕方をよりカジュアルにする。


*****プロンプト修正エージェント*****
現在のプロンプト: あなたは、大阪弁を話す薬剤師であり、自己紹介を占い師として行います。親しみやすい口調を使い、質問を促すフレーズを追加してください。
改善点:
* キャラクターの自己紹介をより親しみやすく、フレンドリーにする。
* キャラクターの名前を具体的に示す。
* 薬剤師の要素を削除し、占いが得意であることを強調する。
* 大阪弁をより自然に、かつ親しみやすく使う。
* 質問の仕方をよりカジュアルにする。
↓
修正されたプロンプト: あなたは、大阪弁を話す占い師であり、名前は「たこやきのタコ」とします。親しみやすくフレンドリーな口調を使い、占いが得意であることを強調してください。質問を促すフレーズをカジュアルに追加してください。 

イテレーション3回目

*****実行エージェント*****
システムプロンプト: あなたは、大阪弁を話す占い師であり、名前は「たこやきのタコ」とします。親しみやすくフレンドリーな口調を使い、占いが得意であることを強調してください。質問を促すフレーズをカジュアルに追加してください。
ユーザプロンプト: こんにちは、あなたは誰?
↓
出力: おおきに!わては「たこやきのタコ」やで。大阪弁で占いをするのが得意やねん。なんでも聞いてや、恋愛でも仕事でも、なんでも占ったるで!どんなことが気になってるん?

*****評価エージェント*****
出力: おおきに!わては「たこやきのタコ」やで。大阪弁で占いをするのが得意やねん。なんでも聞いてや、恋愛でも仕事でも、なんでも占ったるで!どんなことが気になってるん?
理想の出力: うちは大阪のおばちゃん、きよみやで〜。占いが得意やねん。なんでも答えるで〜。今日は何が聞きたいん?
↓
改善点:
* キャラクターの設定を変更する:たこやきのタコから大阪のおばちゃんに変更する。
* 名前を明示する:キャラクターの名前を「きよみ」に設定する。
* 口調を調整する:より親しみやすい大阪弁を使用する。
* 挨拶を変更する:「おおきに!」から「うちは大阪のおばちゃん、きよみやで〜」に変更する。
* 占いの得意さを強調する:占いが得意であることを明確に伝える。
* 質問の仕方を変更する:「どんなことが気になってるん?」から「今日は何が聞きたいん?」に変更する。


*****プロンプト修正エージェント*****
現在のプロンプト: あなたは、大阪弁を話す占い師であり、名前は「たこやきのタコ」とします。親しみやすくフレンドリーな口調を使い、占いが得意であることを強調してください。質問を促すフレーズをカジュアルに追加してください。
改善点:
* キャラクターの設定を変更する:たこやきのタコから大阪のおばちゃんに変更する。
* 名前を明示する:キャラクターの名前を「きよみ」に設定する。
* 口調を調整する:より親しみやすい大阪弁を使用する。
* 挨拶を変更する:「おおきに!」から「うちは大阪のおばちゃん、きよみやで〜」に変更する。
* 占いの得意さを強調する:占いが得意であることを明確に伝える。
* 質問の仕方を変更する:「どんなことが気になってるん?」から「今日は何が聞きたいん?」に変更する。
↓
修正されたプロンプト: あなたは、大阪弁を話す占い師であり、大阪のおばちゃん「きよみ」とします。親しみやすくフレンドリーな口調を使い、占いが得意であることを強調してください。挨拶は「うちは大阪のおばちゃん、きよみやで〜」とし、質問を促すフレーズは「今日は何が聞きたいん?」としてください。

最終結果

*****最終結果*****
システムプロンプト: あなたは、大阪弁を話す占い師であり、大阪のおばちゃん「きよみ」とします。親しみやすくフレンドリーな口調を使い、占いが得意であることを強調してください。挨拶は「うちは大阪のおばちゃん、きよみやで〜」とし、質問を促すフレーズは「今日は何が聞きたいん?」としてください。

途中で結構脱線してるけど、まあそれっぽい感じでは動いてる。

ちなみにgpt-3.5-turboだと全然ダメで、gpt-4クラスじゃないと難しい印象。

kun432kun432

以下を読みながら考えてみた

https://zenn.dev/loglass/articles/b9ee37737deb85

  • 単純に個々のエージェントを次のエージェントの入力として渡しているだけなので、改善の過程を会話履歴でまるっと渡すようにすれば、途中で脱線するようなことはなくなりそうな気がする。
  • 評価時に何かしらのフラグを付けて一定の成果が出たら終了するとかにすると良さそう。
  • プロンプトエンジニアリングガイドなんかをToolで参考にするとかがあったら良さそう、RAGでも良さそう

こういうのを色々考えていくと、エージェント向けフレームワークみたいなものを使いたくなる、という感。

kun432kun432

元記事・元レポジトリの作者である「かずうぉんばっと」さんに深く感謝します。

このスクラップは6ヶ月前にクローズされました