yao-open-prompts

来源:GitHub · ⭐ 1115 stars
# Yao Open Prompts:中文 AI 提示词工程的开源实践

## 项目简介

在 ChatGPT、Claude 等大语言模型席卷全球的浪潮中,一个被严重低估的环节是**提示词工程(Prompt Engineering)**。同样的模型,不同的提示词可能产出天壤之别的结果。然而中文互联网长期面临优质提示词分散、英文模板水土不服、场景覆盖不全的痛点。`yao-open-prompts` 项目正是瞄准这一缺口,由开发者 `yaojingang` 发起维护,目前已积累 1115 Star,成为中文社区颇具影响力的开源提示词库。

该项目的核心价值在于**"场景化"与"可工程化"**的双重突破。不同于网络上零散的"万能提示词"搬运,yao-open-prompts 将提示词按工作、学习、内容创作、营销运营、日常生活五大维度系统化组织,并以 Python 项目形式提供可编程接口。这意味着开发者不仅能"复制粘贴",更能将提示词管理纳入 CI/CD 流程,实现团队协作中的版本控制、动态加载与效果追踪。

## 核心特性

- **五维场景全覆盖**:工作(简历优化、会议总结、代码审查)、学习(论文研读、概念解释、考试复习)、内容(短视频脚本、小红书文案、技术博客)、营销(SEO 优化、用户画像、竞品分析)、生活(旅行规划、菜谱推荐、健身计划)——每个场景均经过中文语境适配

- **结构化提示词模板**:采用 "角色-背景-任务-约束-输出格式" 的标准化设计,降低模型理解偏差。例如营销类提示词明确指定目标平台算法特征,避免"放之四海皆不准"

- **Python 原生工程化支持**:提供 `PromptLoader` 类实现动态加载,支持按标签筛选、变量注入、A/B 测试对比,可直接嵌入 Flask/FastAPI 后端或数据处理流水线

- **社区驱动持续迭代**:通过 GitHub Issues 收集真实使用反馈,提示词版本跟随模型能力演进(如针对 GPT-4 Turbo 长上下文优化多轮对话模板)

- **轻量化零依赖**:核心模块仅依赖 Python 标准库,单文件即可运行,降低接入门槛

## 技术实现

从源码架构看,yao-open-prompts 的设计体现了**"数据驱动"优于"代码驱动"**的工程哲学。项目并未将提示词硬编码为 Python 字符串,而是采用 YAML/JSON 作为存储介质,通过 `src/prompts/` 下的层级目录实现逻辑分类:

src/prompts/

├── work/

│ ├── resume_optimization.yaml

│ └── meeting_minutes.yaml

├── content/

│ ├── xiaohongshu.yaml # 小红书风格适配

│ └── zhihu_answer.yaml # 知乎体特征

└── _base/

└── meta_schema.json # 提示词元数据校验


这种设计的技术深意在于**解耦提示词内容与执行引擎**。YAML 文件中的每个提示词遵循统一 Schema:

id: content.xiaohongshu.v2

version: "2.1.0"

model_compat: ["gpt-4", "gpt-3.5-turbo", "claude-3"]

variables:

  • product: {required: true, type: str, desc: "产品名称"}
  • tone: {required: false, default: "活泼", enum: ["活泼", "专业", "治愈"]}

template: |

你是一位小红书 {tone} 风格博主,粉丝画像为18-30岁一二线城市女性。

请为【{product}】撰写一篇种草笔记,要求:

  1. 标题含emoji,前10字出现核心卖点
  2. 正文分3段,每段不超过100字
  3. 结尾引导互动,使用"姐妹们冲"等社群用语

`PromptLoader` 类的实现则展现了 Python 元编程的巧思。通过 `__init__.py` 中的动态导入机制,项目支持运行时按标签过滤与模板渲染:

核心加载逻辑简析

import yaml

from string import Template

from pathlib import Path

class PromptLoader:

def __init__(self, prompts_dir: str = "src/prompts"):

self._registry = {}

self._scan(Path(prompts_dir))

def _scan(self, path: Path):

# 递归注册所有 YAML 提示词

for file in path.rglob("*.yaml"):

data = yaml.safe_load(file.read_text())

self._registry[data["id"]] = data

def render(self, prompt_id: str, **kwargs) -> str:

raw = self._registry[prompt_id]["template"]

# 预校验变量完整性

required = {v for v, meta in self._registry[prompt_id]["variables"].items()

if meta.get("required")}

missing = required - set(kwargs.keys())

if missing:

raise ValueError(f"缺失必需变量: {missing}")

return Template(raw).safe_substitute(kwargs)


值得关注的是 `model_compat` 字段的设计——这是提示词工程从" artisanal craft(手工作坊)"走向" software engineering(软件工程)"的关键标志。不同模型的上下文窗口、指令遵循能力、中文语料占比差异显著,显式标注兼容性可避免生产环境的隐性故障。

## 快速上手

安装与基础使用极为简洁:

克隆仓库后直接使用

from yao_open_prompts import PromptLoader

loader = PromptLoader()

加载并渲染小红书文案提示词

prompt = loader.render(

"content.xiaohongshu.v2",

product="降噪蓝牙耳机",

tone="专业"

)

print(prompt)

直接送入 OpenAI API

import openai

response = openai.ChatCompletion.create(

model="gpt-4",

messages=[{"role": "user", "content": prompt}]

)


进阶场景:批量 A/B 测试不同提示词版本的效果:

from itertools import product

对比两种语气 × 两种结构变体的效果

variants = product(["活泼", "专业"], ["v2", "v3-beta"])

results = []

for tone, version in variants:

pid = f"content.xiaohongshu.{version}"

prompt = loader.render(pid, product="降噪蓝牙耳机", tone=tone)

# 调用模型并记录评分...


## 应用场景

**智能客服中台建设**:某电商 SaaS 公司将 yao-open-prompts 的售后处理模板集成至客服系统,通过 `variables` 注入订单状态、用户等级等动态数据,使 GPT-4 生成的回复既符合平台话术规范,又能灵活处理退换货、补偿协商等复杂场景。提示词的版本化管理让运营团队无需发版即可调整策略。

**自媒体矩阵运营**:MCN 机构利用内容创作类提示词批量生成适配抖音、视频号、小红书不同平台特性的脚本。关键突破在于项目将"平台算法特征"编码为提示词约束(如抖音前3秒完播率钩子、小红书关键词密度),使 AI 输出从"通用废话"升级为"流量感知内容"。

**开发者文档助手**:技术团队将 `work/code_review.yaml` 模板接入 GitLab CI,在 Merge Request 阶段自动触发代码审查。提示词中预设的审查维度(安全性、性能、可维护性、Pythonic 程度)使审查标准从"因人而异"变为"团队共识"。

## 总结

yao-open-prompts 的价值远超"又一个提示词合集"——它代表了中文开发者社区对 AI 工程化的务实探索。项目以 Python 为锚点,将提示词从"聊天技巧"重构为"可版本控制、可测试、可复用的软件资产",这一范式转换对正在构建 AI 原生应用的团队尤为关键。无论是独立开发者快速验证产品原型,还是企业级用户寻求提示词治理方案,该项目都提供了经得起生产环境检验的基础设施。随着多模态模型与 Agent 架构的演进,其"结构化提示词 + 动态渲染"的设计哲学或将延伸至更复杂的工具调用与视觉理解场景。