プロンプト管理

Vertex AI には、プロンプト テンプレートとプロンプト データを管理するためのツールが用意されています。プロンプト テンプレートはバージョニングして、Vertex AI の生成モデルと連携して使用できます。各プロンプトは、Vertex AI Studio または Vertex AI SDK でアセンブルしてバージョニングできます。

Vertex AI SDK には vertexai.preview.prompts モジュールが含まれているため、プロンプトで生成モデルを使用できます。vertexai.preview.prompts モジュールは、Gemini でテキストを生成するプロンプトを定義、保存、管理する機能をサポートしています。

Prompt

Prompt クラスは、Gemini メソッドでテキストの生成に使用できるプロンプトを表します。このクラスは、プロンプト データ、変数、生成構成、その他の関連情報をカプセル化します。

Prompt オブジェクトを作成するには、vertexai.preview.prompts.Prompt() コンストラクタを使用します。このオブジェクト内で、プロンプトデータ、変数、その他の構成を定義できます。

ローカル プロンプトを作成してコンテンツを生成する

Vertex AI SDK for Python

Python

import vertexai
from vertexai.preview import prompts
from vertexai.preview.prompts import Prompt

# from vertexai.generative_models import GenerationConfig, SafetySetting # Optional

# Initialize vertexai
vertexai.init(project=PROJECT_ID, location="us-central1")

# Create local Prompt
local_prompt = Prompt(
    prompt_name="movie-critic",
    prompt_data="Compare the movies {movie1} and {movie2}.",
    variables=[
        {"movie1": "The Lion King", "movie2": "Frozen"},
        {"movie1": "Inception", "movie2": "Interstellar"},
    ],
    model_name="gemini-1.5-pro-002",
    system_instruction="You are a movie critic. Answer in a short sentence.",
    # generation_config=GenerationConfig, # Optional,
    # safety_settings=SafetySetting, # Optional,
)

# Generate content using the assembled prompt for each variable set.
for i in range(len(local_prompt.variables)):
    response = local_prompt.generate_content(
        contents=local_prompt.assemble_contents(**local_prompt.variables[i])
    )
    print(response)

# Save a version
prompt1 = prompts.create_version(prompt=local_prompt)

print(prompt1)

# Example response
# Assembled prompt replacing: 1 instances of variable movie1, 1 instances of variable movie2
# Assembled prompt replacing: 1 instances of variable movie1, 1 instances of variable movie2
# Created prompt resource with id 12345678910.....
  • project: 実際のプロジェクト ID。これらの ID は、 Google Cloud コンソールの [ようこそ] ページで確認できます。
  • location: Vertex AI のロケーションをご覧ください。
  • prompt_name: ユーザーが作成したプロンプトの表示名(オンライン リソースに保存されている場合)。
  • prompt_data: PartsType プロンプト。変数を含むテンプレートまたは変数のないプロンプトです。
  • variables: 変数名と値を含む辞書のリスト。
  • generation_config: 生成のパラメータを含む GenerationConfig オブジェクト。
  • model_name: Model Garden モデルのリソース名。または、チューニング済みモデルのエンドポイント リソース名を指定することもできます。モデルが指定されていない場合は、デフォルトの最新モデルが使用されます。
  • safety_settings: 生成の安全性設定を含む SafetySetting オブジェクト。
  • system_instruction: システム指示を表す PartsType オブジェクト。

Prompt オブジェクトを作成したら、さまざまな構成を表すプロンプトデータとプロパティを使用してコンテンツを生成できます。

プロンプトは関数呼び出しもサポートしています。詳細については、関数呼び出しの概要をご覧ください。

プロンプトを保存する

Google Cloud コンソールからアクセスできるオンライン リソースにプロンプトを保存するには、vertexai.preview.prompts.create_version() メソッドを使用します。このメソッドは、Prompt オブジェクトを入力として受け取り、オンライン ストアにプロンプトの新しいバージョンを作成します。オンライン リソースに関連付けられた新しい Prompt オブジェクトが返されます。Prompt オブジェクトに加えた更新は、create_version() が呼び出されるまではローカルに保持されます。次のコードサンプルは、プロンプトを保存する方法を示しています。

Vertex AI SDK for Python

from vertexai.preview import prompts
# Save Prompt to online resource.
Returns a new Prompt object associated with the online prompt1 = prompts.create_version(prompt=prompt)

保存したプロンプトを読み込む

オンライン リソースに保存されているプロンプトを読み込むには、vertexai.preview.prompts.get() メソッドを使用します。このメソッドは、プロンプト ID を入力として受け取り、対応する Prompt オブジェクトを返します。次のコードサンプルは、保存したプロンプトを読み込む方法を示しています。

Vertex AI SDK for Python

from vertexai.preview import prompts 

# Get prompt
prompt = prompts.get(prompt_id="123456789")

Google Cloud コンソールで作成したプロンプトを取得する

保存したプロンプトを更新するには、まず get() メソッドを使用してプロンプトを読み込み、必要に応じてプロパティを変更してから、create_version() メソッドを使用して更新したプロンプトを保存します。これにより、更新された情報を含むプロンプトの新しいバージョンが作成されます。

Vertex AI SDK for Python

from vertexai.preview import prompts
from vertexai.preview.prompts import Prompt

# Get prompt
prompt = prompts.get(prompt_id="123456789")

# Generate content using the assembled prompt (a prompt without variables)
prompt.generate_content(
  contents=prompt.assemble_contents()
)

# Update prompt (changes are local until create_version is called)
prompt.prompt_data = "new prompt"

# Save Prompt to online resource. Since the prompt is associated with a prompt resource, it creates a new version under the same prompt_id. Returns a new Prompt object associated with the online resource
prompt1 = prompts.create_version(prompt=prompt)

プロンプトの一覧表示

現在のGoogle Cloud プロジェクトに保存されているすべてのプロンプトの表示名とプロンプト ID を表示するには、list_prompts() メソッドを使用します。

Vertex AI SDK for Python

from vertexai.preview import prompts

prompts_metadata = prompts.list()

# Get a prompt from the list
prompt1 = prompts.get(prompt_id=prompts_metadata[0].prompt_id)

プロンプトのバージョンを一覧表示する

プロンプト内に保存されているすべてのプロンプト バージョンの表示名とバージョン ID を表示するには、list_versions() メソッドを使用します。

Vertex AI SDK for Python

from vertexai.preview import prompts

prompt_versions_metadata = prompts.list_versions(prompt_id="123456789")

# Get a specific prompt version from the versions metadata list
prompt1 = prompts.get(
    prompt_id=prompt_versions_metadata[3].prompt_id,
    version_id=prompt_versions_metadata[3].version_id
)

プロンプトのバージョンを復元する

プロンプト リソースには、プロンプトの以前の保存済みバージョンを保存するバージョン履歴も含まれています。restore_version() メソッドを使用して、古いバージョンを最新バージョンのプロンプトとして復元できます。これにより、get() 呼び出しで使用して新しく復元されたバージョンを取得できる PromptVersionMetadata が返されます。

Vertex AI SDK for Python

from vertexai.preview import prompts

# Restore to prompt version id 1 (original)
prompt_version_metadata = prompts.restore_version(prompt_id="123456789", version_id="1")

# Fetch the newly restored latest version of the prompt
prompt1 = prompts.get(prompt_id=prompt_version_metadata.prompt_id)

プロンプトを削除する

プロンプト ID に関連付けられているオンライン リソースを削除するには、delete() メソッドを使用します。

Vertex AI SDK for Python

from vertexai.preview import prompts

prompts.delete(prompt_id="123456789")