一种简单而优雅的标记语言,用于将 AI 提示定义为代码 (APaC)。专为 AI 代理使用而自动提示其他 AI 系统。
PromptML 旨在为提示工程师提供一种以确定性方式定义 AI 提示的方法。这是一种领域特定语言 (DSL),它定义了提示的特征,包括上下文、目标、说明及其元数据。常规提示是将所有这些方面合并为一个实体。 PromptML 将其分成多个部分并使信息变得明确。
语言语法可以在这里找到:grammar.lark
从此处安装promptml-cli
:https://github.com/narenaryan/promptml-cli 以使用 OpenAI 和 Google 模型运行 PromptML 程序。
语言很简单。您可以使用@
注释来启动块。节以@end
标记结束。注释以#
键开始。提示文件以.pml
扩展名结尾。
@prompt
# Add task context
@context
@end
# Add task objective
@objective
# This is the final question or ask
@end
# Add one or more instructions to execute the prompt
@instructions
@step
@end
@end
# Add one or more examples
@examples
@example
@input
# Add your example input
@end
@output
# Add your example output
@end
@end
@end
# Add task constraints
@constraints
@length min: 1 max: 10 @end
@end
# Add prompt category
@category
@end
# Add custom metadata
@metadata
@end
@end
请参阅prompt.pml 以查看完整语法。
常规文本提示本质上非常抽象。自然语言非常灵活,但可靠性却最低。如何为人工智能系统提供上下文并提出问题?我们不应该明确指定这一点吗? PromptML 尝试用简单的语言使提示内容变得明确。
以下是 PromptML 为提示工程领域带来的品质:
首先,XML、JSON 和 YAML 不是 DSL 语言。它们是可以表示任何形式的数据的数据格式。其次,生成式人工智能需要一种严格而灵活的数据语言,具有随领域一起发展的固定约束。
PromptML 正是为了解决这两个问题而构建的。
语言语法受到 XML 和 Ruby 的影响,因此如果您了解其中任何一种,您会在 PromptML 中编写提示时感到非常自在。
pip install -r requirements.txt
from promptml . parser import PromptParser
promptml_code = '''
@prompt
@context
This is the context section.
@end
@objective
This is the objective section.
@end
@instructions
@step
Step 1
@end
@end
@examples
@example
@input
Input example 1
@end
@output
Output example 1
@end
@end
@end
@category
Prompt Management
@end
@constraints
@length min: 1 max: 10 @end
@end
@metadata
top_p: 0.9
n: 1
team: promptml
@end
@end
'''
parser = PromptParser ( promptml_code )
prompt = parser . parse ()
print ( prompt )
# Output: {
# 'context': 'This is the context section.',
# 'objective': 'This is the objective section.',
# 'category': 'Prompt Management',
# 'instructions': ['Step 1'],
# 'examples': [
# {'input': 'Input example 1', 'output': 'Output example 1'}
# ],
# 'constraints': {'length': {'min': 1, 'max': 10}},
# 'metadata': {'top_p': 0.9, 'n': 1, 'team': 'promptml'}
# }
您可以在提示ML 文件中定义变量并在提示context
和objective
中使用它们。变量在@vars
部分中定义,并在context
或objective
部分中使用$var
语法引用。
@vars
name = "John Doe"
@end
@prompt
@context
You are a name changing expert.
@end
@objective
You have to change the name: $name to an ancient name.
@end
@end
PromptML 文档可以序列化为多种格式,例如:
LLM 非常容易理解 XML 提示,并且 PromptML 代码可用于生成如下 XML 提示:
从本 README 文件中的前面示例中,我们可以调用prompt
对象上的to_xml()
方法来生成 XML 提示。
# XML
serialized = prompt . to_xml ()
print ( serialized )
同样,您可以从同一对象分别生成 YAML 或 JSON 提示:
# JSON
prompt . to_json ()
# YAML
prompt . to_yaml ()
我们目前正在致力于:
VSCode
语法高亮支持