本文說明如何使用資料導向最佳化工具,改善一組提示的系統指令,自動提升提示成效。
資料導向最佳化工具可協助您快速大規模改良提示詞,不必手動重寫系統指令或個別提示詞。如果您想將某個模型用的系統指令和提示詞用於其他模型,這項功能就特別實用。
提示詞最佳化範例
舉例來說,如果有一組提示會參考情境資訊來回答烹飪相關問題,您可以使用資料導向最佳化工具,最佳化這組提示的系統指令。如要完成這項工作,請準備類似下列的輸入內容:
系統指示
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.
提示詞範本
Question: {input_question}
Facts: {input_context}
提示範例
input_question |
input_context |
|---|---|
| 烹調紅肉和豬肉時,有哪些技巧可以讓肉質最鮮美軟嫩,同時盡量減少不健康化合物的形成? | 紅肉和豬肉應烹調至內部溫度達華氏 145 度 (攝氏 63 度),確保食用安全。用檸檬汁或醋等酸性食材醃肉,可分解堅韌的肌肉纖維,讓肉質更軟嫩。高溫烹調方式 (例如燒烤和煎烤) 可以讓食物呈現美味的焦糖色,但請務必避免燒焦,以免產生有害化合物。 |
| 有哪些創意方法可以為高蛋白奶昔增添風味和營養,同時不使用添加糖或人工成分? | 加入菠菜或羽衣甘藍等綠葉蔬菜,可大幅提升奶昔的營養價值,且不會大幅改變風味。使用無糖杏仁奶或椰子水代替一般牛奶,可以增添淡淡的甜味,並分別補充健康脂肪或電解質。你知道過度攪拌奶昔會讓奶昔變熱嗎?為保持涼爽,請縮短攪拌時間,並視需要讓攪拌機休息。 |
最佳化系統指令
As a highly skilled chef with a passion for healthy cooking, you love sharing your knowledge with aspiring chefs. Today, a culinary intern approaches you with a question about healthy cooking. Given the intern's question and some facts, provide a clear, concise, and informative answer that will help the intern excel in their culinary journey.
最佳化功能的運作方式
資料導向最佳化工具會採用下列參數:
- 最佳化模式:指定要最佳化的項目。可以是下列其中一項:
instruction:最佳化系統指令。demonstration:選取提示範例,新增至系統指示做為少量樣本。instruction_and_demo:同時執行上述兩項動作。
- 評估指標:以數據為準的最佳化工具會使用這些指標,最佳化系統指令和/或選取範例提示詞。
- 目標模型:資料導向最佳化工具會針對該 Google 模型最佳化系統指令,並選取範例提示。
執行資料導向最佳化工具時,系統會根據您的選項執行自訂訓練工作,反覆評估樣本提示並重寫系統指令,找出能為目標模型產生最佳評估分數的版本,藉此最佳化系統指令。
工作結束時,資料導向最佳化工具會輸出最佳化系統指令和評估分數。
評估指標
以數據為準的最佳化工具會使用評估指標,最佳化系統指令並選取樣本提示。您可以使用標準評估指標,或定義自訂評估指標。注意:所有評估指標都必須具備「分數越高,成效越好」的特性。
您可以一次使用多個指標。不過,自訂指標一次只能使用一個。如果同時使用標準和自訂指標,則只能有一個自訂指標。其他則必須是標準指標。
如要瞭解如何一次指定一項或多項指標,請參閱「建立提示詞範本和系統指令」中「SDK」分頁的 EVALUATION_METRIC_PARAMETERS。
自訂評估指標
如果標準指標不適用於您的應用程式,自訂指標就相當實用。請注意,資料導向最佳化工具一次只能支援一項自訂指標。
如要瞭解如何建立自訂指標,請參閱「建立自訂指標」。
標準評估指標
以數據為準的最佳化工具支援自訂評估指標,以及下列評估指標:
| 指標類型 | 用途 | 指標 | 說明 |
|---|---|---|---|
| 以模型為基礎 | 摘要 | summarization_quality |
說明模型能否根據參考文字回答問題。 |
| 回答問題 | question_answering_correctness* |
說明模型能否正確回答問題。 | |
question_answering_quality |
說明模型能否根據參考文字回答問題。 | ||
| Coherence | coherence |
說明模型提供連貫回覆的能力,並評估生成的文字是否符合邏輯且合理。 | |
| 安全功能 | safety |
說明模型的安全等級,也就是回覆是否含有不安全的文字。 | |
| 流暢度 | fluency |
說明模型的語言通順程度。 | |
| 有憑有據 | groundedness |
說明模型僅憑輸入文字生成回覆的能力,或是回覆有憑據的程度。 | |
| Comet | comet** |
說明模型翻譯品質與參考資料的相符程度。 | |
| MetricX | metricx** |
說明模型在翻譯品質方面的能力。 | |
| 以運算為基礎 | 使用工具和呼叫函式 | tool_call_valid* |
說明模型預測有效工具呼叫的能力。 |
tool_name_match* |
說明模型能否以正確的工具名稱預測工具呼叫。系統只會檢查第一個工具呼叫。 | ||
tool_parameter_key_match* |
說明模型能否以正確的參數名稱預測工具呼叫。 | ||
tool_parameter_kv_match* |
說明模型能否以正確的參數名稱和索引鍵值預測工具呼叫。 | ||
| 生成一般文字 | bleu* |
保留演算法結果,用於評估預測品質,並將預測結果從一種自然語言翻譯成另一種自然語言。預測品質是指預測參數與參考參數之間的對應關係。 | |
exact_match* |
計算預測參數是否與參考參數完全相符。 | ||
rouge_1* |
用於比較提供的預測參數與參考參數。 | ||
rouge_2* |
|||
rouge_l* |
|||
rouge_l_sum* |
*如要使用 question_answering_correctness 或運算式評估來最佳化提示,請務必完成下列其中一項操作:
- 在提示詞範本中,新增代表提示詞基準真相回覆的變數。
如果提示沒有基準真相回覆,但您先前曾搭配 Google 模型使用提示,並達到目標結果,則可在設定中新增
source_model參數,而非新增基準真相回覆。設定source_model參數後,資料導向最佳化工具會在來源模型上執行樣本提示,為您生成基準真相回覆。source_model參數只能用於模型升級或遷移。
**如要使用 comet 或 metricx 最佳化提示,請務必在設定中提供 translation_source_field_name 參數,指定資料中來源文字的對應欄位名稱。此外,MetricX 值已修改為介於 0 (最差) 和 25 (最佳) 之間,以符合「越大越好」的屬性。
事前準備
為確保 Compute Engine 預設服務帳戶具備最佳化提示所需的權限,請要求管理員將專案的下列 IAM 角色授予 Compute Engine 預設服務帳戶:
- Agent Platform 使用者 (
roles/aiplatform.user) - Storage 物件管理員 (
roles/storage.objectAdmin) - Artifact Registry 讀取者 (
roles/artifactregistry.reader) -
如果使用自訂指標:
- Cloud Run 開發人員 (
roles/run.developer) - Cloud Run 叫用者 (
roles/run.invoker)
- Cloud Run 開發人員 (
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
管理員或許也能透過自訂角色或其他預先定義的角色,將必要權限授予 Compute Engine 預設服務帳戶。
最佳化提示
您可以透過下列方式最佳化提示:
- 使用 Gemini Enterprise Agent Platform 控制台中的 Gemini Enterprise Agent Platform 提示最佳化工具
- 使用 Agent Platform API
- 執行 Agent Platform 提示詞最佳化工具筆記本。
如要最佳化提示,請選擇要使用的方法,然後按照下列各節的詳細說明完成步驟:
建立提示詞範本和系統指令
提示詞範本會透過可替換的變數,定義所有提示詞的格式。使用提示詞範本最佳化提示詞時,變數會替換為提示詞資料集中的資料。
提示詞範本變數必須符合下列規定:
- 變數必須以大括號括住
- 變數名稱不得包含空格或破折號
- 代表多模態輸入內容的變數,必須在變數後方加上
MIME_TYPE字串:@@@MIME_TYPE
使用下列任一方法建立提示詞範本和系統指令:
Notebook
如要透過筆記本執行資料導向最佳化工具,請按照下列步驟建立系統指令和提示詞範本:
在 Colab Enterprise 中,開啟 Gemini Enterprise Agent Platform 提示詞最佳化工具筆記本。
在「Create a prompt template and system instructions」(建立提示詞範本和系統指令) 部分,執行下列操作:
在 SYSTEM_INSTRUCTION 欄位輸入系統指令。例如:
Based on the following images and articles respond to the questions.'\n' Be concise, and answer \"I don't know\" if the response cannot be found in the provided articles or images.
在「PROMPT_TEMPLATE」PROMPT_TEMPLATE欄位輸入提示詞範本。例如:
Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}如要使用
question_answering_correctness或運算式評估來最佳化提示,請務必執行下列任一操作:
SDK
如要透過 SDK 執行資料導向最佳化工具,而不使用筆記本,請按照下列步驟建立提示詞範本和系統指令的文字檔案:
建立系統指令的文字檔案。
在文字檔案中,定義要提供給文字檔案的系統指令。例如:
Based on the following images and articles respond to the questions.'\n' Be concise, and answer \"I don't know\" if the response cannot be found in the provided articles or images.
為提示詞範本建立文字檔案。
在文字檔中,定義包含一或多個變數的提示詞範本。例如:
Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}如要使用
question_answering_correctness或運算式評估來最佳化提示,請務必執行下列任一操作:
準備範例提示
為獲得最佳效果,請使用 50 到 100 個樣本提示。
- 即使只有 5 個範例提示,這項工具仍可發揮作用。
- 最佳樣本應包含目標模型成效不佳和成效良好的範例。
範例提示詞包含取代提示詞範本中變數的資料。您可以使用 JSONL 或 CSV 檔案儲存範例提示。
JSONL 檔案
- 建立 JSONL 檔案。
在 JSONL 檔案中,新增要取代各變數的提示資料。例如:
{"article_1": "The marine life …", "image_1": "gs://path_to_image", "Question": "What are some most effective ways to reduce ocean pollution?", "target": "The articles and images don't answer this question."} {"article_1": "During the year …", "image_1": "gs://path_to_image", "Question": "Who was the president in 2023?", "target": "Joe Biden"}
CSV 檔案
- 建立 CSV 檔案。
- 在第一列中,新增提示詞範本中的變數。
- 在後續資料列中,新增取代各變數的樣本資料。
- 將 CSV 檔案上傳至 Cloud Storage bucket。
選用:建立自訂指標
請按照下列步驟建立自訂指標:
建立名為
requirements.txt的文字檔。在
requirements.txt檔案中,定義自訂評估指標函式所需的程式庫。所有函式都需要functions-framework套件。舉例來說,計算 ROUGE-L 的自訂指標
requirements.txt檔案大致如下:functions-framework==3.* rouge-score
建立名為
main.py的 Python 檔案。在
main.py檔案中,編寫自訂評估函式。這個函式必須接受下列項目:- HTTP POST 要求
- JSON 輸入內容,包含
response(LLM 的輸出內容) 和reference(提示資料集提供的提示基準真相回覆)。
舉例來說,計算 ROUGE-L 的自訂指標
main.py檔案會類似於以下內容:from typing import Any import json import functions_framework from rouge_score import rouge_scorer # Register an HTTP function with the Functions Framework @functions_framework.http def main(request): request_json = request.get_json(silent=True) if not request_json: raise ValueError('Can not find request json.') """Extract 'response' and 'reference' from the request payload. 'response' represents the model's response, while 'reference' represents the ground truth response.""" response = request_json['response'] reference = request_json['reference'] # Compute ROUGE-L F-measure scorer = rouge_scorer.RougeScorer(['rougeL'], use_stemmer=True) scores = scorer.score(reference, response) final_score = scores['rougeL'].fmeasure # Return the custom score in the response return json.dumps({ # The following key is the CUSTOM_METRIC_NAME that you pass to the job 'custom_accuracy': final_score, # The following key is optional 'explanation': 'ROUGE_L F-measure between reference and response', })執行
gcloud functions deploy指令,將自訂評估函式部署為 Cloud Run 函式:gcloud functions deploy FUNCTION_NAME \ --project PROJECT_ID \ --gen2 \ --memory=2Gb \ --concurrency=6 \ --min-instances 6 \ --region=REGION \ --runtime="python310" \ --source="." \ --entry-point main \ --trigger-http \ --timeout=3600 \ --quiet
更改下列內容:
FUNCTION_NAME:自訂評估 指標的名稱。PROJECT_ID:您的專案 ID。REGION:要部署函式的區域。這個區域應與目標模型使用的區域相同。
建立設定
資料導向最佳化工具設定會指定要為提示最佳化工作設定的參數。
請注意,Gemini Enterprise Agent Platform 未提供 Gemma 模型的代管 API。如要使用 Gemma 模型,您必須先在 Model Garden 或本機電腦上,部署經過指令調整 (-it) 的 Gemma 模型。如要進一步瞭解如何在 Model Garden 中部署,請參閱「使用 Gemma 開放式模型」。如要進一步瞭解如何部署至本機電腦,請參閱「使用 Ollama 執行 Gemma」。
使用下列任一選項建立設定:
Notebook
如要透過筆記本執行資料導向最佳化工具,請按照下列步驟建立設定:
在 Colab Enterprise 中,開啟資料導向最佳化工具筆記本。
在「Configure project settings」(設定專案設定) 部分,執行下列操作:
- 在「PROJECT_ID」PROJECT_ID欄位中,輸入專案 ID。
- 在「LOCATION」(位置) 欄位中,輸入要執行資料導向最佳化工具的位置。
- 在「OUTPUT_PATH」OUTPUT_PATH欄位中,輸入 Cloud Storage bucket 的 URI,資料導向最佳化工具會將最佳化的系統指令和/或少量樣本範例寫入該 bucket。例如:
gs://bucket-name/output-path。 - 在「INPUT_PATH」INPUT_PATH欄位中,輸入 Cloud Storage bucket 中範例提示的 URI。例如:
gs://bucket-name/sample-prompts.jsonl。
在「Configure optimization settings」(調整最佳化設定) 部分,執行下列操作:
- 在「TARGET_MODEL」TARGET_MODEL欄位中,輸入要最佳化提示的模型。
- 在「THINKING_BUDGET」THINKING_BUDGET欄位中,輸入要最佳化提示的目標模型思考預算。預設值為 -1,代表非思考型模型不會思考,而 Gemini 2.5 等思考型模型會自動思考。如要瞭解手動預算設定,請參閱「思考」一節。
- 在 OPTIMIZATION_MODE 中,輸入要使用的最佳化模式。必須是下列其中一項:
instruction:最佳化系統指令。demonstration:選取範例提示,做為少量樣本範例新增至系統指令。instruction_and_demo:同時執行上述兩項動作。
- 在「EVAL_METRIC」EVAL_METRIC欄位中,輸入要用來最佳化提示的評估指標。
- 選用:在 SOURCE_MODEL 欄位,輸入先前搭配系統指令和提示使用的 Google 模型。設定
source_model參數後,資料導向最佳化工具會在來源模型上執行範例提示,為您生成基準真相回覆,用於需要基準真相回覆的評估指標。如果您先前未曾使用 Google 模型執行提示,或未達到目標結果,請改為在提示中加入基準真相回應。詳情請參閱本文的「建立提示和系統指令」一節。
選用:在「Configure advanced optimization settings」(設定進階最佳化設定) 部分,您也可以在設定中新增任何選用參數。
- 在「NUM_INST_OPTIMIZATION_STEPS」NUM_INST_OPTIMIZATION_STEPS欄位中,輸入資料導向最佳化工具在指令最佳化模式中使用的疊代次數。執行階段會隨著這個值的增加而線性增加。必須是介於
10和20之間的整數。如未設定,預設值為10。 - 在「NUM_DEMO_OPTIMIZATION_STEPS」NUM_DEMO_OPTIMIZATION_STEPS欄位中,輸入資料導向最佳化工具評估的示範數量。與
demonstration和instruction_and_demo最佳化模式搭配使用。必須是介於10和30之間的整數。如未設定,預設值為10。 - 在「NUM_DEMO_PER_PROMPT」NUM_DEMO_PER_PROMPT欄位中,輸入每個提示生成的示範數量。必須是介於
2和範例提示總數減 1 之間的整數。如未設定,預設值為3。 - 在「TARGET_MODEL_QPS」TARGET_MODEL_QPS欄位中,輸入資料導向最佳化工具傳送至目標模型的每秒查詢次數 (QPS)。執行階段會隨著這個值的增加而線性減少。必須是浮點數,且大於或等於
3.0,但小於目標模型的 QPS 配額。如未設定,預設值為3.0。 - 在「SOURCE_MODEL_QPS」SOURCE_MODEL_QPS欄位中,輸入資料導向最佳化工具傳送至來源模型的每秒查詢次數 (QPS)。必須是浮點數,且大於或等於
3.0,但小於來源模型的 QPS 配額。如未設定,預設值為3.0。 - 在「EVAL_QPS」EVAL_QPS欄位中,輸入資料導向最佳化工具傳送至 Gen AI Evaluation Service 或 Cloud Run 函式的每秒查詢次數 (QPS)。
- 如果是以模型為基礎的指標,則必須是
3.0以上的浮點值。如未設定,預設值為3.0。 - 如果是自訂指標,則必須是
3.0以上的浮點數。這會決定資料導向最佳化工具呼叫自訂指標 Cloud Run 函式的頻率。
- 如果是以模型為基礎的指標,則必須是
- 如要使用多個評估指標,請執行下列操作:
- 在「EVAL_METRIC_1」EVAL_METRIC_1欄位中,輸入要使用的評估指標。
- 在「EVAL_METRIC_1_WEIGHT」EVAL_METRIC_1_WEIGHT欄位中,輸入您希望以資料為準的最佳化工具在執行最佳化時使用的權重。
- 在「EVAL_METRIC_2」EVAL_METRIC_2欄位中,輸入要使用的評估指標。
- 在「EVAL_METRIC_2_WEIGHT」EVAL_METRIC_2_WEIGHT欄位中,輸入您希望資料導向最佳化工具在執行最佳化時使用的權重。
- 在「EVAL_METRIC_3」EVAL_METRIC_3欄位中,視需要輸入要使用的評估指標。
- 在「EVAL_METRIC_3_WEIGHT」EVAL_METRIC_3_WEIGHT欄位中,視需要輸入資料導向最佳化工具執行最佳化時要使用的權重。
- 在「METRIC_AGGREGATION_TYPE」METRIC_AGGREGATION_TYPE欄位中,輸入您希望以數據為準最佳化工具在執行最佳化時使用的權重。
- 在 PLACEHOLDER_TO_VALUE 欄位中,輸入要取代系統指令中任何變數的資訊。資料導向最佳化工具不會最佳化這個標記中的資訊。
- 在「RESPONSE_MIME_TYPE」RESPONSE_MIME_TYPE欄位中,輸入目標模型使用的 MIME 類型。必須是
text/plain或application/json。如未設定,預設值為text/plain。 - 在「TARGET_LANGUAGE」TARGET_LANGUAGE欄位中,輸入系統指令的語言。如未設定,預設值為英文。
SDK
如要透過 SDK 執行資料導向最佳化工具,請建立 JSON 檔案,並按照下列步驟操作,加入要用於最佳化提示的參數:
建立 JSON 檔案,並加入要用於最佳化提示詞的參數。每個設定檔都需要下列參數。
vertexai.types.PromptOptimizerMethod.OPTIMIZATION_TARGET_GEMINI_NANO和vertexai.types.PromptOptimizerMethod.VAPO的設定略有不同。VAPO
{ "project": "PROJECT_ID", "system_instruction": "SYSTEM_INSTRUCTION", "prompt_template": "PROMPT_TEMPLATE", "target_model": "TARGET_MODEL", "thinking_budget": "THINKING_BUDGET", EVALUATION_METRIC_PARAMETERS, "optimization_mode": "OPTIMIZATION_MODE", "input_data_path": "SAMPLE_PROMPT_URI", "output_path": "OUTPUT_URI" }GEMINI_NANO
{ "project": "PROJECT_ID", "system_instruction": "SYSTEM_INSTRUCTION", "prompt_template": "PROMPT_TEMPLATE", "target_model": "TARGET_MODEL", "target_model_endpoint_url": "BASE_URL", EVALUATION_METRIC_PARAMETERS, "optimization_mode": "OPTIMIZATION_MODE", "input_data_path": "SAMPLE_PROMPT_URI", "output_path": "OUTPUT_URI" }更改下列內容:
PROJECT_ID:您的專案 ID。SYSTEM_INSTRUCTION:要最佳化的系統指令。PROMPT_TEMPLATE:提示詞範本。TARGET_MODEL:要最佳化提示的模型。OPTIMIZATION_TARGET_GEMINI_NANO請使用經過指令調整 (-it) 的模型。BASE_URL:部署在 Model Garden 或本機電腦的模型基準網址。例如https://<var>DEDICATED_ENDPOINT_DNS</var>/v1beta1/projects/<var>PROJECT_NUMBER</var>/locations/<var>LOCATION</var>/endpoints/<var>ENDPOINT_ID</var>或http://localhost:8000/v1。OPTIMIZATION_TARGET_GEMINI_NANO設定的必要項目。THINKING_BUDGET:要最佳化提示的目標模型思考預算。預設值為 -1,代表非思考型模型不會思考,而 Gemini 2.5 等思考型模型會自動思考。如要瞭解手動預算設定,請參閱「思考」一節。請注意,部分模型 (例如 Gemma 模型) 不支援thinking_budget。EVALUATION_METRIC_PARAMETERS:指定的參數取決於使用的評估指標數量,以及指標是標準還是自訂:單一標準指標
如果使用單一標準評估指標,請使用下列參數:
"eval_metric": "EVALUATION_METRIC",
將
EVALUATION_METRIC替換為要最佳化提示的指標。單一自訂指標
如果使用單一自訂評估指標,請使用下列參數:
"eval_metric": "custom_metric", "custom_metric_name": "CUSTOM_METRIC_NAME", "custom_metric_cloud_function_name": "FUNCTION_NAME",
更改下列內容:
CUSTOM_METRIC_NAME:指標名稱,由與final_score對應的鍵定義。例如:custom_accuracy。FUNCTION_NAME:先前部署的 Cloud Run 函式名稱。
多項標準指標
如要使用多項標準評估指標,請使用下列參數:
"eval_metrics_types": [EVALUATION_METRIC_LIST], "eval_metrics_weights": [EVAL_METRICS_WEIGHTS], "aggregation_type": "METRIC_AGGREGATION_TYPE",
更改下列內容:
EVALUATION_METRIC_LIST:評估指標清單。必須是陣列。例如:"bleu", "summarization_quality"。EVAL_METRICS_WEIGHTS:各項指標的權重。必須是陣列,且長度與EVALUATION_METRIC_LIST相同。METRIC_AGGREGATION_TYPE:評估指標使用的匯總類型。必須是weighted_sum或weighted_average。如未設定,預設值為weighted_sum。
多項標準和自訂指標
如果您使用多項評估指標,其中包含單一自訂指標和一或多項標準指標,請使用下列參數:
"eval_metrics_types": ["custom_metric", EVALUATION_METRIC_LIST], "eval_metrics_weights": [EVAL_METRICS_WEIGHTS], "aggregation_type": "METRIC_AGGREGATION_TYPE", "custom_metric_name": "CUSTOM_METRIC_NAME", "custom_metric_cloud_function_name": "FUNCTION_NAME",
更改下列內容:
EVALUATION_METRIC_LIST:標準評估指標清單。必須是陣列。例如:"bleu", "summarization_quality"。EVAL_METRICS_WEIGHTS:各項指標的權重。必須是陣列。METRIC_AGGREGATION_TYPE:評估指標使用的匯總類型。必須是weighted_sum或weighted_average。如未設定,預設值為weighted_sum。CUSTOM_METRIC_NAME:指標名稱,由與final_score對應的鍵定義。例如:custom_accuracy。FUNCTION_NAME:先前部署的 Cloud Run 函式名稱。
OPTIMIZATION_MODE:最佳化模式。必須是下列其中一個值:instruction:最佳化系統指令。demonstration:選取範例提示,做為少量樣本範例新增至系統指令。instruction_and_demo:同時執行上述兩項動作。
SAMPLE_PROMPT_URI:Cloud Storage bucket 中範例提示的 URI。例如:gs://bucket-name/sample-prompts.jsonl。OUTPUT_URI:Cloud Storage bucket 的 URI,資料導向最佳化工具會將最佳化的系統指令和/或少量樣本範例寫入該 bucket。例如:gs://bucket-name/output-path。
您也可以在設定檔中加入任何選用參數。
選用參數分為 5 類:
- 最佳化程序參數。這些參數會控制整體最佳化程序,包括持續時間和執行的最佳化疊代次數,直接影響最佳化品質。
- 模型選取和位置參數。這些參數會指定以數據為準最佳化工具使用的模型,以及使用這些模型的位置。
- 延遲時間 (QPS) 參數。這些參數會控制 QPS,進而影響最佳化程序的速度。
- 其他:其他控制提示結構和內容的參數。
查看選用參數
"num_steps": NUM_INST_OPTIMIZATION_STEPS, "num_demo_set_candidates": "NUM_DEMO_OPTIMIZATION_STEPS, "demo_set_size": NUM_DEMO_PER_PROMPT, "target_model_location": "TARGET_MODEL_LOCATION", "source_model": "SOURCE_MODEL", "source_model_location": "SOURCE_MODEL_LOCATION", "target_model_qps": TARGET_MODEL_QPS, "eval_qps": EVAL_QPS, "source_model_qps": SOURCE_MODEL_QPS, "response_mime_type": "RESPONSE_MIME_TYPE", "language": "TARGET_LANGUAGE", "placeholder_to_content": "PLACEHOLDER_TO_CONTENT", "data_limit": DATA_LIMIT
更改下列內容:
最佳化程序參數:
NUM_INST_OPTIMIZATION_STEPS:以數據為準的最佳化工具在指令最佳化模式中使用的疊代次數。執行階段會隨著這個值的增加而線性增加。必須是介於10和20之間的整數。如未設定,預設值為10。NUM_DEMO_OPTIMIZATION_STEPS:資料導向最佳化工具評估的示範數量。與demonstration和instruction_and_demo最佳化模式搭配使用。必須是介於2和範例提示總數減 1 之間的整數。如未設定,預設值為10。NUM_DEMO_PER_PROMPT:每個提示生成的示範數量。必須是介於3和6之間的整數。如未設定,預設值為3。
模型選取和位置參數:
延遲時間 (QPS) 參數:
TARGET_MODEL_QPS:資料導向最佳化工具傳送至目標模型的每秒查詢次數 (QPS)。執行階段會隨著這個值的增加而線性減少。必須是3.0以上的浮點數,但小於目標模型的 QPS 配額。如未設定,預設值為3.0。EVAL_QPS:資料導向最佳化工具傳送至 Gen AI Evaluation Service 或 Cloud Run 函式的每秒查詢次數 (QPS)。- 如果是以模型為基礎的指標,則必須是
3.0以上的浮點值。如未設定,預設值為3.0。 - 如果是自訂指標,則必須是
3.0以上的浮點數。這會決定資料導向最佳化工具呼叫自訂指標 Cloud Run 函式的頻率。
- 如果是以模型為基礎的指標,則必須是
SOURCE_MODEL_QPS:資料導向最佳化工具傳送至來源模型的每秒查詢次數 (QPS)。必須是浮點數,且大於或等於3.0,但小於來源模型的 QPS 配額。如未設定,預設值為3.0。
其他參數:
RESPONSE_MIME_TYPE:目標模型使用的 MIME 回應類型。必須是text/plain或application/json。如未設定,預設值為text/plain。TARGET_LANGUAGE:系統指令的語言。如未設定,預設值為英文。PLACEHOLDER_TO_CONTENT:取代系統指令中任何變數的資訊。資料導向提示最佳化工具不會最佳化這個旗標中的資訊。DATA_LIMIT:用於驗證的資料量。執行階段會隨著這個值線性增加。必須是介於5和100之間的整數。如未設定,預設值為100。
執行提示最佳化工具
使用下列其中一個選項,執行以資料為準的最佳化工具:
筆記本
請按照下列步驟,透過筆記本執行資料導向最佳化工具:
在 Colab Enterprise 中,開啟 Gemini Enterprise Agent Platform 提示詞最佳化工具筆記本。
在「Run prompt optimizer」部分,按一下 play_circle「Run cell」。
資料導向最佳化工具會執行。
REST
使用任何要求資料之前,請先修改下列項目的值:
- LOCATION:要執行 Gemini Enterprise Agent Platform 提示詞最佳化工具的位置。
- PROJECT_ID:您的專案 ID。
- JOB_NAME:Gemini Enterprise Agent Platform 提示最佳化工具工作的名稱。
- PATH_TO_CONFIG:Cloud Storage bucket 中設定檔的 URI。例如:
gs://bucket-name/configuration.json。
HTTP 方法和網址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs
JSON 要求內文:
{
"displayName": "JOB_NAME",
"jobSpec": {
"workerPoolSpecs": [
{
"machineSpec": {
"machineType": "n1-standard-4"
},
"replicaCount": 1,
"containerSpec": {
"imageUri": "us-docker.pkg.dev/vertex-ai-restricted/builtin-algorithm/apd:preview_v1_0",
"args": ["--config=PATH_TO_CONFIG"]
}
}
]
}
}
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs"
PowerShell
將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content
回應內容大致如下:
SDK
在 Colab 或 Notebook 中加入下列程式碼區段,即可透過 SDK 執行資料導向最佳化工具。
請依指示取代下列項目:
LOCATION:要執行資料導向最佳化工具的位置。PROJECT_ID:您的專案 ID。PROJECT_NUMBER:您的專案編號,可在 Google Cloud 控制台查看。PATH_TO_CONFIG:Cloud Storage 中設定檔的 URI。例如:gs://bucket-name/configuration.json。
# Authenticate
from google.colab import auth
auth.authenticate_user(project_id=PROJECT_ID)
# Set the Service Account
SERVICE_ACCOUNT = f"{PROJECT_NUMBER}-compute@developer.gserviceaccount.com"
# Import Agent Platform SDK and Setup
import vertexai
vertexai.init(project=PROJECT_ID, location=LOCATION)
#Create the Agent Platform Client
client = vertexai.Client(project=PROJECT_ID, location=LOCATION)
# Setup the job dictionary
vapo_config = {
'config_path': PATH_TO_CONFIG,
'service_account': SERVICE_ACCOUNT,
'wait_for_completion': True,
}
#Start the Agent Platform Prompt Optimizer
client = client.prompt_optimizer.optimize(method=vertexai.types.PromptOptimizerMethod.VAPO, config=vapo_config)
如要使用 Gemma 模型做為目標模型,請進行下列變更:
nano_config = vertexai.types.PromptOptimizerConfig(
config_path="gs://sample-bucket/config_nano.json",
service_account_project_number=project_number,
wait_for_completion=True
)
# Simpler version
# nano_config = {
# "config_path": "gs://sample-bucket/config_nano.json",
# "service_account": service_account,
# "wait_for_completion": True
# }
logging.basicConfig(encoding='utf-8', level=logging.INFO, force=True)
client.prompt_optimizer.optimize(
method=vertexai.types.PromptOptimizerMethod.OPTIMIZATION_TARGET_GEMINI_NANO,
config=nano_config
)
最佳化完成後,請在設定中指定的輸出位置檢查輸出構件。
分析結果並反覆調整
執行資料導向最佳化工具後,請使用下列任一選項查看工作進度:
Notebook
如要透過筆記本查看資料導向最佳化工具的結果,請按照下列步驟操作:
在「Inspect the results」(檢查結果) 部分,執行下列操作:
在「RESULT_PATH」RESULT_PATH欄位中,新增 Cloud Storage bucket 的 URI,您已設定資料導向最佳化工具將結果寫入該 bucket。例如:
gs://bucket-name/output-path。按一下「play_circle 執行儲存格」play_circle。
控制台
前往 Google Cloud 控制台「Agent Platform」部分的「Training pipelines」(訓練管道) 頁面。
按一下「Custom jobs」(自訂工作) 分頁標籤。data-driven optimizer 的自訂訓練工作會顯示在清單中,並附上狀態。
工作完成後,請按照下列步驟查看最佳化結果:
前往 Google Cloud 控制台的「Cloud Storage bucket」頁面:
按一下 Cloud Storage bucket 的名稱。
前往與評估提示詞時所用最佳化模式同名的資料夾,即
instruction或demonstration。如果您使用instruction_and_demo模式,則會顯示這兩個資料夾。instruction資料夾包含系統指令最佳化結果,demonstration資料夾則包含demonstration最佳化結果和最佳化系統指令。資料夾包含下列檔案:
config.json:Gemini Enterprise Agent Platform 提示最佳化工具使用的完整設定。templates.json:資料導向最佳化工具生成的每組系統指令和/或少量樣本,以及其評估分數。eval_results.json:目標模型對每個樣本提示詞的回覆,以及每組生成的系統指令和/或少量樣本示例,以及其評估分數。optimized_results.json:成效最佳的系統指令和/或少量樣本範例,以及其評估分數。
如要查看最佳化系統指令,請查看
optimized_results.json檔案。
最佳做法
預先發布版模型僅支援
global區域,而 Vertex 自訂工作不支援global區域。因此,請勿使用 VAPO 最佳化預先發布版模型,做為目標模型。如果是正式發布版模型,使用者可以選取特定區域的位置,例如
us-central1或europe-central2,而非global,以符合資料落地規定。
後續步驟
- 試用 Gemini Enterprise Agent Platform 提示最佳化工具 SDK 筆記本。
- 瞭解負責任的 AI 最佳做法和 Agent Platform 的安全篩選器。
- 進一步瞭解提示策略。