Promptify
将 GPT、Claude 等大模型转化为结构化 NLP 流水线的 Python 框架,支持 Pydantic 输出验证
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
将 GPT、Claude 等大模型转化为结构化 NLP 流水线的 Python 框架,支持 Pydantic 输出验证
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2022 年,大语言模型(LLM)刚开始在各行业掀起波澜。彼时,开发者们面对 GPT-4、Claude 这样的强大模型,最常见的困惑不是"模型能做什么",而是"如何让模型稳定地输出我想要的格式"。
当时的解决方案五花八门:有人用正则表达式从原始文本中硬抠字段,有人写复杂的后处理脚本,有人甚至尝试在 prompt 里塞入冗长的格式说明——效果依然参差不齐。结构化输出,成了 LLM 应用开发中公认的最大痛点。
Promptify 正是在这个背景下诞生的。它的核心理念很简单:让 NLP 任务像 scikit-learn 一样简单,但输出永远结构化。
Promptify 的设计哲学是"零学习成本"——开发者不需要懂提示词工程的细节,只需要知道自己要做什么任务。
以命名实体识别(NER)为例,传统方式需要:准备标注数据、训练模型、调参优化——耗时数天。而 Promptify 只需三行代码:
from promptify import NER
ner = NER(model="gpt-4o-mini", domain="medical")
result = ner("The patient is a 93-year-old female...")
这段代码会调用 GPT-4o-mini,针对医学领域进行实体识别,自动返回结构化的 NERResult,包含每个实体的文本和类型标签。无需训练数据,无需模型部署,结果直接可用于下游系统。
支持的 NLP 任务覆盖了开发者最常见的需求:二元分类、多分类、多标签分类、问答、摘要、关系抽取、表格抽取、问题生成、SQL 生成、文本规范化、主题建模……几乎涵盖了 80% 的 NLP 应用场景。
Promptify 的架构分层非常清晰。最底层是 LiteLLM,这是一个支持 100+ 大模型供应商的统一 SDK,OpenAI、Anthropic、Google、Ollama、Azure 等全部兼容。这意味着开发者切换模型供应商时,只需改一行字符串:
ner_openai = NER(model="gpt-4o-mini")
ner_claude = NER(model="claude-sonnet-4-20250514")
ner_local = NER(model="ollama/llama3")
从 OpenAI 切换到本地 Ollama,代码一行不改。这种设计对需要在本地运行(隐私合规、降低成本)的企业用户非常友好。
中间层是 Promptify Core Engine,负责 prompt 模板管理、Jinja2 渲染、few-shot 示例注入、领域上下文注入等。开发者可以通过 domain="medical" 这样的参数,让模型结合医学知识做更专业的判断。
最上层是 Pydantic 结构化输出层。这是 Promptify 区别于其他 LLM NLP 库的关键。它不是返回原始字符串,而是用 Pydantic 模型定义输出结构,强制约束模型输出格式。即使模型供应商不支持原生结构化输出,Promptify 也有 Safe Parser 做降级 JSON 解析——全程不使用 eval(),安全性有保障。
仅有单次调用的优雅还不够,生产环境中批量处理才是主流场景。Promptify 的 batch() 方法支持并发控制:
results = ner.batch(["text1", "text2", "text3"], max_concurrent=10)
底层是异步并发,自动管理请求速率,不会因为并发过高触发 API 限流。同时还支持原生 async/await,可以无缝集成到异步应用中。
LLM 应用最大的难题之一是:如何评估效果?prompt 改一改,感觉好一点了——但真的好吗?好多少?
Promptify 内置的评估框架提供了量化指标:Precision、Recall、F1(适合分类/NER 任务)、Exact Match、ROUGE(适合摘要/生成任务)。配合已有的标注数据集,可以科学地对比不同 prompt、不同模型、不同参数配置的效果,让调优从玄学变成工程。
作为纯 Python SDK,Promptify 的部署没有任何门槛:pip install promptify,然后在代码中 from promptify import NER 即可使用。它不是一个需要部署的 Web 服务,而是直接嵌入到现有 Python 应用中的库。
没有 Dockerfile、没有 Docker Compose、没有 Web UI、也没有 Kubernetes 配置文件。这意味着它不能"一键部署成一个服务",但也意味着它没有额外的运维负担——只要你的 Python 环境能跑,Promptify 就能跑。
硬件要求极低:不需要 GPU、不需要大内存,普通的开发笔记本就能运行。当然,实际推理成本取决于你调用的模型供应商 API 费用。
Promptify 本质上是 LLM API 的封装层,不是独立的 AI 模型。它的效果上限取决于底层模型的能力——GPT-4o-mini 能做 8 分,它就不会做到 9 分。
其次,Promptify 强烈依赖外部 API 网络连接。离线环境无法使用,这对有严格数据主权要求的企业(金融、医疗、政府)是一个限制。这些场景可能需要转向本地部署的开源模型(如 Llama、Qwen),但本地模型的结构化输出能力目前仍弱于 GPT-4o。
第三,虽然 prompt 工程可以降低数据标注成本,但对于极端隐私数据,prompt 中包含的原始文本依然会上传到第三方 API 服务商,存在数据泄露风险。
Promptify 代表了一个趋势:用 LLM API + 结构化封装,让非 NLP 专业的开发者也能快速构建 AI 应用。它的增长速度(4600+ stars)说明这个需求是真实存在的。
从技术发展角度看,Promptify 的 Safe Parser 思路值得关注——当模型原生结构化输出能力还不够稳定时,通过工程手段做降级兜底,是一种务实的做法。随着 GPT-4o、Claude 3.5 等模型原生支持结构化输出,这类封装层的价值会逐渐转移到 prompt 模板管理和评估框架上。
对于 AI 开发者而言,Promptify 适合快速原型验证和中小规模生产场景;对于 AI 爱好者,它是理解 LLM NLP 应用设计模式的绝佳学习素材。