一種簡單而優雅的標記語言,用於將 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
語法高亮支持