Bahasa markup yang sederhana namun elegan untuk mendefinisikan AI Prompts as Code (APaC). Dibuat untuk digunakan oleh agen AI agar secara otomatis meminta sistem AI lainnya.
PromptML dibuat untuk menyediakan cara bagi teknisi cepat untuk mendefinisikan perintah AI dengan cara yang deterministik. Ini adalah Bahasa Khusus Domain (DSL) yang mendefinisikan karakteristik prompt termasuk konteks, tujuan, instruksi, dan metadatanya. Perintah reguler adalah penggabungan semua aspek ini menjadi satu kesatuan. PromptML membaginya menjadi beberapa bagian dan menjadikan informasinya eksplisit.
Tata bahasa bahasa dapat ditemukan di sini: grammar.lark
Instal promptml-cli
dari sini: https://github.com/narenaryan/promptml-cli untuk menjalankan program PromptML dengan model OpenAI & Google.
Bahasanya sederhana. Anda memulai blok dengan anotasi @
bagian. Bagian diakhiri dengan penanda @end
. Komentar dimulai dengan #
kunci. File prompt diakhiri dengan ekstensi .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
Lihat prompt.pml untuk melihat sintaksis lengkap.
Perintah teks biasa bersifat sangat abstrak. Bahasa alami sangat fleksibel tetapi memberikan keandalan yang paling rendah. Bagaimana cara memberikan konteks untuk sistem AI dan menanyakan sesuatu? Bukankah kita harus menentukannya secara eksplisit. PromptML adalah upaya untuk membuat isi prompt menjadi eksplisit dengan bahasa yang sederhana.
Di bawah ini adalah kualitas yang dibawa oleh PromptML ke domain rekayasa prompt:
Pertama, XML, JSON, dan YAML bukan bahasa DSL. Mereka adalah format data yang dapat mewakili segala bentuk data. Kedua, AI generatif memerlukan bahasa data yang ketat namun fleksibel dengan batasan tetap yang berkembang seiring dengan domainnya.
PromptML dibuat tepat untuk menyelesaikan kedua masalah tersebut.
Tata bahasa dipengaruhi oleh XML & Ruby, jadi jika Anda mengetahui salah satunya, Anda akan merasa sangat nyaman menulis perintah di 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'}
# }
Anda dapat mendefinisikan variabel dalam file promptML dan menggunakannya dalam context
dan objective
prompt. Variabel didefinisikan di bagian @vars
dan direferensikan menggunakan sintaks $var
di bagian context
atau 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
Dokumen PromptML dapat diserialkan ke dalam berbagai format seperti:
Perintah XML dipahami dengan baik oleh LLM dan kode promptML dapat digunakan untuk menghasilkan perintah XML seperti ini:
Dari contoh sebelumnya di file README ini, kita bisa memanggil metode to_xml()
pada objek prompt
untuk menghasilkan prompt XML.
# XML
serialized = prompt . to_xml ()
print ( serialized )
Demikian pula, Anda dapat membuat prompt YAML atau JSON dari objek yang sama:
# JSON
prompt . to_json ()
# YAML
prompt . to_yaml ()
Saat ini kami sedang mengerjakan:
VSCode