Closed5

Vertex AIの「Prompt Optimizer」を試す

kun432kun432

https://twitter.com/kun432/status/1838904130871717996

https://cloud.google.com/vertex-ai/generative-ai/docs/learn/prompts/prompt-optimizer

プロンプトの最適化

この文書では、一連のプロンプトのシステム指示を改善することで、プロンプトのパフォーマンスを自動的に最適化する Vertex AI プロンプトオプティマイザーの使用方法について説明します。

Vertex AI プロンプトオプティマイザーを使用すると、システム指示や個々のプロンプトを手動で書き直すことなく、プロンプトを迅速かつ大規模に改善することができます。これは、あるモデル用に作成されたシステム指示やプロンプトを別のモデルで使用したい場合に特に役立ちます。

Vertex AI プロンプト最適化機能は、指定された評価基準に対するサンプルプロンプトに対するモデルの応答を評価することで、プロンプトの改善を支援します。Vertex AI プロンプト最適化機能を使用するには、以下のものが必要です。

  • サンプルプロンプトのセット
  • すべてのサンプルプロンプトで使用されるシステム指示
  • サンプルプロンプトを参照するプロンプトテンプレート

でどうやらColaboratoryで動くnotebookと、Githubレポジトリへのリンクがある。ただ、このnotebook、独自のライブラリを使っているようで、以前もVertexAIの別のnotebookをやったときにも感じたのだが、これだとちょっと動作がわかりにくい。自分はもう少しSDKでどう書くのかとかも含めて理解したいので、あくまでも参考ということで。

https://colab.research.google.com/github/GoogleCloudPlatform/generative-ai/blob/main/gemini/prompts/prompt_optimizer/vertex_ai_prompt_optimizer_ui.ipynb

https://github.com/GoogleCloudPlatform/generative-ai/tree/main/gemini/prompts/prompt_optimizer/vertex_ai_prompt_optimizer_ui.ipynb

kun432kun432

まず最初に

Vertex AI プロンプト最適化機能を使用するには、以下のものが必要です。

  • サンプルプロンプトのセット
  • すべてのサンプルプロンプトで使用されるシステム指示
  • サンプルプロンプトを参照するプロンプトテンプレート

を準備する。ドキュメントにある例を元に以下のようなものを準備したので、これを使って試してみることとする。

システム指示

あなたはプロの料理人です。あなたの目標は、見習いシェフに健康的な料理のレシピの作り方を教えることです。

見習いシェフからの質問といくつかのコンテキスト情報が与えられたら、その質問に対する正しい答えを提供してください。
コンテキスト情報を使用して、説明を交えながら1つの正しい回答を返してください。

プロンプトテンプレート

質問: {input_question}
コンテキスト情報: {input_context}

プロンプトテンプレートは、ここに正解となる"回答"を追加するかしないかで、少し設定などが変わってくる様子だが、一旦このままで。

サンプルプロンプト

ドキュメントには2つの例だけだったので、Claudeに増やしてもらった。

input_question input_context
赤身肉や豚肉を調理する際、風味と柔らかさを最大限に引き出しつつ、不健康な化合物の形成を最小限に抑える技術にはどのようなものがありますか? 赤身肉と豚肉の安全な調理温度は華氏145度(摂氏63度)です。マリネには様々な材料が使用され、それぞれ異なる効果があります。高温調理法は風味を向上させますが、過度の加熱は避けるべきです。肉の部位によって最適な調理法が異なります。調理時間や肉の厚さも重要な要素です。一部の調理法では不健康な化合物が生成される可能性がありますが、その量は様々な要因に左右されます。肉の品質や飼育方法も風味や柔らかさに影響を与えます。調理前後の肉の取り扱いも安全性と品質に関わります。香辛料や調味料の使用は風味だけでなく、健康面でも影響を与える可能性があります。
プロテインシェイクに、砂糖や人工的な材料を使わずに風味と栄養を加える創造的な方法にはどのようなものがありますか? プロテインシェイクの基本は、プロテインパウダーと液体です。液体の選択肢は多岐にわたり、それぞれ異なる栄養価と風味を持ちます。果物や野菜を加えることで、ビタミン、ミネラル、食物繊維を補強できます。ナッツやシードは健康的な脂肪と追加のタンパク質源となります。天然のスパイスやハーブは風味付けに使用でき、一部には健康効果もあります。プロテインパウダーの種類(ホエイ、カゼイン、植物性など)によって、最適な組み合わせが異なる場合があります。ブレンドの時間や方法によって、シェイクの質感が変わります。一部の食材は消化を助けたり、吸収を促進したりする効果があります。シェイクの温度も風味と満足感に影響を与えます。季節の食材を使用することで、栄養価と風味のバリエーションを増やせます。
魚を調理する際、栄養価を最大限に保ちながら、おいしく仕上げるコツは何ですか? 魚の種類によって最適な調理温度と時間が異なります。脂の乗った魚と白身魚では調理方法が異なることがあります。調理方法(焼く、蒸す、煮る、フライなど)によって栄養価の保持度が変わります。魚の鮮度は風味と栄養価に大きく影響します。調理時の添加物(油、ハーブ、スパイスなど)は栄養吸収に影響を与える可能性があります。魚の皮には多くの栄養素が含まれていますが、調理法によっては取り除く場合もあります。調理器具の選択も重要で、例えばノンスティック加工のフライパンを使うと油の使用量を減らせます。魚の大きさや厚さによって調理時間を調整する必要があります。一部の栄養素は熱に弱いため、調理時間や温度管理が重要です。調理前後の保存方法も栄養価の維持に影響します。
野菜の栄養価を最大限に引き出す調理方法にはどのようなものがありますか? 野菜の種類によって最適な調理方法が異なります。一部の野菜は生で食べるのが最適ですが、加熱により特定の栄養素の吸収率が上がる野菜もあります。調理時間は栄養素の保持に大きく影響し、一般的に短時間の調理が推奨されます。水を使う調理法(茹でるなど)では水溶性ビタミンが失われやすくなります。油を使った調理は一部の栄養素の吸収を助けますが、使用量に注意が必要です。調理の順序(例:先に切ってから調理するか、調理後に切るか)も栄養価に影響します。保存方法や保存期間も栄養価に影響を与えます。調理器具の選択(鉄鍋、アルミ鍋、土鍋など)によっても栄養価が変わる可能性があります。野菜の組み合わせ方によっては、栄養素の相乗効果が得られることがあります。調理時の温度管理も重要で、過度の高温調理は避けるべきです。
健康的な朝食を素早く準備する方法を教えてください。 朝食の内容は個人の健康目標、生活スタイル、好みによって異なります。前夜に準備できる朝食のオプションがあり、時間を節約できます。全粒穀物、たんぱく質、健康的な脂肪、果物、野菜を組み合わせると栄養バランスが良くなります。一部の食材は一晩置くことで消化しやすくなったり、風味が増したりします。朝食に適した食材には保存がきくものもあり、常備しておくと便利です。調理器具(例:ブレンダー、トースター、電子レンジ)を工夫すると準備時間を短縮できます。バッチクッキング(一度に大量調理)を活用すると、平日の朝の時間を節約できます。朝食の内容は一日の活動量や種類によって調整するとよいでしょう。簡単な朝食でも、水分補給を忘れないことが重要です。食事の時間帯も代謝や血糖値のコントロールに影響を与える可能性があります。
植物性タンパク質を効果的に調理し、おいしく食べる方法は? 植物性タンパク質源には豆類、穀物、ナッツ、種子、一部の野菜などがあります。多くの植物性タンパク質は水分を吸収させる必要があり、浸水時間が重要です。調理方法(茹でる、蒸す、焼く、揚げるなど)によって食感や風味が大きく変わります。スパイスやハーブを使うと風味が増しますが、植物性タンパク質自体の味を引き立てることも重要です。一部の植物性タンパク質は他の食材と組み合わせると栄養価が高まります(例:穀物と豆の組み合わせ)。植物性タンパク質の中には調理時間が長いものもありますが、圧力鍋などを使用すると時間を短縮できます。テクスチャーを工夫することで、肉の代替として使用できる場合もあります。発酵や熟成を行うことで、風味や栄養価を向上させられる植物性タンパク質もあります。植物性タンパク質は動物性タンパク質と比べて消化吸収率が低い傾向がありますが、調理法や食べ合わせで改善できます。季節や産地によって同じ植物性タンパク質でも栄養価や味が異なる場合があります。
糖質を控えめにしながら、満足感のある食事を作るコツは何ですか? 食事の満足感は個人によって異なり、様々な要因が影響します。糖質、タンパク質、脂肪、食物繊維はそれぞれ体内で異なる役割を果たします。食材の選択や調理法によって、同じ量でも異なる満足感が得られることがあります。また、食事のテクスチャーや水分量も重要な要素となる場合があります。糖質の含有量は食材によって大きく異なります。一部の野菜は他の食材の代替として使用できることがあります。満腹感のホルモンは食事の内容によって異なる反応を示すことがあります。食事の頻度やタイミングも満足感に影響を与える可能性があります。ストレスや睡眠不足などの生活習慣も食欲や満足感に関係することがあります。低糖質ダイエットには様々なアプローチがあり、それぞれ異なる効果や課題があります。調理技術や食材の組み合わせ方によっては、糖質を抑えつつも美味しさを保つことができます。個人の健康状態や活動レベルによって、適切な糖質摂取量は異なります。
子供が野菜を好んで食べるようになる調理のコツはありますか? 子供の味覚は大人とは異なり、年齢とともに変化します。子供は見た目や食感に敏感で、これらが食欲に大きく影響します。調理過程に子供を参加させることで、食への興味や理解が深まることがあります。野菜は様々な料理に取り入れることができ、子供の好きな料理に組み込むのも一つの方法です。調理法(蒸す、焼く、揚げるなど)によって野菜の味や食感が変わるため、子供の好みに合わせて選択できます。野菜を小さく刻んだり、ピューレにしたりすることで、食べやすくなる場合があります。色とりどりの野菜を使うことで、見た目の楽しさを演出できます。野菜を使ったおやつや軽食を提供するのも効果的かもしれません。家族全員で同じ野菜料理を楽しむことで、子供の食習慣形成に良い影響を与える可能性があります。野菜嫌いには様々な原因(味、食感、過去の経験など)があり、個別のアプローチが必要な場合もあります。季節の野菜を使うことで、新鮮さと栄養価を高められます。
食事の準備時間を短縮しながら、栄養バランスの取れた食事を作る方法を教えてください。 効率的な食事準備には計画が重要で、週単位でのメニュー作成が役立ちます。食材の下準備(洗う、切る、下味をつけるなど)を事前に行っておくと調理時間が短縮できます。冷凍食品や缶詰の中にも栄養価の高いものがあり、うまく活用することで時間を節約できます。一度に大量に調理して小分けに保存する方法(バッチクッキング)は効率的です。調理器具の選択(圧力鍋、スロークッカー、電子レンジなど)で調理時間を大幅に短縮できる場合があります。簡単に栄養バランスを整えるための基本的な食事構成(主食、主菜、副菜など)を覚えておくと便利です。残り物を活用して新しい料理にアレンジする技術も時間節約に役立ちます。調理の順序を工夫することで、待ち時間を有効活用できます。簡単で栄養バランスの良いレシピをいくつか習得しておくと、忙しい日でも対応できます。食材の保存方法を適切に行うことで、買い物の頻度を減らし、準備時間を短縮できます。
食事制限のある人(例:グルテンフリー、乳製品フリー)のための、栄養バランスの取れた料理のアイデアを教えてください。 食事制限の種類や程度は個人によって異なり、医療専門家の指導に従うことが重要です。多くの一般的な食材には代替品があり、例えばグルテンフリーの穀物や乳製品フリーの植物性ミルクなどがあります。食事制限がある場合でも、必要な栄養素を摂取する方法があり、バランスの取れた食事は可能です。一部の食品は予想外の原材料を含んでいることがあるので、ラベルの確認が重要です。調理法を工夫することで、制限のある食材なしでも満足度の高い料理を作れます。世界の料理の中には、特定の食事制限に自然に適合するものがあり、これらを参考にすることができます。食事制限がある場合、特定の栄養素が不足しがちなので、それを補う方法を知っておくことが大切です。外食時や旅行時の対応も考慮に入れる必要があります。食事制限のある人とない人が同じ食事を楽しめるようなレシピ開発も重要です。季節や地域の食材を活用することで、制限のある中でも変化に富んだ食事を作れます。食事制限によっては、特定の調理器具や調理方法が推奨される場合があります。
kun432kun432

ではColaboratoryでやっていく・・・

と言いたいところだが、以下の準備が必要。

https://cloud.google.com/vertex-ai/generative-ai/docs/learn/prompts/prompt-optimizer#before-you-begin

特にクォータについては事前に申請が必要になる。通常2営業日かかるらしい。

  • Generate content requests per minute per project per base model per minute per region per base_model
    • region: 使用するリージョン
      • 自分は"ap-northeast-1"
    • モデル: Prompt Optimizerで使用するモデル
      • 自分は以下のモデルを対象にした
        • "Gemini-1.5-Flash"
        • "Gemini-1.5-Pro"

最低200QPM、推奨は500QPM、らしい。デフォルトは確か5とか10とかだったと思うので、全然たりなさそう。

2024/09/30追記

500で申請したら通った。土日挟んだけど、確かに2営業日って感じ。

kun432kun432

以下に従って進めたところ、prompt optimizer実行にトレーニングでカスタムジョブが実行されるのだが、ジョブでエラーが出まくる。。。。

https://cloud.google.com/vertex-ai/generative-ai/docs/learn/prompts/prompt-optimizer

んー、何が悪いのかさっぱりわからないんだよね、Pythonで例外吐きまくってるようだし。

そういえば公式のnotebookみたらSDK使って実行するバージョンがあった(前はなかったと思う)ので、こっちで試してみたほうがいいかなーとは思う。

kun432kun432

ただ、とりあえずAnthropic/Cohere/OpenAIとプロンプト生成・最適化を試してみた中だと、1番難しい、というかGCPのMLサービスを使う前提になってるっぽいので、事前知識があったほうがいいかな~という感を感じた。

んー、ちょっとペンディングかな。

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