了解和配置模型参数

您向模型发送的每次调用都包含控制模型如何生成回答的参数值。对于不同的参数值,模型会生成不同的结果。因此请尝试不同的参数值,以获得任务的最佳值。不同模型的可用参数可能有所不同。

该配置在初始化的 Vertex AI 服务和模型实例的生命周期内保持有效。如需更新模型配置,必须重新初始化模型实例。

在本页的后面部分,您可以了解如何配置模型参数

每个参数的说明

最常见的参数如下:

如需了解这些参数,请参阅本页的以下部分。

输出词元数上限

回答中可生成的词元数量上限。词元约为 4 个字符。100 个词元对应大约 20 个单词。

指定较低的值可获得较短的响应,指定较高的值可获得较长的响应。

温度

温度在生成响应期间用于采样,在应用 topPtopK 时会生成响应。温度可以控制词元选择的随机程度。较低的温度有利于需要更具确定性、更少开放性或创造性响应的提示,而较高的温度可以导致更具多样性或创造性的结果。温度为 0 表示确定,即始终选择概率最高的响应。

对于大多数应用场景,不妨先试着将温度设为 0.2。如果模型返回的响应过于笼统、过于简短,或者模型给出后备响应,请尝试提高温度。

Top-K

Top-K 可更改模型选择输出词元的方式。如果 top-K 设为 1,表示所选词元是模型词汇表的所有词元中概率最高的词元(也称为贪心解码)。如果 top-K 设为 3,则表示系统将从 3 个概率最高的词元(通过温度确定)中选择下一个词元。

在每个词元选择步骤中,系统都会对概率最高的 top-K 词元进行采样。然后,系统会根据 top-P 进一步过滤词元,并使用温度采样选择最终的词元。

指定较低的值可获得随机程度较低的响应,指定较高的值可获得随机程度较高的响应。默认的 top-K 为 40

Top-P

Top-P 可更改模型选择输出词元的方式。系统会按照概率从最高(见 top-K)到最低的顺序选择词元,直到所选词元的概率总和等于 top-P 的值。例如,如果词元 A、B 和 C 的概率分别为 0.3、0.2 和 0.1,并且 top-P 值为 0.5,则模型将选择 A 或 B 作为下一个词元(通过温度确定),并会排除 C,将其作为候选词元。

指定较低的值可获得随机程度较低的响应,指定较高的值可获得随机程度较高的响应。默认 top-P 为 0.95

配置模型参数


您可以在模型初始化期间在 generationConfig 中配置模型参数。下面是一个基本示例:

Kotlin+KTX

// ...

val config = generationConfig {
    maxOutputTokens = 200
    stopSequences = listOf("red")
    temperature = 0.9f
    topK = 16
    topP = 0.1f
}

val generativeModel = Firebase.vertexAI.generativeModel(
    modelName = "MODEL_NAME",
    generationConfig = config
)

// ...

Java

// ...

GenerationConfig.Builder configBuilder = new GenerationConfig.Builder();
configBuilder.maxOutputTokens = 200;
configBuilder.stopSequences = List.of("red");
configBuilder.temperature = 0.9f;
configBuilder.topK = 16;
configBuilder.topP = 0.1f;

GenerationConfig generationConfig = configBuilder.build();

GenerativeModel gm = FirebaseVertexAI.getInstance().generativeModel(
    "MODEL_NAME",
    generationConfig
);

GenerativeModelFutures model = GenerativeModelFutures.from(gm);

// ...

用于控制内容生成的其他选项

  • 详细了解问题设计,以便影响模型生成符合您需求的输出。
  • 您可以使用安全设置来调整系统提供可能被视为有害的回答(包括仇恨言论和露骨色情内容)的可能性。
  • 设置系统指令来引导模型的行为。此功能类似于您在模型接触到最终用户的任何进一步说明之前添加的“序言”。
  • 响应架构与提示一起传递,以指定特定的输出架构。此功能最常用于生成 JSON 输出,但也可以用于分类任务(例如,当您希望模型使用特定标签或标记时)。