[ Englisch | 简体中文]
promptc-go ist eine GO-Implementierung von promptc . Es verwendet promptc , um promptc zu generieren, zu analysieren, zu erstellen, zu kompilieren und auszuführen, und zielt darauf ab, die Art und Weise zu verallgemeinern.
promptc ist eine OpenAPI -ähnliche Spezifikation für die schnelle Engineering.
Die obige Eingabeaufforderungsdatei ist von Zinccat/ZKIT angepasst, unter GPLV3 lizenziert
# As simple as it should be
$ promptc $prompt $input
Chat -Funktion
$ promptc chatWeitere Informationen zu promptC-CLI finden Sie unter DOCS/CLI.MD.
Strukturierte Eingabeaufforderung:
// [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 % }
'' '
]Einheitliche Eingabedatei experimentell :
You Entered : { x }Notiz
Die Einzelaufforderung-Eingabedatei derzeit ist eine experimentelle Funktion.
Es wird nicht empfohlen, es in der Produktionsumgebung zu verwenden.
Sie können die Eingangsdatei mit einer Leitung ohne strukturiert schreiben.
Die aktuelle promptc-go unterstützt string , int , float Typen.
// 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 : Zeichenfolge{ role : 'user' }
xx { x } {{ x }} { %
if ( x > 12 ) {
result = "good" ;
} else {
result = "bad" ;
}
% } Alles in {} ist variabel, z. {x} im vorherigen Beispiel
Alles in {%%} werden JS -Skripte sein
Wenn Sie { oder } anzeigen möchten, verwenden Sie stattdessen {{ oder }}
Die erste Zeile der Eingabeaufforderung ist etwas Besonderes. Sie bietet einige zusätzliche Informationen für diese Eingabeaufforderung.
dh Rolleninformationen für Chatgpt. z.B
role: 'user'
Show me more about {x}
Wenn Sie leere zusätzliche Informationen bereitstellen möchten, verwenden Sie {} , da Ihre erste Zeile extrem empfohlen wird. Obwohl es nicht erforderlich ist, denn sobald Hjson Parse fehlgeschlagen ist, wird die promptc die erste Zeile auf Ihre Eingabeaufforderung vorbereiten, dies kann jedoch zu viel undefiniertem Verhalten führen.
Wir haben {%Q%} für ''' reserviert, was in der Multiline -Textsyntax von HJSON nicht einfach sein kann.
z.B
This is reserved { % Q % } {{ % Q % }}Wird zusammengestellt zu
This is reserved ''' { % Q % }Notiz
Verwenden Sie JavaScript in der Eingabeaufforderung ist eine experimentelle Funktion.
promptc-goverwendet Otto als JavaScript-Laufzeit
Warnung
Verwenden Sie JavaScript in der Eingabeaufforderung könnte eine sofortige anfällige und potenzielle Sicherheitsverletzung verursachen.
promptc-goübernimmt keine Verantwortung dafür.
promptc unterstützt die Einbettung von JavaScript -Skripten in Eingabeaufforderung in {%%} Syntax. Und es unterstützt 2 Modi:
Im Standardmodus wird nach Ausführen des JS -Skripts der Eingabeaufforderung das Ergebnis aus result erhalten.
You Entered : { x }
Prompt Compiled : { %
if ( x == "1" ) {
result = "Hello" ;
} else {
result = "Word!" ;
}
% } Wenn Sie x = 1 eingeben, ist das Ergebnis:
You Entered: 1
Prompt Compiled: Hello
Im Easy -Modus erhält die Eingabeaufforderung das Ergebnis aus dem zurückgegebenen Wert des JS -Skripts. Und es wird am Anfang der Eingabeaufforderung ein E hinzufügen. ( {%E /*script here*/ %} )
You Entered : { x }
Prompt Compiled : { % E
if ( x == "1" ) {
return "Hello" ;
} else {
return "Word!" ;
}
% } Wenn Sie x = 1 eingeben, ist das Ergebnis:
You Entered: 1
Prompt Compiled: Hello
Im Easy -Modus wird das Skript in eine Funktion eingewickelt, um return zu aktivieren.
ZB das eigentliche Skript, das im vorherigen Beispiel ausgeführt wird:
result = ( function ( ) {
if ( x == "1" ) {
return "Hello"
} else {
return "Word!" ;
}
} ( )Meta-Infos wären als spezielle Wildguss-Variablen (wild wild bindemodell definierte Variablen (wird nicht als variabel) behandelt).
Aktuelle unterstützte Meta -Info:
project: test
author: KevinZonda
license: MIT
version: 0.0 .1 Sie können denselben Namen im Abschnitt vars definieren, wenn Sie möchten.
// 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