[ Bahasa Inggris | 简体中文]
promptc-go adalah implementasi GO dari promptc . Ini menggunakan spesifikasi promptc untuk menghasilkan, menganalisis, membangun, mengkompilasi & menjalankan file promptc dan bertujuan untuk menggeneralisasi cara untuk melakukan rekayasa cepat.
promptc adalah spesifikasi seperti OpenAPI untuk rekayasa prompt.
File prompt di atas diadaptasi dari ZINCCAT/ZKIT, dilisensikan di bawah GPLV3
# As simple as it should be
$ promptc $prompt $input
Fungsi obrolan
$ promptc chatInfo lebih lanjut tentang promptc-cli, silakan merujuk ke dokumen/cli.md.
File prompt terstruktur:
// [Optional] meta info
project: test
author: KevinZonda
license: MIT
version: 0.0 .1
// [Optional] define configs
conf: {
provider: openai
model: gpt - 3.5 - turbo
temperature: 0.5
stop: [ 'Hello' , '4.0' ]
}
// [Optional] define variable constraint
vars: {
x: int
// var x with int type
y: int { min : 0 , max : 10 }
z: int { min : 0 , max : 10 , default : '5' }
}
// [Optional] Birmingham-style define var
a: int { min : 0 , max : 10 }
// [Required] define prompts
prompts: [
// role: 'user' is meta info for ChatGPT
// to make it empty, use {}
'' 'role: ' user '
You Entered : { x }
Prompt Compiled : { %
if ( x == "1" ) {
result = "Hello" ;
} else {
result = "Word!" ;
}
% }
{ % Q % }
'' '
]Eksperimental file prompt baris tunggal:
You Entered : { x }Catatan
File prompt baris tunggal saat ini adalah fitur eksperimental.
Tidak disarankan untuk menggunakannya di lingkungan produksi.
Anda dapat menulis file prompt baris tunggal tanpa terstruktur.
promptc-go saat ini mendukung string , int , jenis float .
// declare a variable
myName : string { minLen : 3 , maxLen : 10 , default : "John" }
// a var named `myName` of type `string`
// with default value "John"
// min length 3, max length 10
myAge : int { min : 18 , max : 100 , default : '18' }
// a var named `myAge` of type `int`
// with default value 18
// min value 18, max value 100
thisPrice : float { min : 0.01 , default : '0.01' }
// a var named `thisPrice` of type `float`
// with default value 0.01
// min value 0.01, and unlimited max value stringminLen : IntmaxLen : Intintmin : Int64max : Int64floatmin : float64max : float64default : String{ role : 'user' }
xx { x } {{ x }} { %
if ( x > 12 ) {
result = "good" ;
} else {
result = "bad" ;
}
% } Apa pun di {} akan bervariasi, misalnya {x} dalam contoh sebelumnya
Apa pun di {%%} akan menjadi skrip JS
Jika Anda ingin menampilkan { atau } , gunakan {{ atau }} sebagai gantinya
Baris prompt pertama adalah khusus, memberikan beberapa info tambahan untuk prompt ini.
yaitu info peran untuk chatgpt. misalnya
role: 'user'
Show me more about {x}
Jika Anda ingin memberikan info tambahan kosong, gunakan {} karena baris pertama Anda sangat disarankan. Meskipun tidak diperlukan, karena begitu HJSON Parse gagal, promptc akan menyiapkan baris pertama ke prompt Anda, tetapi mungkin menyebabkan banyak perilaku yang tidak terdefinisi.
Kami memesan {%Q%} untuk ''' yang tidak mudah dilakukan dalam sintaks teks multiline dari HJSON.
misalnya
This is reserved { % Q % } {{ % Q % }}Akan dikompilasi
This is reserved ''' { % Q % }Catatan
Gunakan JavaScript di Prompt adalah fitur eksperimental.
promptc-gomenggunakan Otto sebagai runtime JavaScript-nya
Peringatan
Gunakan JavaScript di Prompt dapat membuat cepat rentan dan menyebabkan potensi pelanggaran keamanan.
promptc-gotidak akan bertanggung jawab tentang hal itu.
promptc mendukung penyematan skrip JavaScript dalam prompt dengan {%%} sintaks. Dan itu mendukung 2 mode:
Dalam mode standar, setelah menjalankan skrip JS, promptC akan mendapatkan hasil dari variabel result .
You Entered : { x }
Prompt Compiled : { %
if ( x == "1" ) {
result = "Hello" ;
} else {
result = "Word!" ;
}
% } Jika masuk x = 1 , hasilnya adalah:
You Entered: 1
Prompt Compiled: Hello
Dalam mode mudah, promptC akan mendapatkan hasil dari nilai yang dikembalikan dari skrip JS. Dan itu akan menambah E di awal prompt. ( {%E /*script here*/ %} )
You Entered : { x }
Prompt Compiled : { % E
if ( x == "1" ) {
return "Hello" ;
} else {
return "Word!" ;
}
% } Jika masuk x = 1 , hasilnya adalah:
You Entered: 1
Prompt Compiled: Hello
Dalam mode mudah, skrip akan dibungkus dalam suatu fungsi untuk mengaktifkan pernyataan return .
misalnya skrip aktual yang akan dijalankan dalam contoh sebelumnya:
result = ( function ( ) {
if ( x == "1" ) {
return "Hello"
} else {
return "Word!" ;
}
} ( )Info meta akan bertindak sebagai variabel yang ditentukan oleh arah liar khusus (tetapi tidak akan diperlakukan sebagai variabel).
Info meta yang didukung saat ini:
project: test
author: KevinZonda
license: MIT
version: 0.0 .1 Anda dapat mendefinisikan nama yang sama di bagian vars jika Anda mau.
// prompt1.promptc
project: test
author: KevinZonda
license: MIT
version: 0.0 .1
vars: {
x : int
}
// VarList:
// - x: string // prompt2.promptc
project: test
author: KevinZonda
license: MIT
version: 0.0 .1
vars: {
x: int
project: string
license: string { minLen : 12 }
}
// VarList:
// - x: string
// - project: string
// - license: string // prompt3.promptc
project: test
author: KevinZonda
license: MIT
version: 0.0 .1
prompts: [
'' '{}
{ %
console . log ( project ) ; // will print nothing
% }
'' '
]
// VarList:
// - project: string