提示

提示操作是应用开发者影响生成式 AI 模型的输出的主要方式。例如,使用 LLM 时,您可以撰写影响模型响应的语气、格式、长度和其他特征的提示。

Genkit 在设计时遵循的是提示是代码的前提条件。您可以在源文件中编写和维护提示,使用与代码相同的版本控制系统来跟踪对提示的更改,并将这些提示与调用生成式 AI 模型的代码一起部署。

大多数开发者会发现随附的 Dotprompt 库可以满足在 Genkit 中使用提示的需求。不过,您也可以通过直接使用提示来支持替代方法。

定义提示

Genkit 的 generate() 辅助函数接受字符串提示,对于直接的用例,您可以通过这种方式调用模型。

import { generate } from '@genkit-ai/ai';

generate({
  model: 'googleai/gemini-1.5-flash-latest',
  prompt: 'You are a helpful AI assistant named Walt.',
});

在大多数情况下,您需要在提示中包含客户提供的一些输入内容。 您可以定义一个函数来渲染它们,如下所示。

function helloPrompt(name: string) {
  return `You are a helpful AI assistant named Walt. Say hello to ${name}.`;
}

generate({
  model: 'googleai/gemini-1.5-flash-latest',
  prompt: helloPrompt('Fred'),
});

在代码中定义提示的一个缺点是,测试需要将其作为流程的一部分执行。为了加快迭代,Genkit 提供了一个工具来定义提示并在开发者界面中运行这些提示。

使用 definePrompt 函数向 Genkit 注册提示。

import { definePrompt } from '@genkit-ai/ai';
import z from 'zod';

export const helloPrompt = definePrompt(
  {
    name: 'helloPrompt',
    inputSchema: z.object({ name: z.string() }),
  },
  async (input) => {
    const promptText = `You are a helpful AI assistant named Walt.
    Say hello to ${input.name}.`;

    return {
      messages: [{ role: 'user', content: [{ text: promptText }] }],
      config: { temperature: 0.3 }
    });
  }
);

提示操作定义了一个返回 GenerateRequest 对象的函数,该对象可用于任何模型。或者,您还可以定义提示的输入架构,类似于流的输入架构。提示还可以定义任何常见的模型配置选项,例如温度或输出词元数量。

您可以将此提示与 renderPrompt() 辅助函数在代码中使用。提供提示所需的输入变量以及要调用的模型。

import { generate, render } from '@genkit-ai/ai';

generate(
  renderPrompt({
    prompt: helloPrompt,
    input: { name: 'Fred' },
    model: 'googleai/gemini-1.5-flash-latest',
  })
);

在 Genkit 开发者界面中,您可以运行以这种方式定义的任何提示。这样,您就可以在使用它们的流程范围之外,对各个提示进行实验。

点提示

Genkit 包含 Dotprompt 库,后者为提示添加了额外功能。

  • 正在从 .prompt 源文件加载提示
  • 基于手柄的模板
  • 支持多轮提示模板和多媒体内容
  • 简洁的输入和输出架构定义
  • 通过 generate() 流利使用