Janitor AI 프롬프트가 어느 순간부터 "안 먹히는" 것처럼 보여도, 실제로는 무시된 게 아닐 때가 많습니다. 대화 기록 아래에 파묻힌 것입니다. 플랫폼의 전송 순서를 설명한 공개 자료를 보면 프롬프트 블록 뒤에 대화 기록이 붙습니다. 새 메시지가 쌓일수록 모델 입력의 끝에서 규칙이 멀어지는 구조입니다. 그래서 짧고 증상에 맞춘 블록은 오래 버티지만, 800단어짜리 만능 프롬프트는 버티기 어렵습니다.
무엇을 붙여 넣기 전에 먼저 증상에 맞는 입력란부터 찾자
아래 자료에서 다루는 입력란은 결국 몇 가지 블록으로 나뉘어 모델에 전달됩니다. 캐릭터 정의, 사용자 페르소나, Chat Memory, 프롬프트 필드가 대표적입니다. 복사한 프롬프트가 아무 효과도 내지 못하는 흔한 이유는 엉뚱한 입력란에 넣기 때문입니다. 지금 보이는 증상과 맞는 행을 고른 다음, 한 번에 한 가지만 바꿔보세요.
| 보이는 현상 | 가장 가능성 높은 원인 | 최소 수정 방법 |
|---|---|---|
| 봇이 내 캐릭터의 대사를 대신 씀 | 첫 메시지나 예시 대화에서 이미 사용자를 대신해 말하고 있음 | 원인이 되는 원문을 고친 뒤 아래의 주도권 블록을 추가 |
| 20턴 정도는 규칙이 작동하다가 흐려짐 | 쌓인 대화 기록 아래로 프롬프트가 밀림 | 가장 중요한 규칙 하나를 Chat Memory에 다시 적기 |
| 답변이 에세이처럼 길어짐 | 어디에도 길이 제한이 없거나, 카드와 프롬프트의 규칙이 서로 충돌함 | 문단 수 규칙 하나만 정해 한 번만 적기 |
| 봇이 내가 보낸 메시지를 그대로 반복함 | 최근 대화가 그런 패턴을 학습시킴 | 문제가 되는 답변을 삭제하거나 수정한 뒤 반복 금지 문장을 추가 |
| 프롬프트가 완전히 무시되는 것처럼 보임 | 영구 콘텐츠가 컨텍스트 한도를 넘어 잘려 나감 | 스토리가 아니라 프롬프트를 줄이기 |
| 모델을 바꾸자 같은 프롬프트가 다르게 작동함 | 프록시 컨텍스트에 맞춘 프롬프트를 JLLM에서 실행 중임 | 아래 표에 맞춰 길이를 다시 조절 |
어떤 템플릿보다 효과적인 습관은 두 가지입니다. 테스트할 때 한 번에 변수 하나만 바꾸고, 되돌릴 수 있도록 이전 버전을 보관하세요.
프롬프트는 어디에 놓이며, 80턴 뒤에도 무엇이 남는가
Janitor AI는 매 턴마다 여러 블록을 조합해 하나의 요청을 만들며, 사용자가 수정하는 필드가 모델이 마지막으로 읽는 부분은 아닙니다. 공개 자료마다 세부적인 순서는 조금씩 다르지만, 공통으로 확인되는 핵심은 따로 있습니다.
| 자료 | 프롬프트 필드의 위치 | 그 뒤에 붙는 내용 |
|---|---|---|
| 커뮤니티 챗봇 가이드 (성격, Chat Memory, 시나리오, 고급 프롬프트, 최근 메시지) | 5개 중 4번째 | 최근 메시지 |
| rshtola/jai-info, 2026년 4월 프록시 경로에서 관찰된 내용 | 글로벌 프롬프트 바로 다음인 2번째 | 캐릭터 페르소나, 시나리오, 사용자 페르소나, 예시 대화, 요약, 로어북 |
| JLLM 경로를 다룬 프롬프트 문제 해결 글 | 6개 중 5번째 | 전체 대화 |
세 자료 모두 조립된 블록 뒤에 대화를 붙입니다. 커뮤니티 글에서 반복적으로 보고되는 문제도 여기서 설명됩니다. 규칙이 전송되지 않은 게 아니라, 수천 토큰에 달하는 최신 텍스트와 경쟁하고 있는 것입니다. 인라인 OOC 한 줄이 기존 프롬프트보다 훨씬 오래 답변을 조종하는 이유도 같습니다. OOC 문장은 입력의 맨 끝에 도착합니다.
프록시를 사용한다면 jai-info 문서의 다음 내용도 알아둘 만합니다. 비어 있는 필드는 빈 섹션으로 보내지지 않고 제거됩니다. 또한 커스텀 프롬프트는 Janitor가 <Scenario>나 <UserPersona> 같은 태그로 감싸지 않는 몇 안 되는 블록 중 하나입니다. 즉, 입력한 텍스트가 별도 라벨 없이 그대로 놓입니다. 모델이 이를 규칙 모음으로 읽길 원한다면 직접 제목 줄을 붙이는 편이 좋습니다.
실제로 중요한 내용은 80턴까지 프롬프트 필드 하나에만 맡기면 안 됩니다. 대화 중 바뀌는 사실은 직접 관리하는 짧은 요약으로 만들어 Chat Memory에 넣고, 일반적인 답변 방식은 프롬프트 필드에 두세요. 이 구성이 계속 유지된다고 가정하지 말고 80턴에서 직접 확인해야 합니다.
문제 하나에 블록 하나씩, 프롬프트 5종
처음 네 개는 Advanced Prompt 또는 Custom Prompt 필드에 넣고, 다섯 번째는 Chat Memory에 넣습니다. 한 번에 하나만 붙여 넣고 6턴을 실행하세요. 차이를 설명할 수 있을 때만 유지하면 됩니다. 다섯 개를 한꺼번에 쌓는 순간 어떤 규칙이 문제를 일으켰는지 추적할 수 없는 프롬프트가 됩니다.
봇이 내 캐릭터를 대신 연기하지 않게 하기
r/JanitorAI_Official에서 반복적으로 등장하는 불만이며, 문구의 차이가 특히 크게 작용하는 유형입니다. 하지 말아야 할 행동만 나열하지 말고 봇이 무엇을 써야 하는지를 분명히 적으세요.
Write only {{char}}, the world, and side characters.
{{user}}'s dialogue, actions, thoughts and decisions belong to {{user}} alone.
When {{char}} would need {{user}}'s response, end the reply on the action or question that invites it.
Treat {{user}}'s latest message as the current truth of the scene.
널리 인용되는 커뮤니티 문제 해결 스레드에서는 이 블록과 함께 페르소나에 매크로 정의를 명시하라고 권합니다. {{user}} = Name이라고 적고 {{user}}가 {{char}}가 아니라고 밝혀두는 방식입니다. 다만 기대치는 현실적으로 잡는 편이 좋습니다. 봇이 사용자의 캐릭터를 빼앗아 가는 문제를 다룬 긴 스레드에서 한 댓글 작성자는 일반적인 해결책의 효과를 다음처럼 평가했습니다.
"It work 80%" — u/NextCompetition6019, r/JanitorAI_Official
설명을 죽이지 않고 답변 길이 제한하기
Default to 2–3 paragraphs. Expand only when {{user}} asks for detail.
Lead with what {{char}} does and says in the current moment.
Open each reply with new material rather than restating {{user}}'s message.
문단 수보다 중요한 것은 마지막의 반복 금지 규칙입니다. 입력 내용을 되풀이하는 데 답변의 절반을 써버리면 새로운 이야기가 등장할 공간이 그만큼 줄어들기 때문입니다.
시점과 시제 고정하기
Narrate {{char}} in close third person, present tense.
Keep dialogue in quotation marks and actions in plain prose.
Match the register of {{user}}'s writing rather than escalating it.
사람들이 가장 자주 빼먹는 부분은 문체의 격을 맞추라는 규칙입니다. 이 한 줄이 과장된 문장으로 흐르는 현상을 줄여주고, 사용자의 문체를 어느 정도 따라가는 경로에서는 모델이 모방할 구체적인 기준이 됩니다.
장면을 계속 앞으로 보내기
Advance one meaningful beat per reply.
Let {{char}} act on their own motives instead of waiting for instructions.
Leave at least one thread unresolved at the end of each reply.
수동적인 봇에만 사용하세요. 길이 제한과 함께 적용하면 장면이 지나치게 급하게 진행될 수 있으므로, 두 규칙을 함께 쓸 때는 반드시 같이 테스트해야 합니다.
Chat Memory용 요약 블록
이 블록은 프롬프트 필드에 넣으면 안 됩니다.
Place: [where the scene is happening]
Goal: [what {{char}} wants right now]
Fact: [one confirmed thing about the relationship]
Open thread: [what is unresolved]
Correction: [the most recent thing {{user}} fixed]
Janitor AI의 공식 Advanced Prompting 101 도움말은 긴 대화에서 기억이 흐려지기 시작한 뒤 지시문을 계속 덧붙이기보다 짧은 요약을 사용하라고 안내하는 자료로 커뮤니티 가이드에서 자주 인용됩니다. 규칙 문단을 하나 더 추가하는 것보다 5줄을 다시 쓰는 편이 컨텍스트를 덜 차지합니다.
모델이 실행할 수 있는 규칙으로 쓰기
같은 도움말은 "no", "don't", "never", "stop" 같은 부정 표현만으로 규칙을 만들지 말라고 조언합니다. 특정 행동을 이름으로 언급하면 그 행동 자체가 입력에 남기 때문입니다. 예를 들어 "no blood"라고 쓰면 blood라는 단어도 함께 들어갑니다. 또 하나 자주 인용되는 문장은 반복 = 노이즈입니다. 같은 규칙을 다섯 가지 표현으로 반복해도 토큰만 늘어날 뿐, 준수율이 높아지지는 않습니다.
해결책은 대체 행동을 지정하는 라우팅 문장입니다. 부정형 규칙을 쓸 때마다 모델이 대신 해야 할 행동을 함께 적으세요.
| 이렇게 쓰는 대신 | 이렇게 쓰기 |
|---|---|
| "Never speak for {{user}}" | "Write only {{char}}'s speech, thoughts and actions" |
| "Don't ask me what I want to do next" | "Where {{char}} would ask for direction, have {{char}} take one action alone" |
| "Don't be repetitive" | "Open each reply with an event that has not happened yet" |
| "Avoid short replies" | "Give each reply two paragraphs: one action, one line of dialogue" |
"Avoid"나 "refrain from"도 안전한 우회 표현은 아닙니다. 원하지 않는 행동을 여전히 프롬프트 안에 불러오기 때문입니다. 캐릭터 카드나 예시 대화에서 금지한 행동을 직접 보여주고 있다면 대개 카드 쪽이 이깁니다. 규칙을 하나 더 추가하기 전에 원문부터 고치세요.
사용 중인 모델에 맞춰 프롬프트 크기 조절하기
32k 토큰 프록시 컨텍스트를 기준으로 만든 프롬프트를 무료 JLLM 세션에 그대로 붙여 넣는 것은 "이 프리셋이 망가졌다"는 보고가 나오는 조용한 원인 중 하나입니다. Advanced Prompting 101에서 인용되는 핵심 수치는 JLLM의 실제 작업 컨텍스트가 대략 8,000–9,000토큰이라는 점입니다. 이 공간을 페르소나, 캐릭터 정의, 메모리, 시나리오, 프롬프트, 전체 대화가 나눠 씁니다.
| 환경 | 작업 컨텍스트 (프록시 설정 관련 자료 기준) | 권장 프롬프트 크기 |
|---|---|---|
| JLLM (내장, 무료) | ~8k–9k tokens | 짧은 규칙 3–5개; 긴 프리셋은 스토리가 들어갈 자리를 줄임 |
| DeepSeek via proxy | commonly configured at 16k–32k | 규칙과 예시 대화 2–3개 |
| GLM via proxy | DeepSeek와 유사 | 동일하게 적용하되, 전환 후 서식 규칙은 다시 테스트 |
예산을 잡을 때 유용한 대략적인 기준은 1,000토큰당 750단어입니다. 프롬프트가 6개 중 5번째에 놓인다고 설명하는 같은 문제 해결 자료는 페르소나와 카드, 메모리, 프롬프트를 합친 영구 콘텐츠 전체를 2,000토큰으로 제한합니다. 커뮤니티 챗봇 가이드는 기준을 더 낮게 잡아, 고급 프롬프트가 수백 토큰을 넘으면 보완하려던 캐릭터 정의를 밀어내기 시작한다고 경고합니다.
JLLM과 외부 모델은 같은 봇을 서로 다른 방향으로 끌고 갈 수 있습니다. 따라서 경로를 바꿀 때는 먼저 프록시 설정의 문제로 보고, 프롬프트가 그대로 통할 것이라 가정하지 말고 프롬프트를 다시 테스트하세요.
<JAILBREAK=ON>이나 <AUTOPLOT=ON> 같은 꺾쇠 명령어도 Janitor AI 설정인 것처럼 유통됩니다. 이런 명령어를 소개하는 목록을 보면 특정 프록시에서 사용하는 명령어라고 설명하며, 로어북 코드나 요청별 모델 전환처럼 프록시에만 있는 기능과 함께 다룹니다. Janitor AI의 공식 문서에는 이 명령어가 정의되어 있지 않습니다. 해당 파서를 지원하지 않는 경로에서는 이를 해석할 방법이 없으므로, 프롬프트 안에서 그냥 일반 텍스트로 공간만 차지합니다.
커스텀 프롬프트를 정말 계속 써야 할까
여기에는 분명한 의견 차이가 있지만, 초보자와 숙련자의 차이로만 나뉘지는 않습니다. Janitor AI의 헤드 모더레이터는 2023년에 커스텀 프롬프트가 "봇의 행동 방식에 큰 영향을 줄 수 있다"고 썼고, 프롬프트 없이 두면 성능이 "향상될 수도 있다"고 설명했습니다. 다만 결론은 시행착오를 거쳐야 한다는 쪽으로 조정했습니다. AP를 삭제하라는 취지의 스레드는 지금도 반복해서 올라옵니다. 댓글 반응도 갈립니다. 입력란을 비운 뒤 JLLM 출력이 더 깔끔해졌다는 사람도 있고, 더 긴 블록으로 바꾼 뒤 품질이 크게 좋아졌다는 사람도 있습니다.
두 결과 모두 전송 순서로 설명할 수 있습니다. 프롬프트는 막연한 카드에 구조를 더해주지만, 좋은 카드와 같은 내용을 반복하면서 예시, 메모리, 최근 대화와 컨텍스트를 놓고 경쟁하기도 합니다.
따라서 질문은 "내 프롬프트가 좋은가"가 아니라 "이 봇에 프롬프트가 필요한가"여야 합니다. 처음 6턴을 동일하게 두 번 실행하세요. 한 번은 입력란을 비워두고, 다른 한 번은 블록 하나만 넣은 뒤 다음 네 가지를 기준으로 평가합니다.
- 내 캐릭터의 대사나 행동을 봇이 대신 썼는가?
- 6번의 답변 내내 목소리가 유지됐는가?
- 장면이 진행됐는가, 아니면 멈추고 반복됐는가?
- 장면 중간에 수정한 내용을 받아들였는가?
결론을 내리기 전에 블록을 두 라운드 동안 테스트하세요. 두 번째 라운드에서도 차이가 없다면 문제는 문구가 아닙니다. 카드, 첫 메시지 또는 모델 경로가 원인일 가능성이 큽니다. 규칙 문단을 하나 더 추가해봤자 스토리가 사용할 컨텍스트만 줄어듭니다.
Janitor AI 프롬프트 FAQ
Janitor AI 프롬프트는 어디에 붙여 넣나요?
채팅의 API 또는 생성 설정을 열고, JLLM 경로라면 Advanced Prompt 필드를 찾으세요. 프록시에 연결했다면 Custom Prompt 필드를 사용하면 됩니다.
Advanced Prompt와 Custom Prompt의 차이는 무엇인가요?
커뮤니티에서는 Advanced Prompt를 JanitorLLM용 필드로, Custom Prompt를 외부 API와 프록시에서 사용하는 대응 필드로 구분합니다. 둘 다 전반적인 답변 방식을 전달하지만, 조립된 요청에서 들어가는 위치가 다를 수 있으므로 경로를 바꾸면 블록을 다시 테스트해야 합니다.
Janitor AI 프롬프트가 한동안 작동하다가 멈춘 이유는 무엇인가요?
프롬프트 블록 뒤에 대화 기록이 붙기 때문에 메시지가 늘어날수록 규칙이 입력의 끝에서 멀어집니다. 프롬프트를 줄이고, 절대 잃고 싶지 않은 규칙은 Chat Memory로 옮기세요. 한 번의 답변만 수정할 때는 인라인 OOC 문장을 사용하면 됩니다.
커스텀 프롬프트 안에서도 {{char}}와 {{user}}가 작동하나요?
네. 캐릭터와 사용자 페르소나를 가리키는 표준 매크로이며, 관찰된 프록시 경로 템플릿에서도 같은 플레이스홀더를 치환합니다. 다만 봇 제작자들은 테스트에서 변수를 하나라도 줄이기 위해 페르소나에 {{user}} = Name을 직접 적어두기도 합니다.
Janitor AI 프롬프트는 얼마나 길어야 하나요?
JLLM에서는 3~5개 규칙, 16k–32k 프록시 컨텍스트에서는 그보다 조금 더 길게 쓸 수 있습니다. 영구 콘텐츠 전체는 합쳐서 2,000토큰 미만으로 유지하세요. 끝까지 도착하는 규칙 5개가 잘려 나가는 규칙 25개보다 낫습니다.
이 모든 문제의 바탕에 있는 절충은 아직 해결되지 않았습니다. 80턴까지 영향력을 유지할 만큼 짧은 프롬프트는 원하는 내용을 전부 지정하기에 부족하고, JLLM과 주요 프록시 모델을 대상으로 그 경계가 어디인지 보여주는 공개 통제 비교 자료도 찾을 수 없었습니다. 그런 자료가 나오기 전까지 가장 방어적인 기본값은 작은 블록 하나, 잘 작동했던 버전의 백업, 그리고 잘 만들어진 봇에 프롬프트가 필요하지 않을 때는 입력란을 비울 수 있는 유연성입니다.
함께 읽기
- Janitor AI 페르소나 템플릿은 같은 컨텍스트 스택에서
{{user}}가 맡는 부분을 다룹니다 - 롤플레이에 가장 적합한 AI 모델은 프롬프트가 버텨야 할 모델을 고르는 방법을 다룹니다