[ Inglês | 简体中文]
promptc-go é uma implementação do promptc . Ele usa especificação promptc para gerar, analisar, construir, compilar e executar arquivos promptc e visa generalizar a maneira de solicitar a engenharia.
promptc é uma especificação do tipo OpenAPI para engenharia imediata.
O arquivo de prompt acima está adaptado do Zinccat/Zkit, licenciado em GPLV3
# As simple as it should be
$ promptc $prompt $input
Função de bate -papo
$ promptc chatMais informações sobre o promptc-cli, consulte o docs/cli.md.
Arquivo de prompt estruturado:
// [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 % }
'' '
]Arquivo de prompt de linha única experimental :
You Entered : { x }Observação
Atualmente, o arquivo de prompt de linha única é um recurso experimental.
Não é recomendável usá -lo no ambiente de produção.
Você pode escrever o arquivo de prompt de linha única sem estrutura.
Os tipos atuais de string, promptc-go suportes de 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 : string{ role : 'user' }
xx { x } {{ x }} { %
if ( x > 12 ) {
result = "good" ;
} else {
result = "bad" ;
}
% } Qualquer coisa em {} será variável, por exemplo, {x} no exemplo anterior
Qualquer coisa em {%%} será scripts js
Se você quiser mostrar { ou } , use {{ ou }} em vez disso
A primeira linha de prompt é especial, fornece algumas informações extras para este prompt.
ou seja, informações de função para chatgpt. por exemplo
role: 'user'
Show me more about {x}
Se você deseja fornecer informações extras vazias, use {} pois sua primeira linha é extremamente recomendada. Embora não seja necessário, porque uma vez que o HJSON Parse falhou, o promptc prenderá a primeira linha ao seu prompt, mas pode causar muito comportamento indefinido.
Reservamos {%Q%} para ''' , que não pode ser fácil de fazer na sintaxe de texto multilina de HJSON.
por exemplo
This is reserved { % Q % } {{ % Q % }}Será compilado para
This is reserved ''' { % Q % }Observação
Use JavaScript no prompt é um recurso experimental.
promptc-gousa Otto como seu tempo de execução do JavaScript
Aviso
Use JavaScript no prompt pode tornar o prompt vulnerável e causar violação potencial de segurança.
promptc-gonão assumirá nenhuma responsabilidade por causa disso.
promptc suporta incorporar scripts JavaScript no prompt com {%%} sintaxe. E suporta 2 modos:
No modo padrão, após a execução do script JS, o promptC obterá o resultado da variável result .
You Entered : { x }
Prompt Compiled : { %
if ( x == "1" ) {
result = "Hello" ;
} else {
result = "Word!" ;
}
% } Se digitar x = 1 , o resultado será:
You Entered: 1
Prompt Compiled: Hello
No modo fácil, o promptC obterá o resultado do valor retornado do script JS. E adicionará um E no início do prompt. ( {%E /*script here*/ %} )
You Entered : { x }
Prompt Compiled : { % E
if ( x == "1" ) {
return "Hello" ;
} else {
return "Word!" ;
}
% } Se digitar x = 1 , o resultado será:
You Entered: 1
Prompt Compiled: Hello
No modo fácil, o script será envolvido em uma função para ativar a instrução return .
por exemplo, o script real que será executado no exemplo anterior:
result = ( function ( ) {
if ( x == "1" ) {
return "Hello"
} else {
return "Word!" ;
}
} ( )A meta informação seria agir como variáveis especiais definidas por via selvagem (mas não serão tratadas como variáveis).
Meta informações atuais:
project: test
author: KevinZonda
license: MIT
version: 0.0 .1 Você pode definir o mesmo nome na seção vars , se desejar.
// 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