生成AIを使ったプロダクト開発で得たプロンプトエンジニアリングのコツ
こんにちは、Anycloudのやましたです
生成AIを活用したプロダクト開発を行っており、そこで得た所感をまとめて共有したいと思います。
プロンプトに組み込む言葉の選択
生成AIとの対話で重要なポイントの一つが、基本的な「言葉選び」です。経験上、一定まで改善すると凝った技法よりも基本的な言葉の選び方の方が、改善に効果的でした。
例えば、あるシステムの評価基準を設定する際、最初は「効率的な処理」という表現を使っていました。しかし、この「効率的」という言葉が抽象的すぎて、AIの出力にブレが生じます。
抽象的な言葉を避け、具体的で解釈の範囲を狭められるワードやより適切な言葉を使っていくことが大切だと感じています。
すべてを網羅的にこなせるプロンプトよりも小さなプロンプト
最初は「一つのプロンプトでできるだけ多くのことをやらせよう」と考えて、実際にそのように組んでいました。でも、タスクを増やすと、プロンプトは不安定になっていきます。
1つのプロンプトに任せている役割が大きくなりすぎていたら注意が必要です。もっと任せているタスクを分解できないかは常に念頭におき、小分けにするという選択肢を持つと良いと思います。
n-shotプロンプティングは万能ではない
n-shotプロンプティングとは、LLMにタスクと望ましい出力を示すn個の例を提供するテクニックです。
n-shotプロンプティングで得た気づきは「使い方が難しい」ということです。
例示を設定すると、AIの出力はその例に引っ張られる傾向があります。これは配置による影響かもしれませんが、結果として柔軟性が低下することがありました。
不適切な例示を含めてしまうと、その影響を取り除くのが難しいものです。例示を入れる場合は、その網羅性と適切性に注意を払う必要があります。
Chain-of-Thoughtの効果
CoTとはLLMに段階的に推論を行わせ、高度な推論を可能にするプロンプトエンジニアリングのテクニックです。一番簡単なアプローチとしては「ステップバイステップで考えて」という文章を追加することです。
CoTは初期段階では効果が見られました。単純な指示だけのプロンプトにCoTを導入すると、AIの推論プロセスが明確になり、出力の質が良くなることが多かったです。
入れる/入れないだと入れたほうが良かったです。ただ、よりプロセスを具体的にするなどステップの具体性を上げても効果はほぼ変わりませんでした。
なので、初手に組み込むことの効果は高いですが、一定の精度が出た状態でさらに精度を上げるためにステップを改善してもあまり効果は得られませんでした。
最近のモデルはモデル自体が賢くなり、明示的な思考プロセスの指示がなくても、適切な推論ができるようになってきているためでしょう。
temperatureパラメータの活用
このパラメータは、モデルの出力の「創造性」を制御します。0.0から1.0までの範囲で設定でき、高い値ではより多様な応答が、低い値ではより安定した出力が得られます。
パラメータの調整で、出力の安定性をある程度コントロールできることが分かりました。プロジェクトの性質に応じて、適切な値を設定することで、目的に合った結果が得られやすくなります。
テキストの配置の工夫
プロンプト内のテキスト配置が、出力結果に影響を与えます。
例えば、Claudeを使用する際、長文データの配置位置が重要と言われてます。長文データをプロンプトの上部に配置すると、より適切な結果が得られる傾向がありました。
これは単なる配置の問題ではなく、モデルの文脈理解の仕方に関係しているようです。重要な情報やコンテキストを先に提示し、その後で具体的な指示を行うという構造が、安定した出力につながりやすかったです。
おわりに
ここで紹介した内容は、実際のプロダクト開発での経験に基づくものです。生成AIの分野は日々変化しており、これらの観察結果も時間とともに変わっていく可能性があります。
ただし、プロンプトの分割、言葉の選択、パラメータの設定といった基本的な考え方は、今後も参考になるのではないでしょうか。
この知見が皆さんのプロジェクトで何かの参考になれば幸いです。また、異なる知見や経験があれば、ぜひ共有いただけると嬉しいです。