Prompt Poet
Prompt Poet 简介
Prompt Poet 是一个旨在简化和优化提示设计的工具,适用于开发人员和非技术用户。它采用低代码方法,通过 YAML 和 Jinja2 结合,允许用户灵活动态地创建提示,从而提高与人工智能模型互动的效率和质量。Prompt Poet 通过减少对字符串操作的工程时间,使用户能够更多地专注于为其用户打造最佳提示。
安装
pip install prompt-poet
基本用法
以下是一个基本用法示例,展示了如何使用 Prompt Poet 创建一个提示并与 ChatOpenAI 模型进行交互:
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: |
你的名字是 {{ character_name }},你应该对人类有帮助且无害。
- name: user query
role: user
content: |
{{ username }}: {{ user_query }}
- name: response
role: user
content: |
{{ character_name }}:
"""
template_data = {
"character_name": "助理角色",
"username": "杰夫",
"user_query": "你能帮我做作业吗?"
}
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 数据结构。这些块具有以下属性:
- 名称:易读的标识符。
- 内容:提示的一部分。
- 角色(可选):区分不同用户或系统组件。
- 截断优先级(可选):决定必要时的截断顺序,优先级相同的按出现顺序截断。
使用场景
Prompt Poet 可以应用于各种场景,包括:
- 基本问答机器人:通过定义系统指令、用户查询及回复提示,创建简单的问答机器人。
- 历史消息截断:当上下文长度受限时,根据优先级截断历史消息,以确保新信息能被处理。
- 用户模式调整:根据用户使用的当前模式(如音频或文本),调整系统指令。
- 特定查询目标:在处理不同类型查询(如家庭作业帮助)时,动态插入上下文特定示例。
示例场景代码:
{% if modality == "audio" %}
- name: special audio instruction
role: system
content: |
{{ username }} 目前使用音频。保持你的答案简洁。
{% endif %}
{% if extract_user_query_topic(user_query) == "homework_help" %}
{% for homework_example in fetch_few_shot_homework_examples(username, character_name) %}
- name: homework_example_{{ loop.index }}
role: user
content: |
{{ homework_example }}
{% endfor %}
{% endif %}
综上所述,Prompt Poet 通过强大的模板系统和易用性,使不同专业背景的用户能够高效地创建和优化与 AI 模型交互的提示。
广告:私人定制视频文本提取,字幕翻译制作等,欢迎联系QQ:1752338621