[ 영어 | 简体中文]
promptc-go promptc 의 GO 구현입니다. promptc 사양을 사용하여 promptc 파일을 생성, 분석, 빌드, 컴파일 및 실행하며 프롬프트 엔지니어링을 일반화하는 것을 목표로합니다.
promptc 는 프롬프트 엔지니어링을위한 OpenAPI 유사 사양입니다.
위의 프롬프트 파일
# As simple as it should be
$ promptc $prompt $input
채팅 기능
$ promptc chatPretmc-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 유형을 지원합니다.
// 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 : 플로트 64default : 문자열{ role : 'user' }
xx { x } {{ x }} { %
if ( x > 12 ) {
result = "good" ;
} else {
result = "bad" ;
}
% } {} 의 모든 것은 가변적입니다. 예를 들어 {x}
{%%} 의 모든 것은 JS 스크립트입니다
{ 또는 } 표시하려면 대신 {{ 또는 }} 사용하십시오.
프롬프트의 첫 번째 줄은 특별 하며이 프롬프트에 대한 추가 정보를 제공합니다.
IE ChatGpt의 역할 정보. 예를 들어
role: 'user'
Show me more about {x}
빈 추가 정보를 제공하려면 첫 번째 줄이 매우 권장되므로 {} 사용하십시오. 일단 HJSON 구문 분석이 실패했기 때문에 필수는 필요하지 않지만 promptc 는 프롬프트에 첫 번째 줄을 선출하지만 정의되지 않은 많은 동작을 유발할 수 있습니다.
HJSON의 다중 텍스트 구문에서는 쉽게 수행 할 수없는 ''' 에 대해 {%Q%} 예약했습니다.
예를 들어
This is reserved { % Q % } {{ % Q % }}컴파일됩니다
This is reserved ''' { % Q % }메모
프롬프트에서 JavaScript를 사용하는 것은 실험 기능입니다.
promptc-goOtto를 JavaScript 런타임으로 사용합니다
경고
프롬프트에 JavaScript를 사용하면 신속한 보안을 유발할 수 있습니다.
promptc-go그것에 대해 책임을지지 않습니다 .
promptc {%%} 구문으로 프롬프트에 JavaScript 스크립트 임베딩을 지원합니다. 그리고 2 가지 모드를 지원합니다.
표준 모드에서는 JS 스크립트를 실행 한 후 PrustC가 result 변수에서 결과를 얻습니다.
You Entered : { x }
Prompt Compiled : { %
if ( x == "1" ) {
result = "Hello" ;
} else {
result = "Word!" ;
}
% } x = 1 입력하면 결과는 다음과 같습니다.
You Entered: 1
Prompt Compiled: Hello
쉬운 모드에서는 PromptC가 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