项目介绍:Prompt Poet
Prompt Poet 项目旨在为开发者和非技术用户简化和优化 AI 模型提示设计。通过其低代码方法,通过结合使用 YAML 和 Jinja2,Prompt Poet 提供了一种灵活且动态的提示创建方式,提高了与 AI 模型互动的效率和质量。这一工具节省了在人为字符串操作上的大量时间,使用户能更加专注于为其用户打造最佳提示。
安装方式
用户可以通过以下命令来安装 Prompt Poet:
pip install prompt-poet
基本用法
在安装后,用户可以通过 Python 编写简单的脚本来使用 Prompt Poet。以下是一个基础使用示例:
import os
import getpass
from prompt_poet import Prompt
from langchain import ChatOpenAI
# 如果需要设置 OPENAI_API_KEY,请取消注释以下行。
# os.environ["OPENAI_API_KEY"] = getpass.getpass()
raw_template = """
- name: system instructions
role: system
content: |
Your name is {{ character_name }} and you are meant to be helpful and never harmful to humans.
- name: user query
role: user
content: |
{{ username}}: {{ user_query }}
- name: response
role: user
content: |
{{ character_name }}:
"""
template_data = {
"character_name": "Character Assistant",
"username": "Jeff",
"user_query": "Can you help me with my homework?"
}
prompt = Prompt(
raw_template=raw_template,
template_data=template_data
)
model = ChatOpenAI(model="gpt-4o-mini")
response = model.invoke(prompt.messages)
提示模板
Prompt Poet 使用 YAML 和 Jinja2 的混合模板进行提示创建。模板处理主要分为两个阶段:
- 渲染阶段:最初由 Jinja2 处理输入数据。在此阶段,执行控制流逻辑,验证数据并适当地绑定到变量上,以及在模板中评估函数。
- 加载阶段:渲染完成后,输出为结构化的 YAML 文件。这些 YAML 结构由重复的区块或部分组成,每个部分封装到一个 Python 数据结构中。这些部分包括多个属性:
- 名称:部分的明确、人类可读的标识。
- 内容:构成提示的实际字符串内容。
- 角色(可选):指定参与者的角色,有助于区分不同的用户或系统组件。
- 截断优先级(可选):确定何时需要截断时的顺序。具有相同优先级的部分将按照出现顺序进行截断。
示例:基础问答机器人
以下是一个基本的问答机器人模板示例:
- name: system instructions
role: system
content: |
Your name is {{ character_name }} and you are meant to be helpful and never harmful to humans.
- name: user query
role: user
content: |
{{ username}}: {{ user_query }}
- name: reply_prompt
role: user
content: |
{{ character_name }}:
特性概览
Prompt Poet 提供的主要特性包括令牌化和截断,帮助实现高效的缓存和低延迟响应。使用 Jinja2 和 YAML 结合,用户可以在运行时直接调用任意 Python 函数,支持动态数据检索、处理和验证。这种灵活的特性使得复杂的提示构建更加便捷。
设计理念
Prompt Poet 的设计结合了 YAML 的结构化和 Jinja2 的数据绑定及控制流功能,为用户提供了一个强大的模板语言。用户可以通过自定义的编码函数来处理字符串,并利用该项目中的提示模板注册表,将模板文件存储在磁盘上或从内存中加载,以提高性能。
相关工作
Prompt Poet 是一个强大且实用的工具,与其他一些提示创建工具有相似之处,如 Priompt、dspy 和 Microsoft 的 Prompt Engine。然而,相对于这些工具,Prompt Poet 更加强调低延迟和高效的提示处理能力。
综上所述,Prompt Poet 为用户提供了一个高效且易用的框架,用于优化 AI 模型交互中的提示生成,让用户能够更专注于内容的创造,而非繁琐的字符串操作。