Promptify: 用于 LLM 提示管理的 Python 库
这次咱们来聊一个挺实用但不怎么“爆款”的东西——Promptify。
虽然名字听着像个前端UI库,但其实它是个专门用来管理LLM提示词(Prompt)的Python库,说白了就是让你“喂模型的话术”这事儿更清晰更规范,不再是复制粘贴一堆乱七八糟的prompt。这东西我试了几天,确实挺顺的,特别是你如果在做自己的AI应用,或者搞聊天机器人、多轮对话之类,Promptify这种小工具能帮你省不少心。
以前我们写prompt,基本都是字符串拼接,或者搞一堆jinja模板到处贴,环境变量替换啥的也得自己管,维护起来很乱。比如你要写一段prompt给GPT让它总结文章,很多人可能是这样的:
prompt = f"请总结以下文本的主要内容:\n\n{article_content}"
看着简单,但你要是这段prompt在十几个地方用,还要动态换语言、控制风格、注入上下文……很快就乱套了。
Promptify就是来解决这个痛点的。它用类似模板系统的方式,把prompt抽象成一个“PromptTemplate”,然后你填变量就好了,感觉有点像Jinja + Pydantic 的结合体。
Promptify到底怎么用?
核心用法就几个类:Prompt, PromptTemplate, LLM, OpenAI, PromptChain。
我们直接上代码来感受下它的基本姿势:
from promptify import PromptTemplate, OpenAItemplate = PromptTemplate(
template="请用中文总结以下文章的内容:\n\n{{text}}",
input_variables=["text"]
)
llm = OpenAI(api_key="your-key", model="gpt-3.5-turbo")
result = template | llm # 这个语法有点意思,像 Unix 管道一样
response = result.invoke({"text": "人工智能是一门交叉学科..."})
print(response)
是不是挺简洁?这个|操作符其实就是把prompt模板“喂”给模型,中间还能插入别的处理,比如多轮处理链。
对了,它还有个叫PromptChain的组件,可以把多个prompt串起来搞复杂流程,比如你可以先摘要,再翻译,再做SEO优化,像下面这样:
from promptify import PromptChainchain = PromptChain()
chain.add(prompt1)
chain.add(prompt2)
chain.add(prompt3)
final = chain.invoke({"text": "原始内容..."})
这个我用在自动生成商品描述时还挺方便,一条龙服务。
模板的写法挺灵活
你可以用花括号插值,也支持用YAML写成块。像这样也行:
template:|
你是一个专业的IT写作者,请用中文总结以下内容:
{{text}}input_variables:
-text
这样你就能把prompt存成YAML文件,和代码分离,做配置管理也更舒服。
它还支持用JSON文件来管理Prompt库,这对于需要多语言或多场景prompt切换的项目来说,是刚需。
模型支持咋样?
目前支持OpenAI、Cohere、Anthropic、Azure等,基本够用。我个人项目主要用OpenAI,换起来就是换个类名和key,别的不用动。
而且它也支持用“本地函数”模拟LLM调用,比如你可以传入一个Python函数,假装是个模型,这样在测试时不用老连API。
from promptify.llms.local import LocalLLMdefdummy_model(prompt):
return prompt.upper()
llm = LocalLLM(dummy_model)
调试效率杠杠的。
使用场景
1)多语言提示统一管理我做个小项目支持中英文回答,以前要硬编码两个版本的prompt,现在写两个模板文件,加载时自动根据语言切换就完事了,代码干净了不少。
2)AI自动文案生成我搞商品介绍、广告文案时,需要一系列的操作:总结+翻译+优化标题,这种用PromptChain直接就能串起来,一次完成。
3)prompt测试和微调可以很方便测试不同模板的效果,比如我让模型改写同一段文案,用了三个不同风格的prompt,通过Promptify统一调用,结果对比明显。
4)团队协作这个是我觉得Promptify特别值的地方。你团队里有几个Prompt Engineer或者内容策划,可以用YAML或JSON写Prompt,程序员只管调用,职责分明,协作起来更舒服。
整体来说,Promptify是个比较轻量的库,没啥上手门槛,文档清晰,功能覆盖主流需求。我个人觉得它最大的优点就是结构化管理prompt + 链式组合处理,非常适合做LLM应用的中间层。如果你只是偶尔调个接口,那没必要;但要是你做的是一个有明确业务逻辑、场景复杂的AI产品,那它真的能帮你理清楚逻辑。
对了,如果你用FastAPI、Flask之类,也完全能和Promptify配合使用,把Prompt的部分抽离出来维护,整体项目结构更清晰。
有个小遗憾是它对一些高级prompt策略(比如ReAct、多轮对话状态追踪)还没特别完善的封装,但毕竟定位是“提示管理”,不是“对话框架”,理解万岁。
感兴趣的可以试试看,我在侧项目里已经逐步用它替代了之前自己写的prompt拼接工具。后续有啥更深玩法,我再写一篇来分享。我们下篇再见。
-END-
我为大家打造了一份RPA教程,完全免费:https://www.songshuhezi.com/rpa.html
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领