1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Cloudのプロンプト管理を試してみる

Posted at

はじめに

Google CloudのVertexAIには、プロンプトの管理を行う機能が用意されています。
プロンプトをバージョニングして、VertexAIの生成モデルと連携することができます。

Googleが提唱する「GenOps」でもプロンプト管理は重要と言われています。

プロンプト管理

プロンプトの保存

プロンプトの保存方法は2つあります。

  1. コンソール上でプロンプトを保存する
  2. Vertex AI SDK経由でプロンプトを保存する

コンソール上でプロンプトを保存する

Vertex AI Studioの「プロンプト管理」から「プロンプトを作成」を押す。

image.png

システム指示、Prompt、モデル、パラメータを設定して、保存を押す。
image.png

プロンプトの保存が終わった後、Vertex AI Studioの「プロンプト管理」に移動すると、保存したプロンプトが表示されている。

image.png

Vertex AI SDK経由でプロンプトを保存する

Promptクラスを使用して、プロンプトの情報をカプセル化する。

import vertexai
from vertexai.preview.prompts import Prompt

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

local_prompt = Prompt(
    prompt_name="Prompt Test SDK",
    prompt_data="日本一高い山は?",
    model_name="gemini-2.0-flash-exp",
    system_instruction="あなたはユーザーからの質問に対して簡潔に回答するAIです。",
    # generation_config=GenerationConfig, # Optional,
    # safety_settings=SafetySetting, # Optional,
)

create_version()を使用して、プロンプトの保存を行う。

from vertexai.preview import prompts

prompt_sdk = prompts.create_version(prompt=local_prompt)

Vertex AI Studioの「プロンプト管理」を確認すると、SDK経由でプロンプトが保存されていることが確認できる。
image.png

プロンプトの一覧表示

保存されているプロンプト情報をlist()で表示する。
表示名とプロンプトIDが含まれている。

prompts_metadata = prompts.list()
# [PromptMetadata(display_name='Prompt Test', prompt_id={プロンプトID})]

プロンプトの読み込み

保存されているプロンプトを読み込むには、プロンプトIDを使用してget()を使用する。

prompt = prompts.get(prompt_id={プロンプトID})

promptの中身は以下のようになっている。

Prompt(prompt_data='日本一高い山は?', 
system_instruction=あなたはユーザーからの質問に対して簡潔に回答するAIです。),
model_name=projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-2.0-flash-exp), 
generation_config=temperature: 1
top_p: 0.95
max_output_tokens: 1024
), 
prompt_id={プロンプトID})

プロンプトのバージョニング

コンソールの場合

プロンプトやモデルの設定を変更して、コンソール上でプロンプトを保存する同様に保存を押す。

プロンプトの履歴から右側にバージョンが増えていて、プロンプトの違いを確認できる。
image.png

SDK経由の場合

更新したいプロンプトIDを指定して、create_version()を実行する。

prompt_sdk = prompts.create_version(prompt=local_prompt, prompt_id={プロンプトID})

プロンプトのバージョニング一覧をlist_versions()で表示する。

prompt_versions_metadata = prompts.list_versions(prompt_id={プロンプトID})

prompt_versions_metadataの中身は以下のようになっている。

[PromptVersionMetadata(display_name='Prompt Test SDK', prompt_id={プロンプトID}, version_id='1'),
 PromptVersionMetadata(display_name='Prompt Test SDK', prompt_id={プロンプトID}, version_id='2')]

バージョンを指定してプロンプトを取得する

プロンプトの読み込みでのget()の引数にversion_idを指定することで、特定のバージョンのプロンプトが取得できる。
version_idを指定しないと、最新のバージョンのプロンプトを取得することになる。

prompt = prompts.get(prompt_id={プロンプトID}, version_id=1)

version_id=1の場合

Prompt(prompt_data='日本一高い山は?',

version_id=2の場合

Prompt(prompt_data='日本一高い山は? その英語名は?',

バージョンの復元

以前のバージョンにプロンプトをrestore_version()で復元ができる。
バージョン1を復元する場合、バージョン3としてバージョン1のプロンプトが作成される。

prompt_version_metadata = prompts.restore_version(prompt_id={プロンプトID}, version_id=1)

プロンプトの削除

delete()でプロンプトを削除できる。

prompts.delete(prompt_id={プロンプトID})

まとめ

Google Cloudのプロンプト管理をコンソール上とSDK経由の両方で試してみました。
生成AIではプロンプトの違いによって、期待する出力が異なります。
プロンプトのバージョン管理ができるので、プロンプトの再利用やプロンプトの最適化や定期的な評価をすることができます。
生成AIアプリケーション運用における「GenOps」をGoogle Cloudのサービスを利用することで、導入を簡易化できる予感がしました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?