Character AI发布Prompt Poet:在提示工程领域取得重大突破

2024年08月05日 由 neo 发表 305 0

Character.AI在提示工程领域取得了重大突破,认识到其在业务运营中的关键作用。该公司的提示构建方法极为全面,考虑到多种因素,如对话模式、正在进行的实验、角色档案、聊天类型、用户属性、固定记忆、用户角色和整个对话历史。这种细致入微的设计是因为他们每天生成的提示数量庞大——数十亿——并且需要最大化扩展LLM上下文窗口的潜力。面对各种用例,Character.AI倡导从传统的“提示工程”转向“提示设计”。这一演变旨在超越平凡的字符串操作,创造出精确且引人入胜的提示。为实现这一目标,他们开发了一个创新库——Prompt Poet。

Character.AI的创新提示设计方法体现在其新开发的工具Prompt Poet中。尽管Python的f字符串已成为提示工程师的行业标准,从简单的查询插入到复杂的字符串操作,但这种方法往往需要编程技能,从而限制了非技术用户的可访问性。Prompt Poet应对了这一挑战,通过为开发者和非技术人员提供一种更直观和高效的解决方案来设计和管理生产提示。这个工具显著减少了在工程字符串操作上花费的时间,使用户能够专注于制作最佳提示。借鉴UI设计原则,Prompt Poet将提示概念化为运行时状态的函数,包含提示模板、数据、令牌限制和其他相关因素等元素。这种方法迈出了使提示设计对更广泛用户群体更具可访问性和效率的重大一步。

unnamed

Prompt Poet通过将重点从工程转向设计,革新了提示创建过程。这一创新工具结合使用YAML和Jinja2进行模板化,提供了灵活性和易组合性。Prompt Poet中的模板处理分为两个关键阶段:渲染和加载。在渲染阶段,Jinja2处理输入数据,执行控制流逻辑,验证并将数据绑定到变量,并评估模板函数。加载阶段则将渲染的输出转换为结构化的YAML文件,然后转换为Python数据结构。每部分提示都有具体属性:可读名称、实际内容字符串、区分用户或系统组件的可选角色指定符,以及可选的截断优先级。这种结构化方法允许更高效的提示管理,使技术和非技术用户都能更轻松、准确地创建和迭代提示。

在Prompt Poet中结合使用Jinja2和YAML创建了一个强大且灵活的模板系统。Jinja2为模板带来了动态能力,允许直接数据绑定、任意函数调用和基本控制流结构。这种灵活性使用户能够创建复杂的、上下文感知的提示,适应各种场景。而YAML则为模板提供了结构化格式,深度为一级,这对于在达到令牌限制时实施复杂的截断策略至关重要。这种结构化方法确保提示在需要缩短时仍保持连贯和有效。

Character.AI致力于不断改进其模型对用户偏好的对齐方法。通过使用Prompt Poet,他们创建了一个系统,可以在离线流程(如评估和训练后工作负载)中无缝重建生产提示。这种提示模板化为他们的工作流程带来了显著优势。它使得在组织内不同团队之间轻松共享模板文件成为可能,消除了拼凑其不断变化的代码库各个部分的需要。这种简化的方法不仅增强了协作,还确保了在不同开发和部署阶段的提示设计的一致性。

Jinja2在运行时在模板中调用任意Python函数的能力是Prompt Poet的一个关键特色。这一功能实现了实时数据检索、操作和验证,简化了提示构建。例如,一个extract_user_query_topic函数可以处理用户查询,用于模板控制流,可能涉及到主题分类器的一个往返。这一功能显著增强了提示设计的动态能力。

unnamed(1)

Prompt Poet默认使用TikToken的“o200k_base”标记器,但允许通过tiktoken_encoding_name参数使用替代编码名。用户还可以使用encode_func参数提供自己的编码函数,该函数应是一个接受字符串并返回整数列表的可调用对象。这种灵活性允许根据特定需求自定义标记过程。

unnamed(2)

对于支持GPU亲和性和前缀缓存的LLM提供商,Character.AI的截断算法可以最大化前缀缓存率。该比率是从缓存中检索的提示标记占总提示标记的比例。用户应找到其使用情况的最佳截断步长和令牌限制。增加截断步长会提高前缀缓存率,但会导致提示中被截断的标记增加。

unnamed(3)

Character.AI的截断策略通过优化消息截断实现了显著的95%缓存率。策略涉及截断到固定点,平均每k次移动一次该点。这种方法最大化了GPU前缀缓存的使用,如“优化推理”中所述。虽然这种方法通常比严格必要的截断更多,但在缓存利用率方面显著优于简单的令牌限制截断。

在典型的聊天场景中,消息从M1到M10,简单的截断到令牌限制下的做法会导致截断点每次移动。这使得从缓存中可检索的前缀部分很小,从而导致大量的重新计算成本。这种方法未能充分利用GPU前缀缓存。

unnamed(4)

Character.AI的缓存感知截断算法在每k次保持固定截断点。这种方法保留了一段不间断的令牌序列直到最近的消息,允许重用存储在GPU前缀缓存中的前一次计算。k值由截断步长和每条被截断消息的平均令牌数决定。

Prompt Poet通过将重点从手动字符串操作转向直观设计,革新了提示工程。它简化了复杂的提示创建,提升了AI与用户的交互。通过赋予技术和非技术用户优先考虑设计而非工程的能力,Prompt Poet有潜力改变AI交互,使其更加高效和以用户为中心。随着大型语言模型的不断发展,像Prompt Poet这样的工具将在以用户友好的方式最大化其潜力方面变得至关重要。

文章来源:https://www.marktechpost.com/2024/08/03/character-ai-releases-prompt-poet-a-new-low-code-python-libary-that-streamlines-prompt-design-for-both-developers-and-non-technical-users/
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
写评论取消
回复取消