ภาษามาร์กอัปที่เรียบง่ายแต่สวยงามสำหรับกำหนด AI Prompt เป็นโค้ด (APaC) สร้างขึ้นเพื่อใช้โดยตัวแทน AI เพื่อแจ้งเตือนระบบ AI อื่นๆ โดยอัตโนมัติ
PromptML ได้รับการสร้างขึ้นเพื่อให้มีวิธีสำหรับวิศวกรพร้อมท์ในการกำหนดพร้อมท์ AI ในลักษณะที่กำหนดได้ นี่คือภาษาเฉพาะโดเมน (DSL) ซึ่งกำหนดลักษณะของพรอมต์ รวมถึงบริบท วัตถุประสงค์ คำแนะนำ และข้อมูลเมตา พรอมต์ปกติคือการรวมแง่มุมทั้งหมดเหล่านี้เข้าเป็นเอนทิตีเดียว PromptML แบ่งออกเป็นหลายส่วนและทำให้ข้อมูลมีความชัดเจน
สามารถดูไวยากรณ์ภาษาได้ที่นี่: grammar.lark
ติดตั้ง promptml-cli
จากที่นี่: https://github.com/narenaryan/promptml-cli เพื่อรันโปรแกรม PromptML ด้วยโมเดล OpenAI และ Google
ภาษาก็เรียบง่าย คุณเริ่มบล็อกด้วยคำอธิบายประกอบส่วน @
ส่วนที่ลงท้ายด้วยเครื่องหมาย @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 เพื่อดูไวยากรณ์ที่สมบูรณ์
ข้อความแจ้งปกติมีลักษณะเป็นนามธรรมมาก ภาษาธรรมชาติมีความยืดหยุ่นมากแต่ให้ความน่าเชื่อถือน้อยที่สุด จะให้บริบทสำหรับระบบ AI และถามอะไรได้อย่างไร? เราไม่ควรระบุให้ชัดเจน PromptML คือความพยายามที่จะทำให้เนื้อหาของพรอมต์ชัดเจนด้วยภาษาง่ายๆ
ด้านล่างนี้คือคุณสมบัติที่ PromptML นำมาสู่ขอบเขตวิศวกรรมที่รวดเร็ว:
ประการแรก XML, JSON และ YAML ไม่ใช่ภาษา DSL เป็นรูปแบบข้อมูลที่สามารถแสดงข้อมูลในรูปแบบใดก็ได้ ประการที่สอง Generative AI ต้องการภาษาข้อมูลที่เข้มงวดและยืดหยุ่นพร้อมข้อจำกัดคงที่ซึ่งพัฒนาไปพร้อมกับโดเมน
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'}
# }
คุณสามารถกำหนดตัวแปรในไฟล์ promptML และใช้ใน context
และ objective
ของพรอมต์ได้ ตัวแปรถูกกำหนดไว้ในส่วน @vars
และอ้างอิงโดยใช้ไวยากรณ์ $var
ใน context
หรือส่วน objective
@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 นี้ เราสามารถเรียกใช้เมธอด to_xml()
บนอ็อบเจ็กต์ prompt
เพื่อสร้างพร้อมต์ XML
# XML
serialized = prompt . to_xml ()
print ( serialized )
ในทำนองเดียวกัน คุณสามารถสร้างพรอมต์ YAML หรือ JSON ตามลำดับจากออบเจ็กต์เดียวกัน:
# JSON
prompt . to_json ()
# YAML
prompt . to_yaml ()
ขณะนี้เรากำลังดำเนินการเกี่ยวกับ:
VSCode
ที่เน้นการสนับสนุน