문서 검색...

문서를 검색하려면 입력을 시작하세요

채팅 가이드

매크로(CBS)

어떤 프롬프트 텍스트에서든 쓰는 중괄호 스크립팅.

매크로는 요청 시점에 확장되는 이중 중괄호 토큰입니다. 캐릭터 항목, 로어북 항목, 프리셋, 인사말, 채팅 텍스트에서 쓸 수 있고 중첩도 됩니다.

text
{{char}} smiles at {{user}}.
{{random::sunny::rainy::foggy}}
{{calc::1+2*3}}

인자는 이중 콜론으로 구분합니다. 알 수 없는 매크로는 오류 없이 빈 값으로 확장되므로 오타가 요청을 망가뜨리지 않습니다.

중괄호 하나는 매크로가 아닙니다. 한 쌍은 그대로 모델에 전달되어 답변에 나타나는데, 이것이 중괄호가 남는 흔한 원인입니다. SillyTavern, RisuAI, JanitorAI와 같은 방식이라 그쪽 카드가 그대로 동작합니다.

text
{{user}}   expands to your persona name
{user}     stays literal text

매크로확장 결과
{{char}}현재 캐릭터 이름(그룹 채팅에서는 현재 화자).
{{user}}내 페르소나 이름.
{{persona}}내 페르소나 설명.
{{description}}현재 캐릭터의 설명 필드.
{{lastmessage}}가장 최근 메시지의 본문.
{{time}} / {{date}}내 로캘과 시간대 기준의 현재 시각/날짜.

random은 확장할 때마다 인자 중 하나를 새로 고릅니다. pick은 대화 내내 유지되는 선택을 합니다. roll은 d 표기법으로 주사위를 굴립니다.

text
{{random::a::b::c}}   {{pick::a::b::c}}   {{roll::d20}}

굴림과 무작위는 턴마다 시드가 정해집니다: 재생성은 같은 값을 다시 쓰므로 스와이프해도 주사위를 다시 굴리지 않습니다.

채팅 변수는 대화 분기별로 유지됩니다. 전역 변수는 모든 채팅에서 유지됩니다. 매크로를 쓸 수 있는 아무 텍스트에서나, 또는 트리거 스크립트에서 설정하세요.

text
{{setvar::mood::happy}}
{{getvar::mood}}
{{setglobalvar::visits::1}}

분기 범위 저장이란, 다른 분기로 스와이프하면 그 분기의 변수 상태가 복원된다는 뜻입니다. 형제끼리 값이 새지 않습니다.

블록은 내용을 감쌉니다. if는 조건이 참일 때 본문을 그립니다. each는 배열을 돌며 자리를 채웁니다. when은 줄 단위 else 분기를 더합니다.

text
{{#if {{equal::{{getvar::mood}}::happy}}}}
{{char}} is in a great mood.
{{/if}}

{{#each {{array::red::green::blue}} item}}
Color: {{slot::item}}
{{/each}}

pure와 escape는 중괄호 문자를 확장에서 보호합니다. 닫는 태그는 어떤 것이든 가장 안쪽의 열린 블록을 닫습니다.

주석 매크로는 모델이 보기 전에 사라지므로 카드 항목 안의 메모로 쓸 수 있습니다. 매크로 문법을 그대로 보여주려면 pure 블록을 쓰세요.

text
{{// note to self, never sent to the model}}
{{#pure}}{{char}} stays literal here{{/pure}}