Prompt Poet Prompt Poet Prompt Poet
Prompt Poet Prompt Poet Prompt Poet
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 模型交互的提示。