[ Anglais | 简体中文]
promptc-go est une implémentation GO de promptc . Il utilise des spécifications promptc pour générer, analyser, construire, compiler et exécuter des fichiers promptc et vise à généraliser la façon de faire de l'ingénierie rapide.
promptc est une spécification en forme OpenAPI pour l'ingénierie rapide.
Le fichier d'invite ci-dessus est adapté de Zinccat / Zkit, sous licence GPLV3
# As simple as it should be
$ promptc $prompt $input
Fonction de chat
$ promptc chatPlus d'informations sur PromptC-CLI, veuillez vous référer à Docs / CLI.md.
Fichier d'invite structuré:
// [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 % }
'' '
]Fichier d'invite à une seule ligne expérimentale :
You Entered : { x }Note
Le fichier d'invite à une seule ligne est actuellement une fonctionnalité expérimentale.
Il n'est pas recommandé de l'utiliser dans un environnement de production.
Vous pouvez écrire le fichier d'invite unique sans structure.
Current promptc-go prend en charge les types string , int , 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 : chaîne{ role : 'user' }
xx { x } {{ x }} { %
if ( x > 12 ) {
result = "good" ;
} else {
result = "bad" ;
}
% } Tout ce qui est dans {} sera variable, par exemple {x} dans l'exemple précédent
Tout ce qui est dans {%%} sera des scripts JS
Si vous souhaitez afficher { ou } , utilisez {{ ou }} à la place
La première ligne d'invite est spéciale, elle fournit des informations supplémentaires pour cette invite.
IE Informations sur les rôles pour Chatgpt. par exemple
role: 'user'
Show me more about {x}
Si vous souhaitez fournir des informations supplémentaires vides, utilisez {} car votre première ligne est extrêmement recommandée. Bien que ce ne soit pas nécessaire, car une fois que HJSON Parse a échoué, le promptc annexonnera la première ligne à votre invite, mais cela pourrait provoquer de nombreux comportements non définis.
Nous avons réservé {%Q%} pour ''' qui ne peut pas être facile à faire dans la syntaxe de texte multiligne de HJSON.
par exemple
This is reserved { % Q % } {{ % Q % }}Sera compilé pour
This is reserved ''' { % Q % }Note
Utiliser JavaScript dans l'invite est une fonctionnalité expérimentale.
promptc-goutilise Otto comme son runtime javascript
Avertissement
Utiliser JavaScript dans l'invite peut rendre la vulnérable invite et provoquer une violation de sécurité potentielle.
promptc-gon'apportera aucune responsabilité à ce sujet.
promptc prend en charge l'intégration de scripts JavaScript dans l'invite avec la syntaxe {%%} . Et il prend en charge 2 modes:
En mode standard, après l'exécution du script JS, le promptC obtiendra le résultat de la variable result .
You Entered : { x }
Prompt Compiled : { %
if ( x == "1" ) {
result = "Hello" ;
} else {
result = "Word!" ;
}
% } Si entrez x = 1 , le résultat sera:
You Entered: 1
Prompt Compiled: Hello
En mode facile, le promptC obtiendra le résultat de la valeur renvoyée du script JS. Et il ajoutera un E au début de l'invite. ( {%E /*script here*/ %} )
You Entered : { x }
Prompt Compiled : { % E
if ( x == "1" ) {
return "Hello" ;
} else {
return "Word!" ;
}
% } Si entrez x = 1 , le résultat sera:
You Entered: 1
Prompt Compiled: Hello
En mode facile, le script sera enveloppé dans une fonction afin d'activer l'instruction return .
par exemple le script réel qui sera exécuté dans l'exemple précédent:
result = ( function ( ) {
if ( x == "1" ) {
return "Hello"
} else {
return "Word!" ;
}
} ( )Meta Info serait agir comme des variables spéciales définies par la voie sauvage (mais elle ne sera pas traitée comme variable).
Meta Informations prises en charge actuelles:
project: test
author: KevinZonda
license: MIT
version: 0.0 .1 Vous pouvez définir le même nom dans la section vars si vous le souhaitez.
// 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