커뮤니티 입장하기

AI 출력 형식 고정하기: 마크다운, 표, JSON, 글자 수 지시

출력 형식 고정은 AI의 답이 매번 같은 모양으로 나오도록 마크다운과 표, JSON, 글자 수 같은 결과의 틀을 프롬프트에 정해 두는 방법입니다. 하지 말 것보다 할 것을 적고, 프로그램이 읽을 결과라면 프롬프트 대신 구조화된 출력 기능으로 스키마를 강제합니다.

같은 말:AI 출력 형식프롬프트 출력 형식 지정JSON 출력 프롬프트글자 수 제한 프롬프트마크다운 출력 끄기

새로 올라온 개념이에요. 먼저 읽어 보고 퀴즈도 풀어 보세요
Share
목차
  1. 🤔 결과를 옮겨 붙일 때마다 모양을 고치고 있을 때
  2. 🔑 출력 형식 고정의 정의
  3. 🧭 형식을 지시하는 네 가지 방법
  4. 📝 마크다운과 표, 목록을 지정하는 문장
  5. 🔢 글자 수와 분량이 정확히 맞지 않는 이유
  6. 🧩 프로그램이 읽을 JSON은 프롬프트로 부족합니다
  7. 🚫 프리필이 더 이상 답이 아닌 이유
  8. ⚠️ 자주 하는 실수
  9. ❓ 자주 묻는 질문
  10. 📋 3줄 요약
  11. 📚 참고 자료

🤔 결과를 옮겨 붙일 때마다 모양을 고치고 있을 때

요약을 받아 시트에 붙이려는데 어떤 날은 표로 오고 어떤 날은 불릿으로 옵니다. 글자 수를 200자로 맞춰 달라고 했는데 250자가 오고, JSON으로 달라고 했는데 앞에 "다음은 요청하신 결과입니다"라는 문장이 붙어 프로그램이 멈춥니다. 내용은 맞는데 모양이 매번 달라서 사람이 마지막에 손으로 고치는 일이 반복됩니다.

형식은 내용과 별도로 지시해야 하는 요소이고, 사람이 읽을 결과와 프로그램이 읽을 결과에 쓰는 도구가 다릅니다.

🔑 출력 형식 고정의 정의

출력 형식 고정은 AI의 답이 매번 같은 모양으로 나오도록 마크다운과 표, JSON, 글자 수 같은 결과의 틀을 프롬프트에 정해 두는 방법입니다. 프롬프트 구조 설계의 다섯 요소 가운데 마지막 요소인 출력 형식을 따로 떼어 다룹니다.

형식을 정하는 이유는 결과를 어디에 쓸지에 따라 달라집니다. 사람이 읽는다면 읽기 편한 모양이 목표이고, 시트나 프로그램에 넣는다면 매번 똑같은 구조가 목표입니다. 목표가 다르면 도구도 달라집니다.

🧭 형식을 지시하는 네 가지 방법

앤트로픽 공식 문서가 형식을 조종하는 방법으로 꼽는 것은 네 가지입니다.

방법하는 법예
할 것을 적기하지 말 것 대신 할 것을 적음"마크다운을 쓰지 마세요" 대신 "매끄럽게 이어지는 문단으로 써 주세요"
결과 태그 지정결과를 담을 XML 태그를 정해 줌"요약은 <summary> 태그 안에 써 주세요"
서식 맞추기프롬프트의 서식을 원하는 결과의 서식과 맞춤줄글 결과를 원하면 프롬프트에서 마크다운을 뺌
자세한 지시마크다운과 불릿 사용 범위를 문장으로 지정굵은 글씨는 쓰지 않고 목록은 요청받은 때만

첫 번째가 가장 자주 빠뜨리는 방법입니다. 금지만 적으면 그 빈자리를 모델이 다른 것으로 채웁니다. 표를 쓰지 말라고 하면 불릿이 오고, 불릿을 쓰지 말라고 하면 번호 목록이 옵니다. 원하는 모양을 적어야 그 모양이 옵니다.

세 번째는 눈치채기 어려운 방법입니다. 프롬프트를 제목과 불릿으로 잔뜩 꾸며 놓고 줄글 답을 바라면 모델은 프롬프트의 서식을 따라갑니다. 줄글을 원하면 프롬프트도 줄글로 씁니다.

📝 마크다운과 표, 목록을 지정하는 문장

사람이 읽을 결과라면 마크다운 구조를 문장으로 지정합니다. 마크다운은 기호 몇 개로 제목과 목록을 표시하는 방식이고, 챗GPT와 클로드와 제미나이가 답을 꾸밀 때 쓰는 규칙입니다. 문법은 마크다운 뜻과 문법 정리에 있습니다.

결과는 다음 구조로 써 주세요. - 첫 줄: 결론 한 문장. 제목 기호는 붙이지 않습니다. - 그 아래: 근거 세 개를 불릿으로. 불릿 하나는 한 문장입니다. - 마지막: 확인이 필요한 항목이 있으면 "확인 필요:"로 시작하는 한 줄. 굵은 글씨와 이모지는 쓰지 않습니다.

표를 원할 때는 열 이름과 순서까지 적습니다. "표로 정리해 주세요"만 적으면 열이 매번 달라집니다.

아래 열 순서의 마크다운 표 하나로 정리해 주세요. 캠페인 | 노출 | 클릭 | CTR(%) | 전주 대비 비율은 소수점 첫째 자리까지, 전주 대비는 실제 값과 퍼센트를 함께 적습니다. 표 아래에 해석은 세 줄까지만 적습니다.

반대로 마크다운을 줄이고 싶을 때가 있습니다. 앤트로픽 문서는 보고서와 분석처럼 긴 글에서 불릿 남발을 막는 예시 프롬프트를 실어 두었는데, 요지는 완결된 문단으로 쓰고 마크다운은 인라인 코드와 코드 블록과 단순 제목에만 쓰며 굵은 글씨와 기울임을 피하라는 것입니다. 같은 문서는 최신 모델이 이전보다 서식을 덜 쓰는 편이라 이 지시가 필요한 구조까지 눌러 버릴 수 있다고 덧붙이므로, 결과를 보고 넣을지 정합니다.

🔢 글자 수와 분량이 정확히 맞지 않는 이유

"200자 이내"라고 적었는데 250자가 나오는 일은 흔합니다. 모델은 글자가 아니라 토큰이라는 단위로 글을 만드는데, 한국어 한 글자가 토큰 한두 개쯤이라 글자 수를 정확히 세면서 쓰지 못합니다. 지시가 무시되는 것이 아니라 세는 단위가 다른 것입니다.

그래서 분량은 세 가지로 지시합니다.

  • 여유를 둔 상한: 실제로 필요한 것이 200자면 180자로 적습니다
  • 구조 단위: 글자 수보다 문장 수와 문단 수가 더 정확하게 지켜집니다. "세 문장으로"가 "150자로"보다 낫습니다
  • 검증 요청: 프로그램으로 길이를 재서 넘으면 다시 요청하는 방식을 둡니다

API에서는 max_tokens가 출력 길이의 상한을 겁니다. 다만 이 값은 길이를 자를 뿐 문장을 끝맺어 주지 않으므로, 글자 수 지시와 함께 쓰되 분량 지시보다 넉넉하게 둡니다.

🧩 프로그램이 읽을 JSON은 프롬프트로 부족합니다

JSON은 이름과 값을 중괄호와 따옴표로 묶어 프로그램이 읽기 좋게 만든 데이터 형식입니다. 구조는 JSON과 데이터 구조에 있습니다. 결과를 시트나 다른 프로그램에 자동으로 넣으려면 이 형식이 필요한데, 프롬프트로 "JSON으로 답하세요"라고만 하면 세 가지 문제가 남습니다.

앤트로픽 공식 문서가 적은 문제는 구문 오류와 필수 필드 누락, 자료형 불일치입니다. 앞에 설명 문장이 붙거나 따옴표가 빠지면 프로그램이 읽지 못하고 다시 요청해야 합니다.

2026년 9월 28일 기준 확실한 방법은 API의 구조화된 출력(structured outputs) 기능입니다. 요청에 JSON 스키마를 지정하면 모델이 그 스키마에 맞는 답만 내도록 문법 단계에서 강제합니다.

{ "output_config": { "format": { "type": "json_schema", "schema": { "type": "object", "properties": { "category": { "type": "string", "enum": ["환불", "교환", "배송", "기타"] }, "summary": { "type": "string" } }, "required": ["category", "summary"], "additionalProperties": false } } } }

문서가 밝힌 조건을 정리하면 다음과 같습니다.

  • 지원 모델은 클로드 오퍼스 4.5부터 5.5, 소네트 4.5부터 5, 하이쿠 4.5입니다
  • 첫 요청은 스키마를 문법으로 컴파일하느라 지연이 생기고, 컴파일 결과는 24시간 캐시됩니다
  • 시스템 프롬프트가 자동으로 조금 추가되어 입력 토큰이 늘어납니다
  • 최소 글자 수와 최대 글자 수, 숫자 범위 같은 제약은 스키마에서 지원되지 않으므로 그런 조건은 프롬프트에 따로 적습니다

🚫 프리필이 더 이상 답이 아닌 이유

예전에는 답변 앞부분에 여는 중괄호를 미리 채워 넣어 JSON을 강제하는 프리필(prefill)이 널리 쓰였습니다. 앤트로픽 공식 문서는 클로드 4.6 모델부터 마지막 턴의 프리필을 지원하지 않고 요청하면 400 오류를 돌려준다고 밝힙니다. 모델의 지시 이행이 좋아져 대부분의 용도에서 필요 없어졌다는 설명입니다.

문서가 안내하는 대체 방법은 용도별로 다릅니다.

프리필로 하던 일지금 쓰는 방법
JSON과 YAML 형식 강제구조화된 출력 기능. 분류는 enum 필드
"다음은 요약입니다" 같은 서두 없애기시스템 프롬프트에 "서두 없이 바로 답합니다"를 적거나 결과를 XML 태그 안에 담게 함
끊긴 답 이어 쓰기사용자 턴에 끊긴 마지막 문장을 넣고 이어 쓰라고 요청

서두가 가끔 남는다면 후처리에서 지우는 방법도 같은 문서에 있습니다. 완벽하게 막는 것보다 프로그램 쪽에서 한 번 걸러 주는 편이 실무에서는 빠릅니다.

⚠️ 자주 하는 실수

  • 금지문만 적습니다: "표를 쓰지 마세요"의 빈자리를 불릿이 채웁니다. 원하는 모양을 적습니다
  • 프롬프트를 마크다운으로 꾸미고 줄글 답을 바랍니다: 모델은 프롬프트의 서식을 따라갑니다
  • 글자 수를 정확히 지킬 것으로 기대합니다: 토큰 단위라 어긋납니다. 문장 수로 지시하거나 여유를 둡니다
  • 프로그램이 읽을 JSON을 프롬프트 강조만으로 받습니다: 구조화된 출력으로 스키마를 강제합니다
  • 표를 요청하면서 열 이름을 적지 않습니다: 열이 매번 달라져 붙여 넣을 때마다 고치게 됩니다

❓ 자주 묻는 질문

채팅 화면에서도 JSON을 확실히 받을 수 있나요?

채팅 화면에는 구조화된 출력 기능이 없으므로 프롬프트로 요청하는 수밖에 없습니다. 결과를 담을 태그를 지정하고 서두 없이 바로 답하라고 적으면 대부분 되지만 보장은 아닙니다. 프로그램이 읽어야 하는 결과라면 API로 옮기는 편이 확실합니다.

글자 수를 꼭 맞춰야 하는 광고 문구는 어떻게 하나요?

후보를 여러 개 받아 프로그램이나 사람이 길이를 잰 뒤 고르는 방식이 안전합니다. "20자 이내 제목 후보 다섯 개를 내고 각각 몇 자인지 옆에 적어 주세요"처럼 세어서 적게 하면 모델이 스스로 확인하므로 어긋나는 폭이 줄어듭니다.

마크다운을 아예 쓰지 않게 할 수 있나요?

앤트로픽 문서는 "마크다운을 쓰지 마세요"보다 "완결된 문단으로 써 주세요"처럼 할 것을 적으라고 권합니다. 여기에 프롬프트 자체에서 마크다운을 빼면 결과의 마크다운도 줄어듭니다. 최신 모델은 원래 서식을 덜 쓰는 편이라 강하게 막으면 필요한 구조까지 사라질 수 있으니 결과를 보고 조절합니다.

표로 받은 결과를 시트에 어떻게 옮기나요?

마크다운 표는 세로선으로 칸을 나눈 텍스트라 시트에 그대로 붙이면 한 칸에 들어갑니다. 시트에 넣을 결과라면 처음부터 쉼표로 칸을 나눈 CSV 형식으로 요청하거나, API에서 JSON으로 받아 프로그램이 시트에 쓰게 하는 편이 낫습니다.

📋 3줄 요약

  1. 출력 형식 고정은 AI의 답이 매번 같은 모양으로 나오도록 마크다운과 표, JSON, 글자 수 같은 결과의 틀을 프롬프트에 정해 두는 방법이고 사람이 읽을 결과와 프로그램이 읽을 결과에 쓰는 도구가 다릅니다.

  2. 앤트로픽 공식 문서는 하지 말 것 대신 할 것을 적고 결과를 담을 XML 태그를 지정하며 프롬프트의 서식을 원하는 결과의 서식과 맞추라고 권하고, 글자 수는 토큰 단위로 세는 모델 특성상 정확히 맞지 않아 여유를 두고 적습니다.

  3. 프로그램이 읽을 JSON은 2026년 9월 28일 기준 API의 구조화된 출력 기능으로 스키마를 강제하는 것이 확실하고, 답변 앞부분을 미리 채우는 프리필은 클로드 4.6 이후 모델에서 지원되지 않습니다.

📚 참고 자료

2026년 9월 28일 기준으로 공식 문서를 확인했습니다.

Share

제대로 이해했는지 한 문제로 확인해 볼까요?

답을 고르면 바로 풀이가 나와요.

문의 분류 결과를 프로그램이 읽어 시트에 자동으로 넣는 작업입니다. 결과가 가끔 JSON이 아니라 설명 문장으로 나와 프로그램이 멈춥니다. 가장 확실한 해결책은 무엇일까요?