AI는 왜 같은 질문에 매번 다른 답을 할까?
[AI] AI는 왜 같은 질문에 매번 다른 답을 할까?
프롬프트 엔지니어링: AI로부터 원하는 결과를 얻는 기술
LLM은 지능적인 프로그램이라기보다 확률적 언어 생성기다. 프롬프트를 프로그램 설계하듯 구조적으로 작성해야 한다.
AI를 사용하면서 “왜 내가 원하는 답이 안 나오지?”라고 느낀 적 있는가? 그 이유는 대부분 프롬프트 설계 문제다.
프롬프트 엔지니어링(Prompt Engineering)은 AI 모델로부터 원하는 결과를 얻기 위해 입력 프롬프트를 구조적으로 설계하고 최적화하는 기법이다. 대형 언어 모델(LLM)은 입력된 텍스트를 기반으로 다음 토큰(token)을 확률적으로 예측하며 문장을 생성하기 때문에, 프롬프트의 구조와 정보량에 따라 결과 품질이 크게 달라진다.
- 토큰(Token) 은 LLM이 텍스트를 처리하는 최소 단위
우리가 생각하는 “단어” 단위가 아니라, 모델이 내부적으로 텍스트를 쪼개는 방식입니다.
영어 예시
"Hello, world!" → ["Hello", ",", " world", "!"] — 4개 토큰
한국어 예시
한국어는 영어보다 토큰 효율이 낮습니다.
"안녕하세요" → ["안녕", "하세요"] 또는 더 잘게 쪼개지기도 합니다.
프롬프트 설계의 핵심 3가지
1. 구체성 / 명확성 (Specificity & Clarity)
LLM은 다음에 올 단어의 확률 분포를 계산하여 문장을 생성한다. 프롬프트가 모호하면 모델이 고려해야 할 가능한 답변의 확률 공간이 넓어지고, 원하는 결과가 나올 확률이 낮아진다.
❌ "Spring 설명해줘"
✅ "Spring Framework에서 IoC와 DI 개념을 Java 코드 예시와 함께 설명해줘."
구체적일수록 원하는 결과에 대한 확률을 높일 수 있다.
2. 데이터 활용 & In-Context Learning (문맥 이해)
LLM은 새로 학습하는 것이 아니라 입력된 문맥(context)을 기반으로 추론한다. 이를 In-Context Learning이라고 한다. 프롬프트에 데이터, 예시, 규칙을 넣으면 모델은 이를 즉석에서 학습한 것처럼 행동한다.
다음 예시처럼 답변해줘.
Q: Java의 JVM이란?
A: JVM(Java Virtual Machine)은 ...
Q: Python 인터프리터란?
모델은 패턴을 파악해 그에 맞는 답변을 생성한다. 이것이 Few-Shot Prompting의 기본 원리다.
3. 문제를 알고리즘화 (Step-by-Step Reasoning)
복잡한 지시를 한 번에 주면 모델이 어떤 순서로 사고해야 하는지 명확하지 않다. 문제를 단계적으로 나누는 것이 중요하다.
❌ "이 사업 아이디어 분석하고 시장성, 기술성, 리스크, 사업 전략까지 다 분석해줘"
✅ 다음 순서로 분석해줘:
1. 문제 정의
2. 시장 규모
3. 경쟁 서비스
4. 기술 구현 가능성
5. 리스크
6. 결론
실무에서 자주 쓰이는 기법들
Role Prompting — 모델에게 역할을 부여한다.
너는 10년차 백엔드 아키텍트다. Spring WebFlux 구조를 설명해줘.
Output Format 지정 — 원하는 출력 형식을 명시한다.
다음 JSON 형식으로 답변해줘: { "요약": "", "장점": [], "단점": [] }
Few-Shot Prompting — 예시를 몇 개 제공해 패턴을 학습시킨다.
상품 리뷰를 분석해서 아래 형식으로 요약해줘.
예시:
리뷰: "화질은 좋은데 배터리가 너무 빨리 닳아요"
요약: { "장점": "화질", "단점": "배터리 수명" }
리뷰: "디자인이 예쁘고 가볍지만 가격이 좀 비싸요"
요약: { "장점": "디자인, 무게", "단점": "가격" }
다음 문장의 감정을 긍정/부정/중립으로 분류해줘.
예시:
문장: "오늘 날씨가 너무 좋다" → 긍정
문장: "배송이 3일이나 늦었다" → 부정
문장: "택배가 도착했다" → 중립
문장: "신제품인데 생각보다 별로네"
예시가 0개면 Zero-Shot, 1개면 One-Shot, 2~5개면 Few-Shot이라고 부릅니다. 예시가 많을수록 모델이 패턴을 더 정확히 따라가지만, 너무 많으면 토큰을 낭비하게 되어서 보통 2~3개가 실용적인 스위트스팟입니다.
한 단계 더: CoT와 ReAct
CoT (Chain-of-Thought)
최신 LLM은 내부적으로 CoT(Chain-of-Thought) reasoning을 수행한다. AI가 복잡한 문제를 해결할 때 중간 추론 과정을 단계적으로 생성하며 문제를 해결하는 방식이다.
수학 문제를 예로 들면:
문제 → 중간 계산 과정 → 최종 답
이런 추론 체인(chain)이 형성되면서 각 단계의 결과가 다음 단계의 입력으로 사용된다. CoT는 특히 복잡한 reasoning task에서 모델의 정확도를 크게 향상시킨다.
여전히 복잡한 작업에서는 구조화된 프롬프트가 효과적이다.
ReAct (Reason + Act)
ReAct는 CoT + Action이 합쳐진 개념이다. AI가 추론(Reasoning)과 행동(Action)을 번갈아 수행하면서 문제를 해결한다.
단순히 답을 생성하는 것이 아니라:
- 상황을 추론하고
- 필요한 행동(도구 사용)을 하고
- 결과를 보고 다시 추론하는
반복 루프 구조를 만든다.
실제 예시 — “현재 한국 대통령의 나이는?”
Thought: 한국 대통령이 누구인지 알아야 한다
Action: Search("한국 대통령")
Observation: 윤석열
Thought: 윤석열의 생년월일을 찾아야 한다
Action: Search("윤석열 생년월일")
Observation: 1960년 12월 18일
Thought: 현재 나이를 계산한다
Action: Calculator(2026 - 1960)
Observation: 66
Answer: 66세
핵심은 모델이 생각만 하는 것이 아니라 실제 행동을 한다는 것이다. 현재는 LangChain 같은 프레임워크 또는 아키텍처 수준에서 이 패턴이 활용된다.
정리
프롬프트 엔지니어링의 핵심은 결국 세 가지다.
- 명확한 지시
구체적인 프롬프트로 확률 공간을 좁힌다
- 문맥 제공
예시와 데이터를 넣어 In-Context Learning을 활용한다
- 단계적 문제 해결
복잡한 문제는 순서를 나눠서 지시한다
LLM을 잘 활용한다는 것은 결국 모델이 원하는 방향으로 추론하도록 환경을 설계하는 것이다.
다음에는 Tree-of-Thought (ToT), Context Engineering 에 관한 내용으로 찾아뵙도록 하겠습니다.
감사합니다.
참고: Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
메타데이터
- post_id
- f4374ce07e30
- slug
- ai는-왜-같은-질문에-매번-다른-답을-할까-f4374ce07e30
- url
- https://medium.com/@zero86/ai%EB%8A%94-%EC%99%9C-%EA%B0%99%EC%9D%80-%EC%A7%88%EB%AC%B8%EC%97%90-%EB%A7%A4%EB%B2%88-%EB%8B%A4%EB%A5%B8-%EB%8B%B5%EC%9D%84-%ED%95%A0%EA%B9%8C-f4374ce07e30
- canonical_url
- https://medium.com/@zero86/ai%EB%8A%94-%EC%99%9C-%EA%B0%99%EC%9D%80-%EC%A7%88%EB%AC%B8%EC%97%90-%EB%A7%A4%EB%B2%88-%EB%8B%A4%EB%A5%B8-%EB%8B%B5%EC%9D%84-%ED%95%A0%EA%B9%8C-f4374ce07e30
- author_url
- https://medium.com/@zero86
- status
- ok
- fetched_at
- 2026-06-10 18:44:10