2025.05.29 - [MS Azure, AI] - [프롬프트 엔지니어링] 1편: 프롬프트 엔지니어링 개요와 생성형 AI 작동 원리
2025.05.30 - [MS Azure, AI] - [프롬프트 엔지니어링] 2편: 좋은 프롬프트의 구조와 설계 원칙
2025.05.31 - [MS Azure, AI] - [프롬프트 엔지니어링] 3편: 역할 부여로 GPT의 응답 제어하기
2025.05.31 - [MS Azure, AI] - [프롬프트 엔지니어링] 4편: Few-shot 프롬프팅 개념과 활용 예시
원하는 형태로 정보를 얻으면 활용도가 높아집니다. 이번 편에서는 프롬프트를 통해 GPT의 **출력 형식(format)**을 제어하는 방법을 알아봅니다. 예를 들어 표 형태, 번호 목록, JSON 데이터 등으로 답을 정리하게 하여, 더 체계적이고 기계 처리하기 쉬운 결과를 얻어보겠습니다. 프롬프트에 약간의 요구사항만 추가하면, GPT가 마치 보고서나 코드처럼 정돈된 출력을 내어줄 수 있습니다.
핵심 개념 설명
출력 형식 제어란: 모델이 생성하는 응답의 레이아웃이나 문법 구조를 사전에 지정하는 것을 의미합니다. 일반적인 산문 형태 응답 대신, 특정한 포맷(format)을 요구하면 모델은 가능하면 그 지시에 따르려 합니다. 몇 가지 예를 들면 다음과 같습니다.
- 리스트 형식: 프롬프트에 “- 항목으로 나열해줘” 또는 “1. 2. 3. ... 형태로 답변해” 라고 하면, 모델은 답을 **목록(list)**으로 구조화합니다. 이로써 장황한 단락 대신 한눈에 보기 쉬운 요점을 얻을 수 있습니다.
- 표 형식: “표로 만들어줘”라는 요청은 Markdown 표나 텍스트 표 형태로 응답하도록 유도합니다. 열과 행을 구성하여 데이터를 구조적으로 보여주므로 비교나 정리가 용이합니다.
- JSON이나 XML 등 구조화된 데이터: 개발 용도로 JSON 형식으로 답해달라고 하면, 모델은 {"key": "value"}같은 형식으로 답을 내놓기도 합니다. 이러한 출력은 프로그램으로 후처리하거나 다른 시스템과 연계하기에 편리합니다.
프롬프트 설계 요령: 원하는 형식을 이끌어내려면 프롬프트에 구체적인 형식 지시를 포함하세요. 예를 들어 “응답을 JSON 객체로 보여줘. 필드는 name과 age로”라고 하면 모델은 해당 키를 가진 JSON을 출력하려 노력합니다. 또한 예시 제시도 도움이 됩니다. 짧게라도 원하는 출력의 예를 프롬프트에 포함하면 모델이 그걸 본떠서 답합니다. 다만 너무 복잡한 형식은 LLM이 정확히 따르기 어려울 수 있으니, 간결한 구조를 요구하는 것이 좋습니다.
모델의 한계: 모델이 완벽하게 형식을 지킬 거라고 과신해선 안 됩니다. 종종 작은 문법 오류나 포맷 틀어짐이 발생할 수 있습니다. 예를 들어 JSON 출력 시 작은 따옴표를 쓴다든지, 리스트 번호가 어긋나는 등입니다. 따라서 중요한 용도의 형식 데이터는 응답 후 **포맷 검증(Validation)**을 해주는 것이 안전합니다. 필요하면 추가 프롬프트를 통해 “형식을 제대로 지켜”라고 재요청할 수도 있습니다.
실습 예제
- 목록 형식 출력: 질문을 목록 형태로 답하도록 유도해보겠습니다.
프롬프트: 여행 준비물 체크리스트를 알려줘.
모델 응답:# 예시 - 여권 및 신분증
- 항공권과 호텔 바우처 (또는 예약 확인서)
- 현금 및 신용카드
- 여행자 보험 증서
- 휴대폰 충전기 및 보조 배터리 - 표 형식 출력: 두 개의 대상을 비교하는 답변을 표로 만들게 해봅시다.
프롬프트: 지구와 화성의 주요 특징을 비교해서 표로 알려줘. (행: 특징 항목, 열: 지구와 화성)
모델 응답:# 예시 | 특징 | 지구 | 화성 |
|-----------|------------------------|-------------------------|
| 지름 | 약 12,742 km | 약 6,779 km |
| 위성 개수 | 1 (달) | 2 (포보스, 데이모스) |
| 대기 구성 | 질소 78%, 산소 21% 등 | 이산화탄소 95%, 질소 3% 등 |
| 평균 온도 | 15°C | -63°C | - JSON 형식 출력: 이번에는 모델에게 결과를 JSON으로 달라고 요청해보겠습니다.
프롬프트: {"요청": "대한민국 국가 정보", "항목": ["수도", "인구", "공용어"]}에 대한 답을 JSON으로 만들어줘.
(자연어로 설명하자면: “대한민국의 수도, 인구, 공용어 정보를 JSON 객체로 출력해주세요.”)
모델 응답:# 예시 {
"국가": "대한민국",
"수도": "서울",
"인구": "약 5178만명",
"공용어": "한국어"
}
자주 하는 실수 및 주의점
- 형식 지시 누락: 출력 형식을 얻고 싶다면 꼭 프롬프트에 형식에 대한 요구를 넣어야 합니다. 이를테면 “표로 달라”는 말 없이 막연히 비교해달라고 하면 텍스트로 풀어 쓸 수 있으니 주의하세요.
- 너무 복잡한 포맷 요구: 모델은 복잡한 표나 JSON 스키마를 완벽히 이해하지 못할 수 있습니다. 단순한 구조부터 시작하고, 필요한 경우 점진적으로 요구사항을 추가하는 것이 좋습니다.
- 포맷 오류 발생: 모델이 만든 표나 JSON에 가끔 형식 오류가 있을 수 있습니다(예: 표의 셀 개수 불일치, JSON 따옴표 누락 등). 가능하면 모델 응답을 검증하고, 오류가 있으면 재요청하거나 수동 수정합니다.
- 응답 길이 제한 유의: 표나 JSON은 경우에 따라 텍스트 량이 많아질 수 있습니다. 모델의 최대 토큰 제한을 초과할 정도의 방대한 표는 출력이 잘리거나 생략될 수 있습니다. 너무 큰 표를 요구하면 안 되고, 필요한 경우 항목을 나눠서 요청하세요.
요약 및 다음 편 안내
- 프롬프트에 출력 형식 지침을 포함함으로써, GPT의 응답을 목록, 표, 코드블록, JSON 등 원하는 형태로 얻을 수 있습니다.
- “~로 답변해줘” 한 마디면 모델은 가급적 그 지시에 따르려 하므로, 간단한 요구로도 응답 구조를 제어할 수 있습니다.
- 표나 JSON 등 구조화된 출력은 정보를 보기 좋게 하거나 프로그램 처리에 활용하기 좋지만, 모델이 항상 완벽하게 형식을 맞추는 것은 아니므로 검증과 후속 조치를 병행하세요.
- 다양한 형식 지정을 통해 챗GPT를 단순한 대화상대뿐 아니라 간이 보고서 생성기, 데이터 포맷터 등으로 활용할 수 있습니다.
다음 편에서는 모델의 감정, 어조, 문체 등을 바꾸는 방법을 배웁니다. 프롬프트로 톤(tone)과 스타일을 제어하여, 답변을 딱딱하게도 또는 감성적이게도 만들어보겠습니다.
2025.05.29 - [MS Azure, AI] - [프롬프트 엔지니어링] 1편: 프롬프트 엔지니어링 개요와 생성형 AI 작동 원리
2025.05.30 - [MS Azure, AI] - [프롬프트 엔지니어링] 2편: 좋은 프롬프트의 구조와 설계 원칙
2025.05.31 - [MS Azure, AI] - [프롬프트 엔지니어링] 3편: 역할 부여로 GPT의 응답 제어하기
2025.05.31 - [MS Azure, AI] - [프롬프트 엔지니어링] 4편: Few-shot 프롬프팅 개념과 활용 예시
'IT공부방' 카테고리의 다른 글
[프롬프트 엔지니어링] 7편: 실패하는 프롬프트의 특징과 개선 (0) | 2025.06.03 |
---|---|
[프롬프트 엔지니어링] 6편: 감정, 톤, 문체 바꾸기 (0) | 2025.06.01 |
[프롬프트 엔지니어링] 4편: Few-shot 프롬프팅 개념과 활용 예시 (2) | 2025.05.31 |
[프롬프트 엔지니어링] 3편: 역할 부여로 GPT의 응답 제어하기 (1) | 2025.05.31 |
[프롬프트 엔지니어링] 2편: 좋은 프롬프트의 구조와 설계 원칙 (1) | 2025.05.30 |