このチュートリアルでは、段階的な指示に従って、ロール・プロンプトと呼ばれるプロンプト・エンジニアリング手法を実行していきます。IBM Graniteモデルを使用して、ニュアンスが考慮されたモデル出力のペルソナを割り当てます。
ロール・プロンプトは、応答を生成する際に特定の役割またはペルソナを引き受けるよう人工知能(AI)モデルに指示するプロンプト・エンジニアリング手法です。このテクニックを使用すると、モデルの口調、スタイル、動作をガイドすることができ、より魅力的なアウトプットにつながります。
プロンプト・エンジニアリングで重要なのは、モデル入力を最適化することで、適切で意味のある回答が得られるようにすることです。zero-shotとfew-shotプロンプティングは、大規模言語モデル(LLM)との会話に使用される2つの一般的な手法です。LLMは、人間の言語を処理および解釈する能力により、自然言語処理(NLP)タスクを実行する自然な能力を備えています。AIモデルの言語能力は、チャットボットの会話やマルチエージェントのやり取りから、自由な創作ライティングまで、さまざまなタスクに役立ちます。
役割の特定のニーズを満たすためにLLMが特定のペルソナとして行動するように指示されると、生成AI(gen AI)はよりパーソナルになります。AIの応答は、割り当てられた役割を最初にプロンプトする場合、より正確で適切なものになります。AIモデルでは膨大なデータセットを活用するため、割り当てられる役割は、教師、歴史的人物、営業担当者など、人物の想像力に左右されます。この能力により、ロール・プロンプト(ペルソナ・プロンプトとも呼ばれる)が強力な手法となっています。AIモデルは適応性があるため、ユーザーやシステムの特定のニーズに合わせた応答を生成することができ、変装のマスターとなることができます。
ロール・プロンプトを使用して、チャットボットにユーザーとより良い対話をするためのペルソナや、他のエージェントとより適切に対話するためのAIエージェントを提供することができます。プロンプト・テンプレートに精通している方は、ロール・プロンプトの動作を既にご覧になったことがあるかもしれません。例えば、多くのエージェント型フレームワークでは、タスクを完了し、効果的にコラボレーションするためにロールプレイング・エージェントを使用します。ChatDevでは、自己注意メカニズムと呼ばれるロール・プロンプト手法を使用しています。このメカニズムでは、生成されたアウトプットのガイドラインとして機能するエージェントの役割を明確に定義します。
このチュートリアルを実行するには、watsonx.aiプロジェクトを作成するためのIBM Cloudアカウントが必要です。
いくつかあるツールの中から選択することもできますが、このチュートリアルでは、Jupyter Notebookを使用してIBMアカウントを設定する方法について説明します。Jupyter Notebookは、コード、テキスト、画像、データの可視化を組み合わせて適切な分析を作成するために、データサイエンスの分野で広く使用されています。
「プロジェクト(project)」 > 「管理(Manage)」 > 「一般(General)」 > 「プロジェクトID(Project ID)」のプロジェクトIDをメモします。
このチュートリアルには、このIDが必要です。
3. Jupyter Notebookを作成します。
このステップでは、このチュートリアルのコードをコピーして独自にzero-shot分類を実行できるノートブック環境を開きます。あるいは、このノートブックをローカル・システムにダウンロードし、watsonx.aiプロジェクトにアセットとしてアップロードすることもできます。このJupyter NotebookはGitHubで入手可能です。
このステップでは、プロジェクトをwatsonx.aiサービスに関連付けます。
watsonx.aiランタイム・インスタンスを作成します(無料インスタンスであるLiteプランを選択します)。
watsonx.aiでAPIキーを生成します。
watsonx.aiで作成したプロジェクトにwatsonx.aiランタイムを関連付けます。
このチュートリアルには、いくつかのライブラリーとモジュールが必要です。以下を必ずインポートしてください。インストールされていない場合は、pipをクイックインストールすることで問題が解決されます。
以下の手順で、watsonx.aiランタイムAPIキーとプロジェクトIDを入力し、保存します。
次にIBMのGranite-3.1-8B-Instructを設定してロール・プロンプトを実行します。
ロール・プロンプトのシンプルで楽しいサンプルとして、モデルに有名な人物、William Shakespeareのペルソナを引き受けることを依頼してみましょう。役割を新しく割り当てられたモデルに、シェイクスピアの有名なソネットのスタイルで歌詞の一部を書き換えてください。
以下のコード・ブロックでは、モデルが応答するプロンプトを設定および定義します。好きなテーマに自由に変更できますが、Graniteは著作権で保護されたコンテンツに基づいてトレーニングされているわけではないことに注意してください。たとえば、Sabrina Carpenterの「Espresso」など、パブリック・ドメインの一部ではない曲を選択する場合は、プロンプトにそのフレーズも貼り付ける必要があります。
プロンプトが適切に機能するために、このサンプルでは、Jane Taylor(1806年)の古くから親しまれている子守唄『きらきら星』を使います。コード・ブロックを実行して、ユーザー・プロンプトをサンプルの入力テキストとともに定義します。
プロンプトを定義したら、次のコード・ブロックを実行して、モデルがアウトプットを生成できるようにします。それがシェイクスピアの基準に達していることを期待しましょう。
読みやすい形式のモデルのアウトプットは次のとおりです。
"Twinkle, twinkle, little star, how I wonder what you are;
Up above the world so high, like a diamond in the sky.
In night's velvet cloak, you shine so bright,
Guiding sailors through the darkest night.
Your radiant beams, a celestial art,
Illuminate the canvas of the heart.
In silent whispers, secrets you share,
Of galaxies far and constellations rare.
Yet, mortal eyes can never grasp your form,
Beyond our realm, in realms beyond the storm.
O, star! O, star! Your light does pierce my soul,
A cosmic dance, a timeless role.
In dreams, I chase you, in slumber's hold,
Your mystery, like an enchanted scroll.
But wakefulness claims me, daylight steals your guise,
Leaving behind but a memory of your surprise.
Thus, twinkling star, in slumber's peaceful reign,
I bid you farewell, till morning brings again."
このモデルでは、役割ベースのプロンプトに対する応答を生成し、シェイクスピアのソネットとして歌詞を書き換えることができました。このモデルは、ロール・プロンプトから期待されるルールとスタイルに従うことができました。*プロンプトの創造的な性質により、アウトプットはこのサンプルとは異なる場合があります。
この次の例では、直接的なシステム・プロンプトとロールベースのシステム・プロンプトを比較します。ある動物病院では最近、ウェブページにバーチャル・アシスタントを導入しました。最高のカスタマー・サポートを提供するために、この動物病院では、たとえバーチャルなやり取りであっても、ペットの飼い主が話を聞いてもらっている、サポートされていると感じてもらいたいと考えています。これは多くの企業にとって共感できる目標です。訪問者は、「私の猫は最近よくくしゃみをし、足を舐めます。どうすればよいですか」といった質問をするかもしれません。このシナリオでは、モデルにはプロンプトに役割が割り当てられていません。入力ガイダンスなしですぐに使えるモデルを使用しているだけです。
ただし、モデルはアドバイスや情報に合わせて応答しますが、個人的な要素はなく、検索エンジンの結果ページに表示されるものとはあまり変わっていません。モデルのアウトプットは不十分で、創造性に欠けています。このソリューションは受け入れられるかもしれませんが、この病院のバーチャル・アシスタントは他のソリューションと差別化できていません。もう一度同じ質問をしてみよう。今度は、「思いやりがあり、プロフェッショナルで経験豊富な獣医師」という役割を割り当ててみましょう。
モデルの応答における言葉は、単純なシステム・プロンプトになかった文脈の感情的な認識を語っているため、より人間的なものになっています。このモデルはこのトーンを達成すると同時に、完成度の高い適切な回答を提供することで、よりニュアンスが考慮された回答であることを証明しました。このような人間と人工知能とのやり取りは、組織やアプリケーション内の主観的な期待に応える一つの方法です。
生成AIアプリケーションにさらなるパーソナライゼーションと意味のある対話を追加しようとしている開発者や企業の場合は、ロール・プロンプトがどのように影響を与えるかを理解することを検討してください。最新の言語モデルのほとんどは、ロール・プロンプトが可能です。一部の基本モデルは役割のニュアンスを把握したり、応答の一貫性を維持したりできない場合がありますが、その他の基本モデルは特定の方法で応答するようにファイン・チューニングされる場合があります。IBMのGraniteシリーズなどの基盤モデルは、大量の企業固有のデータに基づいて学習され、ビジネス・ニーズに基づいてカスタマイズされた応答を生成するための役割を引き受けるモデルの能力を高めています。
ロール・プロンプトでは、モデルが割り当てられたペルソナからの期待に常に基づいて実行するようにします。プロンプト内でLLMに歴史的な人物の役割を割り当てることで、シンプルなサンプルを実行して、歌詞をソネットに書き換えました。次に、チャットボットの応答について、ロール・プロンプトが適用されたモデルと適用されていないモデルのアウトプットを比較しました。ロール・プロンプトが提供する応答が、その言語でよりニュアンスが考慮されて役立つように対処し、より高度なカスタマー・ケアを提供したという結論に達しました。