ゼロショット オプティマイザー

ゼロショット オプティマイザーを使用すると、ユーザーが作成したプロンプトを自動的に調整して改善できます。多くの場合、プロンプトの言語が曖昧であったり、コンテキストが欠落していたり、無関係な情報が含まれていると、モデルから期待どおりのレスポンスが返ってこないことがあります。このオプティマイザーは、既存のプロンプトを分析して書き換え、より明確で効果的で、モデルの機能に沿ったものにします。これにより、最終的に回答の品質が向上します。

ゼロショット オプティマイザーは、次のような場合に特に役立ちます。

  • モデルの更新への適応: モデルの新しいバージョンにアップグレードすると、既存のプロンプトが最適に機能しなくなる可能性があります。

  • プロンプトの理解度を高める: プロンプトの言い回しが複雑であったり、誤解を招く可能性がある場合、ツールは言い回しを修正して明瞭さと精度を最大限に高め、望ましくない結果が生じる可能性を減らします。

オプティマイザーを使用する方法は 2 つあります。

  • 指示の生成: 複雑なシステム指示をゼロから記述する代わりに、目標やタスクを平易な言葉で説明できます。オプティマイザーは、目標を達成するために設計された、完全で構造化された一連のシステム指示を生成します。

  • プロンプトの改善: プロンプトは機能しているが、モデルの出力に一貫性がない、少しトピックから外れている、必要な詳細情報が不足している。オプティマイザーは、より良い出力を得るためにプロンプトを改善するのに役立ちます。

オプティマイザーは、Gemini でサポートされているすべての言語のプロンプト最適化をサポートしており、Vertex AI SDK を通じて利用できます。

始める前に

プロンプトの最適化に必要な権限を Compute Engine のデフォルト サービス アカウントに付与するには、プロジェクトに対する次の IAM ロールを Compute Engine のデフォルト サービス アカウントに付与するよう管理者に依頼します。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

管理者は、カスタムロールや他の事前定義ロールを使用して、Compute Engine のデフォルトのサービス エージェントに必要な権限を付与することもできます。

プロンプトの最適化

# Import libraries
import vertexai
import logging

# Google Colab authentication
from google.colab import auth
PROJECT_NAME = "PROJECT"
auth.authenticate_user(project_id=PROJECT_NAME)

# Initialize the Vertex AI client
client = vertexai.Client(project=PROJECT_NAME, location='us-central1')

# Input original prompt to optimize
prompt = """You are a professional chef. Your goal is teaching how to cook healthy cooking recipes to your apprentice.

Given a question from your apprentice and some context, provide the correct answer to the question.
Use the context to return a single and correct answer with some explanation.
"""

# Optimize prompt
output = client.prompt_optimizer.optimize_prompt(prompt=prompt)

# View optimized prompt
print(output.model_dump_json(indent=2))

この output オブジェクトは OptimizeResponse 型で、最適化プロセスに関する情報を提供します。最も重要な部分は suggested_prompt です。これには、モデルからより良い結果を得るために使用できる最適化されたプロンプトが含まれています。他のフィールド(特に applicable_guidelines)は、プロンプトが改善された理由と方法を理解するのに役立ちます。これにより、今後より適切なプロンプトを作成できます。出力例を次に示します。

{
  "optimization_mode": "zero_shot",
  "applicable_guidelines": [
    {
      "applicable_guideline": "Structure",
      "suggested_improvement": "Add role definition.",
      "text_before_change": "...",
      "text_after_change": "Role: You are an AI assistant...\n\nTask Context:\n..."
    },
    {
      "applicable_guideline": "RedundancyInstructions",
      "suggested_improvement": "Remove redundant explanation.",
      "text_before_change": "...",
      "text_after_change": ""
    }
  ],
  "original_prompt": "...",
  "suggested_prompt": "Role: You are an AI assistant...\n\nTask Context:\n..."
}