[ Английский | 简体中文]
promptc-go -это реализация promptc . Он использует Specification Specification для генерации, анализа, создания, составления и запуска файлов promptc и направлена на то promptc чтобы обобщить способ выполнения быстрого проектирования.
promptc -это спецификация OpenAPI для быстрого разработки.
Приведенный выше файл приглашения адаптирован из Zinccat/Zkit, лицензированный в GPLV3
# As simple as it should be
$ promptc $prompt $input
Функция чата
$ promptc chatБолее подробная информация о Quickc-cli, пожалуйста, обратитесь к Docs/cli.md.
Структурированный приглашенный файл:
// [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 % }
'' '
]Однострочный оперативный файл экспериментальный :
You Entered : { x }Примечание
Однострочный файл быстрого приглашения в настоящее время является экспериментальной функцией.
Не рекомендуется использовать его в производственной среде.
Вы можете написать однострочный файл приглашения без структурированного.
Текущий promptc-go поддерживает string , int , float types.
// 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 : интintmin : Int64max : Int64floatmin : Float64max : Float64default : строка{ role : 'user' }
xx { x } {{ x }} { %
if ( x > 12 ) {
result = "good" ;
} else {
result = "bad" ;
}
% } Все в {} будет переменным, например, {x} в предыдущем примере
Все в {%%} будет сценарии JS
Если вы хотите показать { или } , используйте {{ или }} вместо этого
Первая строка подсказки является особенной, она предоставляет некоторую дополнительную информацию для этой подсказки.
т.е. информация о роли для Chatgpt. например
role: 'user'
Show me more about {x}
Если вы хотите предоставить пустую дополнительную информацию, используйте {} так как ваша первая строка чрезвычайно рекомендуется. Хотя это не требуется, потому что, как только HJSON Parse не удастся, promptc будет подготовить первую строку к вашему приглашению, но это может вызвать много неопределенного поведения.
Мы зарезервировали {%Q%} для ''' , что не может быть легко сделано в многослойном текстовом синтаксисе HJSON.
например
This is reserved { % Q % } {{ % Q % }}Будет скомпилирован
This is reserved ''' { % Q % }Примечание
Используйте JavaScript в подсказке - экспериментальная функция.
promptc-goиспользует Otto в качестве своего времени выполнения JavaScript
Предупреждение
Использовать JavaScript в подсказке может сделать быстрое уязвимое и вызвать потенциальное нарушение безопасности.
promptc-goне возьмет на себя никакой ответственности за это.
promptc поддерживает встраивание сценариев JavaScript в приглашение с {%%} синтаксисом. И он поддерживает 2 режима:
В стандартном режиме, после запуска сценария JS, rackc получит результат от переменной result .
You Entered : { x }
Prompt Compiled : { %
if ( x == "1" ) {
result = "Hello" ;
} else {
result = "Word!" ;
}
% } Если введите x = 1 , результат будет:
You Entered: 1
Prompt Compiled: Hello
В Easy Mode The Christice получит результат от возвращаемого значения сценария JS. И это добавит E в начале подсказки. ( {%E /*script here*/ %} )
You Entered : { x }
Prompt Compiled : { % E
if ( x == "1" ) {
return "Hello" ;
} else {
return "Word!" ;
}
% } Если введите x = 1 , результат будет:
You Entered: 1
Prompt Compiled: Hello
В легком режиме сценарий будет завершен в функции, чтобы включить оператор return .
Например, фактический сценарий, который будет запускать в предыдущем примере:
result = ( function ( ) {
if ( x == "1" ) {
return "Hello"
} else {
return "Word!" ;
}
} ( )Мета-информация будет действовать как специальные переменные, определенные дикой проходом (но она не будет рассматриваться как переменная).
Текущая поддерживаемая мета -информация:
project: test
author: KevinZonda
license: MIT
version: 0.0 .1 Вы можете определить одно и то же имя в разделе vars , если хотите.
// 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