提示操作是应用开发者影响生成式 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()
流利使用