명확한 지시와 구조화 (Structuring)¶
LLM에 똑같은 질문을 넣어도 지시를 어떻게 주느냐에 따라 결과 품질이 크게 달라집니다. "요약해줘"라고 하면 두 줄짜리 요약이 나오지만, 기준과 형식을 명확히 하면 전혀 다르죠. 구조화(structuring) 는 그 지시를 명확하게 하고, 역할을 주고, 출력 형식을 정하는 일입니다. 이 페이지는 소스 문서 Anthropic Prompt Engineering 을 바탕으로, 명확한 프롬프트 설계 원칙을 설명합니다.
개요¶
프롬프트가 모호하면 모델이 자기 식대로 해석해서 예측 불가능한 결과를 냅니다. 반대로 "누가, 무엇을, 어떤 기준으로, 어떤 형식으로"가 분명하면 결과가 반복적으로 재현됩니다. 제품에서 매 호출 같은 품질을 내야 한다면, 이 명확성은 부가가 아니라 기본 조건이에요. 구체적으로는 지시를 명확히 하고, 역할을 부여하고, 출력 형식을 고정하는 세 가지로 나뉩니다.
핵심 개념¶
명확한 지시 (Clarity)¶
프롬프트는 명확하고 구체적일수록 좋습니다. "좋은 글을 써줘" 같은 모호한 표현 대신, 대상 독자·길이·어조·피해야 할 것까지 명시하면 모델이 정확히 따라요. 필요한 정보를 모두 주고, 추측하게 하지 않는 것이 핵심이에요. 이때 종종 XML 태그(<documents>, <document>)로 내용을 구획해 구조를 분명히 하기도 합니다.
역할 부여 (Role Prompting)¶
"너는 ~다"라고 역할을 정해주면 모델의 행동이 그 틀 안에서 결정됩니다. 예를 들어 "너는 다이어그램 설계자야"라고 하면 그 역할에 맞게 응답을 만들고, "안내문을 제외한 구어체는 사용하지 마" 같은 규칙을 그 역할에 붙일 수 있어요. 대화 시작 시 시스템 프롬프트로 한 번 설정하면 매 질문마다 반복하지 않아도 됩니다.
출력 형식 고정 (Output Format Control)¶
결과를 어떤 구조로 받을지 명시합니다. JSON, 마크다운, 특정 목록, 보고서 형식 등이 그것이에요. 예를 들어 "전체 문단과 완전한 문장으로 써"라고 하면 불필요한 마크다운·불릿 사용을 줄일 수 있습니다. 다만 정해진 스키마가 꼭 필요한 부분은 프롬프트만으로는 부족할 수 있고, 구조화 출력이나 도구 호출 스키마로 대체하는 게 더 확실합니다.
구조화된 프롬프트 설계¶
긴 프롬프트에서는 내용에 자연스러운 계층이 있으면 태그를 중첩해 구획합니다. 문서가 여러 개면 <documents> 안에 <document index="n">로 묶어주는 식이에요. 일관된 태그 이름을 유지하면 모델이 프롬프트 구조를 더 잘 파악합니다. 단, 프롬프트는 모델이 바뀌면 결과도 바뀌므로 "이 프롬프트는 항상 이렇게 동작한다"고 단정하지 않아요. 모델을 교체할 때는 결과를 함께 검증합니다.
실제 적용 (데이터스케쳐스)¶
- 웹빌더 콘텐츠 — 시스템 프롬프트로 "회사 톤, 섹션 구조"를 고정하고, 사용자 요청만 바꿔 반복해서 씁니다.
- 이벤트 NLG 리포트 — 경기 데이터를 문장으로 바꿀 때, 사실은 그대로 두고 서술 흐름만 살리도록 출력 형식을 명시합니다.
- 캔버스 다이어그램 — 설명을 구조로 바꿀 때 어떤 요소를 어떤 관계로 배치할지 기준을 프롬프트에 담습니다.
- 구조화 출력 전환 — 단정적인 스키마가 필요한 부분은 프롬프트 지시 대신 도구 호출이나 구조화 출력으로 넘겨 정확도를 높입니다.