import os
import getpass
from prompt_poet import Prompt
from langchain import ChatOpenAI
# Uncomment if you need to set 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 项目详细介绍
Prompt Poet 是由 Character.AI 开源的一个工具,旨在简化和加速提示词(prompt)的设计过程。它通过低代码方法使得开发人员和非技术用户都能高效地设计和管理生产提示 [1]。以下是关于 Prompt Poet 的详细信息:
1. 功能特点
- 灵活的提示词创建:Prompt Poet 结合使用 YAML 和 Jinja2 模板语言,实现了灵活、动态的提示词创建,提高了与 AI 模型交互的效率和质量 [4]。
- 分词和截断功能:提供了多种功能,包括分词和截斷,以实现高效快取和低延遲響應。
- 节省工程时间:通过减少字符串操作的时间,使用户能够更专注于提示词的设计而非编码细节 [3]。
2. 使用场景
- 开发人员:可以利用 Prompt Poet 提高工作效率,快速迭代提示模板,从而更好地与 AI 模型进行交互。
- 非技术人员:无需编写代码即可高效创建和迭代提示模板,降低了使用门槛 [10]。
3. 技术实现
- 模板处理:提示模板的处理分为两个主要阶段:渲染和执行。渲染阶段使用 Jinja2 处理模板,执行阶段则应用生成的提示 [10]。
- UI 设计原则:Prompt Poet 的设计受到 UI 设计原则的启发,将提示视为运行时状态的函数,允许创建动态和复杂的提示 [16]。
4. 开源贡献
- GitHub 仓库:项目的 GitHub 仓库地址为 character-ai/prompt-poet,开发者可以在此基础上进行二次开发和贡献。
- 社区支持:通过 GitHub Issues 和 Pull Requests,社区成员可以报告问题、提出改进建议并贡献代码。
5. 安装与使用
安装步骤:可以通过 Python 包管理工具如
pip
安装 Prompt Poet。具体命令如下:pip install prompt-poet
使用示例:以下是一个简单的使用示例,展示了如何使用 YAML 和 Jinja2 创建提示词:
prompt: "你好,{{ user_name }}!今天的天气是 {{ weather }}。"
6. 总结
Prompt Poet 通过结合 YAML 和 Jinja2 提供了灵活、动态的提示词创建方式,极大地提高了与 AI 模型交互的效率和质量。无论是开发人员还是非技术人员,都可以通过这个工具轻松上手,快速设计出高质量的提示词。