|
01。 概述 Character.AI 在提示工程领域迈出了重要一步,认识到其在运营中的关键作用。该公司构建提示的方法非常全面,考虑了诸多因素,如对话模式、持续实验、角色档案、聊天类型、用户属性、固定记忆、用户角色和整个对话历史等。这种细致入微的细节处理,是因为他们每天生成的提示数量高达数十亿,并且需要最大化利用不断扩大的大型语言模型(LLM)上下文窗口的潜力。面对多样化的应用场景,Character.AI 提倡从传统的“提示工程”向“提示设计”转变。这一演变旨在超越平凡的字符串操作,朝着创造精确且引人入胜的提示迈进。为了实现这一目标,他们开发了一个创新的库,名为 Prompt Poet。Character.AI 对提示设计的创新方法体现在他们新开发的 Prompt Poet 工具上。尽管 Python f-strings 已经成为提示工程师的行业标准,从简单的查询插入到复杂的字符串操作,这种方法通常需要编码技能,限制了非技术用户的可及性。Prompt Poet 通过为开发者和非技术个体提供更直观高效的解决方案来应对这一挑战,以便设计和管理生产提示。这个工具大幅减少了在工程字符串操作中花费的时间,让用户能够专注于打造最优的提示。Prompt Poet 从 UI 设计原则中汲取灵感,将提示概念化为运行时状态的函数,包括提示模板、数据、令牌限制以及其他相关因素。这种方法标志着朝着使提示设计对更广泛的用户群体更加可访问和高效迈出了重要一步。02。 安装使用 安装
基础使用 importos importgetpass
fromprompt_poetimportPrompt fromlangchainimportChatOpenAI
#UncommentifyouneedtosetOPENAI_API_KEY. #os.environ["OPENAI_API_KEY"]=getpass.getpass()
raw_template=""" -name:systeminstructions role:system content:| Yournameis{{character_name}}andyouaremeanttobehelpfulandneverharmfultohumans.
-name:userquery role:user content:| {{username}}:{{user_query}}
-name:response role:user content:| {{character_name}}: """
template_data={ "character_name":"CharacterAssistant", "username":"Jeff", "user_query":"Canyouhelpmewithmyhomework?" }
prompt=Prompt( raw_template=raw_template, template_data=template_data )
model=ChatOpenAI(model="gpt-4o-mini") response=model.invoke(prompt.messages)
03。 Prompt 模板 Prompt Poet 模板结合了 YAML 和 Jinja2 的特点。模板处理主要分为两个阶段:- 渲染:首先,Jinja2 对输入数据进行处理。在这个阶段,执行控制流程逻辑,对数据进行验证并适当绑定到变量,模板内的函数也得到恰当的评估。
- 加载:渲染之后,输出为结构化的 YAML 文件。这个 YAML 结构由重复的区块或部分构成,每个部分都被封装进 Python 数据结构。这些部分具有多个属性:
- 角色(可选):指定参与者的角色,有助于区分不同的用户或系统组件。
- 截断优先级(可选):在必要时确定截断的顺序,具有相同优先级的部分将按照它们出现的顺序进行截断。
Prompt Poet 以其创新的模板设计,将 YAML 的结构化能力和 Jinja2 的灵活处理相结合,为提示的创建和迭代提供了强大支持。在渲染阶段,Jinja2 精准地处理输入数据,执行逻辑控制,确保数据的准确性和模板函数的正确评估。加载阶段则将这些数据转化为结构化的 YAML 文件,进而封装为 Python 数据结构,为程序的进一步处理提供了便利。- 名称:为每个提示部分赋予一个清晰易读的名称,便于识别和管理。
- 角色(可选):为不同参与者指定角色,以区分用户或系统组件。
- 截断优先级(可选):在空间受限时,决定提示部分的截断顺序,确保信息传递的高效性。
这种结构化的模板设计,不仅提高了提示管理的效率,也使得提示的创建过程更加直观和用户友好,无论是技术用户还是非技术用户,都能够轻松上手,高效地设计出满足需求的提示。Prompt Poet 的出现,为技术文章交流提供了一种全新的、高效的解决方案。
|