优化提示

本文档介绍了如何使用 Vertex AI 提示优化器通过改进一组提示的系统指令来自动优化提示效果。

Vertex AI 提示优化器可帮助您快速大规模改进提示,而无需手动重写系统指令或各个提示。如果您想将针对一个模型编写的系统指令和提示用于另一个模型,则此优化器特别有用。

Vertex AI 提示优化器可根据指定的评估指标评估模型对示例提示的回答,从而帮助改进提示。如需使用 Vertex AI 提示优化器,您必须拥有以下各项:

  • 一组示例提示
  • 所有示例提示都使用的系统指令
  • 引用了示例提示的提示模板

提示优化示例

例如,如需针对一组提示优化系统指令,以便参考上下文信息来回答有关烹饪的问题,您可以使用 Vertex AI 提示优化器。如需完成此任务,您需要准备类似于以下内容的输入:

系统指令

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
What are some techniques for cooking red meat and pork that maximize flavor and tenderness while minimizing the formation of unhealthy compounds? Red meat and pork should be cooked to an internal temperature of 145 degrees fahrenheit (63 degrees celsius) to ensure safety. Marinating meat in acidic ingredients like lemon juice or vinegar can help tenderize it by breaking down tough muscle fibers. High-heat cooking methods like grilling and pan-searing can create delicious browning and caramelization, but it's important to avoid charring, which can produce harmful compounds.
What are some creative ways to add flavor and nutrition to protein shakes without using added sugars or artificial ingredients? Adding leafy greens like spinach or kale is a great way to boost the nutritional value of your shake without drastically altering the flavor. Using unsweetened almond milk or coconut water instead of regular milk can add a subtle sweetness and a boost of healthy fats or electrolytes, respectively. Did you know that over-blending your shake can actually heat it up? To keep things cool and refreshing, blend for shorter bursts and give your blender a break if needed.

优化的工作原理

准备好输入内容后,您可以选择优化模式、评估指标和目标模型

  • 优化模式:指定 Vertex AI 提示优化器是否优化系统指令和/或选择要作为少样本示例添加到系统指令中的示例提示。
  • 评估指标:Vertex AI 提示优化器用于优化系统指令和/或选择示例提示的指标。
  • 目标模型:Vertex AI 提示优化器优化系统指令和/或选择示例提示以与其结合使用的 Google 模型

当您运行 Vertex AI 提示优化器时,它会根据您的选择优化系统指令,方法是运行自定义训练作业,即迭代评估示例提示并重写系统指令,以找到可为目标模型生成最佳评估得分的版本。

在作业结束时,Vertex AI 提示优化器会输出经过优化的系统指令及其评估得分。

优化的系统指令

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.

支持的模型

您可以优化系统指令,以便与以下模型搭配使用:

支持的评估指标

Vertex AI 提示优化器支持自定义评估指标,还支持以下评估指标:

指标类型 使用场景 指标 说明
基于模型 摘要 summarization_quality 描述模型基于一段给定的参考文本回答问题的能力。
问答 question_answering_correctness* 描述模型正确回答问题的能力。
question_answering_quality 描述模型基于一段给定的参考文本回答问题的能力。
连贯性 coherence 描述模型提供连贯回答的能力,并衡量生成的文本在逻辑上流畅且合理的程度。
安全 safety 描述模型的安全级别,即回答是否包含任何不安全的文本。
流畅度 fluency 描述模型的语言掌握情况。
标准答案关联性 groundedness 描述模型仅提供或参考输入文本中所含信息的能力。
基于计算 工具使用和函数调用 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 参数后,Vertex AI 会在来源模型上运行示例提示,以便为您生成标准答案。

准备工作

优化提示

您可以通过运行 Vertex AI 提示优化器笔记本或使用 Vertex AI API 来优化提示。如需优化提示,请选择您要使用哪种方法来运行 Vertex AI 提示优化器,然后完成以下部分中详细介绍的步骤:

  1. 创建提示模板和系统指令
  2. 准备示例提示
  3. 选择评估指标
  4. 创建配置
  5. 运行提示优化作业
  6. 分析结果并进行迭代

创建提示模板和系统指令

提示模板通过可替换的变量定义所有提示的格式。使用提示模板优化提示时,变量会被替换为提示数据集中的数据。

提示模板变量必须满足以下要求:

  • 变量必须用花括号括起来
  • 变量名称不得包含空格
  • 表示多模态输入的变量必须在变量后面包含 MIME_TYPE 字符串:

    @@@MIME_TYPE
    

    MIME_TYPE 替换为目标模型支持的图片视频音频文档 MIME 类型。

使用以下方法之一创建提示模板和系统指令:

笔记本

如果您想通过笔记本运行 Vertex AI 提示优化器,请通过执行以下操作来创建系统指令和提示模板:

  1. 在 Colab Enterprise 中,打开 Vertex AI 问题优化器笔记本。

    前往 Vertex AI 提示优化器笔记本

  2. 创建提示模板和系统说明部分,执行以下操作:

    1. 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.
      
    2. PROMPT_TEMPLATE 字段中,输入您的提示模板。例如:

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
      
    3. 如果您要使用 question_answering_correctness 或基于计算的评估来优化提示,则必须执行以下操作之一:

    • {target} 变量添加到问题模板中,以表示问题的标准答案。例如:

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
      
    • 如果您没有提示的标准答案,但之前将提示与 Google 模型结合使用并获得了所需结果,则可以将 source_model 参数添加到配置中,而不是添加标准答案。设置 source_model 参数后,Vertex AI 提示优化器会在来源模型上运行示例提示,以便为您生成标准答案。

SDK

如果您想通过 SDK 运行 Vertex AI 提示优化器,而不使用笔记本,请通过执行以下操作来为提示模板和系统指令创建文本文件:

  1. 为系统指令创建文本文件。

  2. 在文本文件中定义系统指令。例如:

    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.
    
  3. 为提示模板创建一个文本文件。

  4. 在文本文件中,定义一个包含一个或多个变量的提示模板。例如:

    Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
    
  5. 如果您要使用 question_answering_correctness 或基于计算的评估来优化提示,则必须执行以下操作之一:

    • {target} 变量添加到问题模板中,以表示问题的标准答案。例如:

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
      
    • 如果您没有提示的标准答案,但之前将提示与 Google 模型结合使用并获得了所需结果,则可以将 source_model 参数添加到配置中,而不是添加标准答案。设置 source_model 参数后,Vertex AI 提示优化器会在来源模型上运行示例提示,以便为您生成标准答案。

准备示例提示

为了让 Vertex AI 提示优化器取得最佳效果,请使用 50-100 个示例提示。

  • 即使只有 5 个示例提示,该工具也能发挥出色效果。
  • 最佳示例应包含目标模型表现不佳的示例。

示例提示包含用于替换提示模板中变量的数据。您可以使用 JSONL 或 CSV 文件存储示例问题。

JSONL 文件

  1. 创建一个 JSONL 文件。
  2. 在 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"}
    
  3. 将 JSONL 文件上传到 Cloud Storage 存储桶

CSV 文件

  1. 创建一个 CSV 文件
  2. 在第一行中,添加提示模板中的变量。
  3. 在以下各行中,添加用于替换每个变量的示例数据。
  4. 将 CSV 文件上传到 Cloud Storage 存储桶

选择评估指标

Vertex AI 提示优化器使用评估指标来优化系统指令和选择示例提示。

支持的评估指标中选择一个评估指标,或自行定义自定义评估指标。当标准指标不适合您的应用时,自定义指标会很有用。您可以使用多个指标来优化提示。但是,Vertex AI 提示优化器一次仅支持一个自定义指标。例如,您可以使用自定义指标和 bleu 指标运行 Vertex AI 提示优化器,也可以使用 bleurougesummarization_quality 指标运行 Vertex AI 提示优化器,但您不能同时使用多个自定义指标运行 Vertex AI 提示优化器。

请通过执行以下操作来创建自定义指标:

  1. 创建名为 requirements.txt 的文本文件。

  2. requirements.txt 文件中,为自定义评估指标函数定义所需的库。所有函数都需要 functions-framework 软件包。

    例如,用于计算 ROUGE-L 的自定义指标的 requirements.txt 文件如下所示:

    functions-framework==3.*
    rouge-score
    
  3. 创建一个名为 main.py 的 Python 文件。

  4. main.py 文件中,编写自定义评估函数。该函数必须接受以下各项:

    • HTTP POST 请求
    • JSON 输入,其中包含 response(即 LLM 的输出)和 target(即对相应问题的标准答案)。

    例如,用于计算 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 'target' from the request payload. 'response'
       represents the model's response, while 'target' represents the ground
       truth response."""
       response = request_json['response']
       reference = request_json['target']
    
       # 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',
       })
    
  5. 通过运行 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:要在其中部署该函数的区域。

创建配置

Vertex AI 问题优化器配置用于指定您要为问题优化作业设置的参数,包括:

  • 优化模式:指定 Vertex AI 提示优化器是否优化系统指令和/或选择要作为少样本示例添加到系统指令中的示例提示。
  • 评估指标:Vertex AI 提示优化器用于优化系统指令和/或选择示例提示的指标。
  • 目标模型:Vertex AI 提示优化器优化系统指令和/或选择示例提示以与其结合使用的 Google 模型

使用以下选项之一创建配置:

笔记本

如果您想通过笔记本运行 Vertex AI 提示优化器,请执行以下操作来创建配置:

  1. 在 Colab Enterprise 中,打开 Vertex AI 问题优化器笔记本。

    前往 Vertex AI 提示优化器笔记本

  2. 配置项目设置部分中,执行以下操作:

    1. PROJECT_ID 字段中,输入您的项目 ID。
    2. LOCATION 字段中,输入您要在其中运行 Vertex AI 提示优化器的位置。
    3. OUTPUT_PATH 字段中,输入您希望 Vertex AI 提示优化器将优化后的系统指令和/或少样本示例写入到的 Cloud Storage 存储桶的 URI。例如 gs://bucket-name/output-path
    4. INPUT_PATH 字段中,输入 Cloud Storage 存储桶中的示例提示的 URI。例如 gs://bucket-name/sample-prompts.jsonl
  3. 配置优化设置部分,执行以下操作:

    1. TARGET_MODEL 字段中,输入您要优化提示以与其结合使用的模型
    2. OPTIMIZATION_MODE 中,输入要使用的优化模式。必须是 instructiondemonstrationinstruction_and_demo 之一。
    3. EVAL_METRIC 字段中,输入您要针对其优化问题的评估指标
    4. 可选:在 SOURCE_MODEL 字段中,输入系统指令和提示之前与其结合使用的 Google 模型。设置 source_model 参数后,Vertex AI 提示优化器会在来源模型上运行示例提示,以便针对需要标准答案的评估指标为您生成标准答案。如果您之前未使用 Google 模型运行提示,或者未获得目标结果,请改为向提示添加标准答案。如需了解详情,请参阅本文档中的创建提示和系统指令部分。
  4. 可选:在配置高级优化设置部分中,您还可以在配置中添加任何可选参数。

  5. 查看可选参数
    • NUM_INST_OPTIMIZATION_STEPS 字段中,输入 Vertex AI 提示优化器在指令优化模式中使用的迭代次数。随着此值的增加,运行时会线性增加。必须是介于 1020 之间的整数。如果未设置,则默认值为 10
    • NUM_TEMPLATES_PER_STEP 字段中,输入 Vertex AI 提示优化器生成和评估的系统指令数量。与 instructioninstruction_and_demo 优化模式搭配使用。必须是介于 14 之间的整数。如果未设置,则默认值为 2
    • NUM_DEMO_OPTIMIZATION_STEPS 字段中,输入 Vertex AI 提示优化器评估的演示数量。与 demonstrationinstruction_and_demo 优化模式搭配使用。 必须是介于 1030 之间的整数。如果未设置,则默认值为 10
    • NUM_DEMO_PER_PROMPT 字段中,输入每个问题生成的演示数量。必须是介于 36 之间的整数。如果未设置,则默认值为 3
    • TARGET_MODEL_QPS 字段中,输入 Vertex AI 提示优化器发送到目标模型的每秒查询次数 (QPS)。随着此值的增大,运行时会线性缩短。必须为 3.0 或更大的浮点数,但小于对目标模型设置的 QPS 配额。如果未设置,则默认值为 3.0
    • SOURCE_MODEL_QPS 字段中,输入 Vertex AI 提示优化器发送到来源模型的每秒查询次数 (QPS)。必须为 3.0 或更大的浮点数,但小于对来源模型设置的 QPS 配额。如果未设置,则默认值为 3.0
    • EVAL_QPS 字段中,输入 Vertex AI 提示优化器发送到评估模型 gemini-1.5-pro 的每秒查询次数 (QPS)。
      • 对于基于模型的指标,必须为大于或等于 3.0 且小于您为 gemini-1.5-pro 分配的配额的浮点数。如果未设置,则默认值为 3.0
      • 对于自定义指标,必须为大于或等于 3.0 的浮点数。这会确定 Vertex AI 提示优化器调用自定义指标 Cloud Run 函数的速率。
    • 如果您想要使用多个评估指标,请执行以下操作:
      1. EVAL_METRIC_1 字段中,输入您要使用的评估指标。
      2. EVAL_METRIC_1_WEIGHT 字段中,输入您希望 Vertex AI 提示优化器在运行优化时使用的权重。
      3. EVAL_METRIC_2 字段中,输入您要使用的评估指标。
      4. EVAL_METRIC_2_WEIGHT 字段中,输入您希望 Vertex AI 提示优化器在运行优化时使用的权重。
      5. EVAL_METRIC_3 字段中,视需要输入您要使用的评估指标。
      6. EVAL_METRIC_3_WEIGHT 字段中,视需要输入值
      7. METRIC_AGGREGATION_TYPE 字段中,输入您希望 Vertex AI 提示优化器在运行优化时使用的权重。
    • PLACEHOLDER_TO_VALUE 字段中,输入用于替换系统指令中的任何变量的信息。Vertex AI 提示优化器不会优化此标志中包含的信息。
    • RESPONSE_MIME_TYPE 字段中,输入目标模型使用的 MIME 回答类型。必须是 text/plainapplication/json 之一。如果未设置,则默认值为 text/plain
    • TARGET_LANGUAGE 字段中,输入系统说明的语言。如果未设置,则默认为英语。

SDK

如果您想通过 SDK 运行 Vertex AI 提示优化器,请执行以下操作来创建 JSON 文件,其中包含您要用于优化提示的参数:

  1. 创建一个 JSON 文件,其中包含您要用于优化提示的参数。每个配置文件都需要以下参数:

    {
     "project": "PROJECT_ID",
     "system_instruction_path": "SYSTEM_INSTRUCTION_PATH",
     "prompt_template_path": "PROMPT_TEMPLATE_PATH",
     "target_model": "TARGET_MODEL",
     EVALUATION_METRIC_PARAMETERS,
     "optimization_mode": "OPTIMIZATION_MODE",
     "input_data_path": "SAMPLE_PROMPT_URI",
     "output_path": "OUTPUT_URI"
    }
    

    替换以下内容:

    • PROJECT_ID:您的项目 ID。
    • SYSTEM_INSTRUCTION_PATH:Cloud Storage 存储桶中的系统指令的 URI。例如 gs://bucket-name/system-instruction.txt
    • PROMPT_TEMPLATE:Cloud Storage 存储桶中的提示模板的 URI。例如 gs://bucket-name/prompt-template.txt
    • TARGET_MODEL:您要优化提示以与其结合使用的模型
    • 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:每个指标的权重。必须是数组。
      • METRIC_AGGREGATION_TYPE:用于评估指标的汇总类型。必须是 weighted_sumweighted_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_sumweighted_average 之一。如果未设置,则默认值为 weighted_sum
      • CUSTOM_METRIC_NAME:指标名称,由与 final_score 对应的键定义。例如 custom_accuracy
      • FUNCTION_NAME:您之前部署的 Cloud Run 函数的名称。
    • OPTIMIZATION_MODE:优化模式。必须是 instructiondemonstrationinstruction_and_demo 之一。

    • SAMPLE_PROMPT_URI:Cloud Storage 存储桶中的示例提示的 URI。例如 gs://bucket-name/sample-prompts.jsonl

    • OUTPUT_URI:您希望 Vertex AI 提示优化器将优化后的系统指令和/或少样本示例写入到的 Cloud Storage 存储桶的 URI。 例如 gs://bucket-name/output-path

  2. 您还可以在配置文件中添加任何可选参数。

    可选参数分为 5 类:

    • 优化过程参数。这些参数用于控制整体优化过程,包括优化过程的时长和运行的优化迭代次数,这会直接影响优化质量。
    • 模型选择和位置参数。这些参数用于指定 Vertex AI 提示优化器使用的模型以及在其中使用这些模型的位置。
    • 延迟时间 (QPS) 参数。这些参数用于控制 QPS,从而影响优化过程的速度。
    • 其他。用于控制提示结构和内容的其他参数。

      查看可选参数
      "num_steps": NUM_INST_OPTIMIZATION_STEPS,
      "num_template_eval_per_step": NUM_TEMPLATES_PER_STEP,
      "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:Vertex AI 提示优化器在指令优化模式中使用的迭代次数。随着此值的增加,运行时会线性增加。必须是介于 1020 之间的整数。如果未设置,则默认值为 10
        • NUM_TEMPLATES_PER_STEP:Vertex AI 提示优化器生成和评估的系统指令数量。与 instructioninstruction_and_demo 优化模式搭配使用。必须是介于 14 之间的整数。如果未设置,则默认值为 2
        • NUM_DEMO_OPTIMIZATION_STEPS:Vertex AI 问题优化器评估的演示数量。与 demonstrationinstruction_and_demo 优化模式搭配使用。必须是介于 1030 之间的整数。如果未设置,则默认值为 10
        • NUM_DEMO_PER_PROMPT:每个问题生成的演示数量。必须是介于 36 之间的整数。如果未设置,则默认值为 3
      • 模型选择和位置参数:

        • TARGET_MODEL_LOCATION:您要在其中运行目标模型的位置。如果未设置,则默认值为 us-central1
        • SOURCE_MODEL:系统指令和提示之前与其结合使用的 Google 模型。设置 source_model 参数后,Vertex AI 会在来源模型上运行示例提示,以便针对需要标准答案的评估指标为您生成标准答案。如果您之前未使用 Google 模型运行提示,或者未获得目标结果,请改为向提示添加标准答案。如需了解详情,请参阅本文档中的创建提示和系统指令部分。
        • SOURCE_MODEL_LOCATION:您要在其中运行来源模型的位置。如果未设置,则默认值为 us-central1
      • 延迟时间 (QPS) 参数:

        • TARGET_MODEL_QPS:Vertex AI 提示优化器向目标模型发送的每秒查询次数 (QPS)。随着此值的增加,运行时会线性缩短。必须为 3.0 或更大的浮点数,但小于对目标模型设置的 QPS 配额。如果未设置,则默认值为 3.0
        • EVAL_QPS:Vertex AI 提示优化器发送到评估模型 gemini-1.5-pro 的每秒查询次数 (QPS)。
          • 对于基于模型的指标,必须为一个介于 3.0gemini-1.5-pro 配额之间的浮点数。如果未设置,则默认值为 3.0
          • 对于自定义指标,必须为大于或等于 3.0 的浮点数。这会确定 Vertex AI 提示优化器调用自定义指标 Cloud Run 函数的速率。
        • SOURCE_MODEL_QPS:Vertex AI 提示优化器发送到来源模型的每秒查询次数 (QPS)。必须为 3.0 或更大的浮点数,但小于对来源模型设置的 QPS 配额。如果未设置,则默认值为 3.0
      • 其他参数:

        • RESPONSE_MIME_TYPE:目标模型使用的 MIME 回答类型。必须是 text/plainapplication/json 之一。如果未设置,则默认值为 text/plain
        • TARGET_LANGUAGE:系统指令的语言。如果未设置,则默认为英语。
        • PLACEHOLDER_TO_CONTENT:用于替换系统指令中的任何变量的信息。Vertex AI 提示优化器不会优化此标志中包含的信息。
        • DATA_LIMIT:用于验证的数据量。运行时会随此值线性增加。必须是介于 5100 之间的整数。如果未设置,则默认值为 100
  3. 将 JSON 文件上传到 Cloud Storage 存储桶

运行提示优化器

使用以下选项之一运行 Vertex AI 提示优化器:

笔记本

如需通过笔记本运行 Vertex AI 提示优化器,请执行以下操作:

  1. 在 Colab Enterprise 中,打开 Vertex AI 问题优化器笔记本。

    前往 Vertex AI 提示优化器笔记本

  2. 运行提示优化器部分中,点击 play_circle 运行单元

    Vertex AI 提示优化器会运行。

REST

在使用任何请求数据之前,请先进行以下替换:

  • LOCATION:您要在其中运行 Vertex AI 提示优化器的位置。
  • PROJECT_ID:您的项目 ID
  • JOB_NAME:Vertex AI 提示优化器作业的名称。
  • PATH_TO_CONFIG:Cloud Storage 存储桶中的配置文件的 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

响应类似于以下内容:

Python

在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Python 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Python API 参考文档

如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证

from google.cloud import aiplatform

# Initialize Vertex AI platform
aiplatform.init(project=PROJECT_ID, location="us-central1")

# TODO(Developer): Check and update lines below
# cloud_bucket = "gs://cloud-samples-data"
# config_path = f"{cloud_bucket}/instructions/sample_configuration.json"
# output_path = "custom_job/output/"

custom_job = aiplatform.CustomJob(
    display_name="Prompt Optimizer example",
    worker_pool_specs=[
        {
            "replica_count": 1,
            "container_spec": {
                "image_uri": "us-docker.pkg.dev/vertex-ai-restricted/builtin-algorithm/apd:preview_v1_0",
                "args": [f"--config={cloud_bucket}/{config_path}"],
            },
            "machine_spec": {
                "machine_type": "n1-standard-4",
            },
        }
    ],
    staging_bucket=cloud_bucket,
    base_output_dir=f"{cloud_bucket}/{output_path}",
)

custom_job.submit()
print(f"Job resource name: {custom_job.resource_name}")
# Example response:
#    'projects/123412341234/locations/us-central1/customJobs/12341234123412341234'

分析结果并进行迭代

运行 Vertex AI 提示优化器后,请使用以下选项之一查看作业的进度:

笔记本

如果您想通过笔记本查看 Vertex AI 提示优化器的结果,请执行以下操作:

  1. 打开 Vertex AI 提示优化器笔记本

  2. 检查结果部分,执行以下操作:

    1. RESULT_PATH 字段中,添加您对 Vertex AI 提示优化器进行配置以将结果写入到的 Cloud Storage 存储桶的 URI。例如 gs://bucket-name/output-path

    2. 点击 play_circle 运行单元

控制台

  1. 在 Google Cloud 控制台的 Vertex AI 部分中,转到训练流水线页面。

    转到“训练流水线”

  2. 点击自定义作业标签页。Vertex AI 提示优化器的自定义训练作业及其状态会显示在列表中。

作业完成后,请通过执行以下操作查看优化结果:

  1. 在 Google Cloud 控制台中,前往 Cloud Storage 存储桶页面:

    进入“存储桶”

  2. 点击 Cloud Storage 存储桶的名称。

  3. 前往与您用于评估问题的优化模式(instructiondemonstration)同名的文件夹。如果您使用的是 instruction_and_demo 模式,则两个文件夹都会显示。instruction 文件夹包含系统指令优化的结果,而 demonstration 文件夹包含 demonstration 优化和优化后系统指令的结果。

    该文件夹包含以下文件:

    • config.json:Vertex AI 问题优化器使用的完整配置。
    • templates.json:Vertex AI 提示优化器生成的每组系统指令和/或少样本示例及其评估得分。
    • eval_results.json:目标模型针对每组生成的系统说明和/或少样本示例的每个示例提示的回答及其评估得分。
    • optimized_results.json:效果最佳的系统说明和/或少样本示例及其评估得分。
  4. 如需查看经过优化的系统指令,请查看 optimized_results.json 文件。

后续步骤