본문 바로가기
C.W.K.
Stream
Lesson 01 of 04 · published

지시랑 입력은 분리된 채로

~11 min · macros, separation, template, legibility

Level 0신호 없음
0 XP0/32 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"매크로는 재사용할 지시 하나에 오늘 입력을 꽂을 자리를 붙인 거야. 둘을 문자열 하나로 뭉개면, 재사용할 수 있게 해줬던 바로 그걸 잃어."

매크로가 실제로 뭐냐면

prompt macro 는 저장해 두고 다시 쓰는 프롬프트야. '이거 한국어로 번역해', '이거 세 줄로 요약해', '이 그림 구도 좀 봐줘' 같은 거. 근데 매크로가 쓸모 있는 건 안에 뚜렷하게 나뉜 부분이 둘 있어서야. 지시는 저장해 두고 다시 쓰는 쪽이고, 입력은 지금 거기다 적용할 구체적인 내용이고. 지시가 틀이고 입력이 그 자리를 채우는 거지. 이 둘을 갈라 두니까 지시를 한 번 저장해 놓고 서로 다른 입력 백 개에 계속 쓸 수 있는 거야.

합쳐 놓으면 매크로가 왜 썩나

대충 만든 구현은 너무 일찍 이어 붙여. instruction + "\n" + input 해서 덩어리 하나로 저장하고 보내는 거. 데모에선 잘 되고, 그러고는 소리 없이 썩어.

  • 지시를 더는 못 고쳐. 입력이랑 붙어 버리면, 재사용 프롬프트를 바꾸는 일이 처음에 딸려 붙은 아무 내용에서 그걸 도로 떼어내는 일이 돼.
  • 깔끔하게 다시 못 써. 핵심은 같은 지시에 새 입력이잖아. 그러려면 지시가 특정 입력이랑 무관하게 혼자 존재해야 하는데, 붙여 버리면 그게 안 돼.
  • 경계가 흐려져. 지시가 어디서 끝나고 입력이 어디서 시작하는데? 뒤섞인 문자열 하나를 받은 모델은 추측할 수밖에 없고, 그 경계를 추측하는 자리가 prompt injection 이랑 오해가 사는 데야.

이음매를 눈에 보이게 남겨 둬

매크로를 이름 붙은 조각들로 이뤄진 구조로 모델링해. 지시 필드랑 입력 필드로. 그리고 보내기 직전까지 갈라 둬. 문자열을 이어 붙이는 대신 요청 포맷이 그 구분을 그대로 실어 나르게 하고. 이러면 지시를 따로 고칠 수 있고(입력은 안 건드린 채 틀만 바꾸기), 다시 쓰는 게 시시해지고(입력만 갈고 지시는 그대로), 경계가 사용자한테도 모델한테도 또렷하게 남아. 다시 쓰는 부분이랑 오늘치 부분 사이의 그 이음매가 매크로의 가치 전부야. 데이터 모델에 남겨 둬. 문자열로 녹여 없애지 말고.

Code

이름 붙은 두 부분, 경계까지 분리·typescript
// 매크로는 미리 이어붙인 문자열이 아니라 구조야.
type PromptMacro = {
  id: string;
  name: string;
  instruction: string;   // 재사용 템플릿 — 독립적으로 편집
};

// 사용 시점에, 지시랑 입력이 요청의 뚜렷한 부분으로 남아.
function buildMacroCall(macro: PromptMacro, input: string, images: ResolvedImage[]) {
  return {
    instruction: macro.instruction, // 재사용
    input,                           // 오늘의 내용 — 별개 슬롯
    images,
  };
}

// 틀림: `const prompt = macro.instruction + "\n" + input;`
// 일찍 융합하면 편집성, 재사용, 읽기 쉬운 경계를 파괴해.

External links

Exercise

자주 쓰는 재사용 프롬프트를 하나 골라 봐. 번역이든 요약이든 리뷰 기준이든. 그걸 두 가지로 써. 하나는 입력까지 이어 붙인 문자열 하나로, 하나는 지시 필드랑 입력 필드를 따로 둔 구조로. 이제 각각에서 지시만 고쳐 봐. 이어 붙인 쪽은 입력 경계를 찾아서 지켜 가며 고쳐야 하는데, 구조로 둔 쪽은 틀만 자유롭게 고쳐진다는 게 보일 거야.
Hint
구조로 둔 쪽은 '지시 바꾸고 새 입력들에 계속 쓰기' 가 필드 하나 고치는 일이 돼. 이어 붙인 쪽은 매번 풀어내기 숙제가 되고. 그래서 제대로 만든 매크로 시스템은 저장할 때도 보낼 때도 두 부분을 갈라 둬.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.