google/dotprompt

Executable GenAI prompt templates

Dotprompt – 生成式 AI 的可执行提示模板

是什么 – Dotprompt 定义了一种文件格式(.prompt),将生成式 AI 提示与运行它所需的所有信息捆绑在一起:模型选择、温度、输入模式、预期输出格式以及 Handlebars 风格的占位符。该格式与语言无关,Google 提供了 JavaScript/TypeScript、Python、Go、Rust 和 Java 的核心库,以及编辑器扩展(VS Code、JetBrains、Vim/Emacs)和基于 Web 的编辑器(Monaco、CodeMirror)。

为何重要 – 提示工程通常散落在零散的代码或临时文本文件中。通过将提示作为自包含的可执行资产,您可以:

  • 在将输入发送给模型之前,根据模式进行验证。
  • 在文件中直接声明模型及其参数(例如 gemini-2.5-pro、温度)。
  • 定义预期的输出格式(JSON、XML 等)和模式,实现自动解析和类型检查。
  • 在不同项目和语言之间重复使用同一提示,无需重写样板代码。

核心组件

组件 提供功能
核心库 (dotprompt, dotpromptz, dotprompt-go, dotprompt-rs, dotprompt-java) 读取 .prompt 文件、填充 Handlebars 变量、调用配置的模型并返回类型化结果的解析器、验证器和运行时助手。
IDE 扩展 (VS Code, JetBrains, Vim, Emacs) 语法高亮、基于模式的自动补全以及编辑器内的一键“运行提示”命令。
Web 编辑器 (Monaco, CodeMirror) 可嵌入 SaaS 工具或内部仪表板的编辑器。
Tree-sitter 语法 用于语言服务器功能和自定义工具的精确解析。
CLI (promptly) 从终端运行 .prompt 文件,适用于快速实验或 CI 流水线。

典型工作流程

  1. 创建 .prompt 文件 – 从声明 model、input.schema、output.format 和 output.schema 的 YAML 前置元数据块开始。使用 Handlebars({{variable}})编写提示正文。
  2. 添加库 – 例如 npm i dotprompt(JS)或 pip install dotpromptz(Python)。
  3. 在代码中加载提示(Genkit 中为 ai.prompt("myPrompt"),其他语言为等效语法)。
  4. 使用与输入模式匹配的普通对象调用它;库会处理验证、模型调用和输出解析。
  5. 迭代 – 由于提示是版本控制的文件,您可以追踪变更、回滚并跨团队共享。

示例(来自 README 的摘录)—— 从自由文本中提取结构化数据的提示:

---
model: googleai/gemini-2.5-pro
input:
  schema:
    text: string
output:
  format: json
  schema:
    name?: string, the full name of the person
    age?: number, the age of the person
    occupation?: string, the person's occupation
---

Extract the requested information from the given text. If a piece of information
is not present, omit that field from the output.

Text: {{text}}

使用 Genkit 集成运行此提示,将返回一个类型化的 JSON 对象,例如 "{\"name\":\"John Doe\",\"age\":35,\"occupation\":\"software engineer\"}"。

快速入门(JS/TS 示例在 README 中展示)

npm i genkit @genkit-ai/googleai   # 安装 Genkit + Google AI 提供者
import { genkit } from "genkit";
import { googleAI } from "@genkit-ai/googleai";

const ai = genkit({ plugins: [googleAI()] });
const extractInfo = ai.prompt("extractInfo");

const {output} = await extractInfo({text: "John Doe is a 35‑year‑old software engineer..."});
console.log(output);

设置 GOOGLE_API_KEY 环境变量以进行身份验证。

谁应该使用它

  • 构建 AI 增强型应用的开发者 – 保持提示整洁、版本化且类型安全。
  • 提示工程师 / 数据科学家 – 无需修改应用代码即可实验模型参数和输出模式。
  • 多语言技术栈的团队 – 同一个 .prompt 文件可在 JS、Python、Go、Rust 和 Java 中使用。
  • 工具构建者 – 将 Web 编辑器或 CLI 嵌入内部平台。

社区与支持

  • 实时帮助的 Discord 频道:https://discord.gg/qXt5zzQKpc
  • 欢迎开源贡献;请参阅 GEMINI.md 了解提交规范和测试指南。
  • CI 指示灯显示每个语言实现都持续测试。

Dotprompt 将提示转变为一等公民的可执行资产,使生成式 AI 开发更加模块化、可靠且协作性更强。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目