728x90
반응형

 

환경 : OpenAI / Claude 등 LLM API 공통

목표 : 같은 모델에서 답 품질을 끌어올리는 실전 프롬프트 패턴 (AI 입문 시리즈 2/4)






1. 역할 부여

프롬프트 맨 앞에 "너는 누구다"를 박아주면 답의 톤과 깊이가 달라짐. 같은 질문도 부여한 역할에 따라 전혀 다른 수준으로 나옴.

 

// 모호한 프롬프트
이 코드 리뷰해줘

// 역할 + 기준 부여
너는 10년차 백엔드 개발자다.
아래 Kotlin 코드를 보안과 성능 관점에서만 리뷰.
지적마다 수정 코드도 함께 제시.

 

역할이 먹히는 이유는 모델의 답이 모이는 방향이 바뀌기 때문임. 막연한 질문엔 학습 데이터의 평균치로 두루뭉술하게 답하다가, 역할이 주어지면 그 분야 전문가가 쓸 법한 어휘와 판단 기준 쪽으로 답의 분포가 좁혀짐. 즉 역할은 없던 지식을 더해주는 게 아니라, 이미 가진 지식 중 어디를 꺼낼지 방향을 잡아주는 장치임.

 

그래서 한계도 분명함. 역할을 줘도 모르는 사실을 지어내는 환각은 그대로 남음 — 역할은 관점과 깊이를 바꿀 뿐 정확성까지 보장하진 않음. 한편 역할은 system 메시지에 넣으면 대화 내내 유지되므로, 매 질문마다 반복할 필요가 없음.






2. 구체적으로 지시

모호한 단어를 빼고 측정 가능한 조건으로 바꿈. "잘", "간단히", "적당히" 같은 말은 모델이 제멋대로 해석함.

 

모호한 단어를 모델은 학습 분포의 평균값으로 해석함. "간단히"가 사람마다 다르듯 모델도 매번 다른 길이로 잡음. 길이·대상·형식을 숫자로 못 박으면 해석의 폭이 좁아져 결과가 일정해짐.

 

// 모호함 — 길이도 형식도 안 정해짐
요약해줘

// 구체적 — 길이, 대상, 제약을 명시
아래 글을 3문장으로 요약.
비전공자도 이해할 수 있게, 전문 용어는 쉽게 풀어서.

 

제약을 거는 게 핵심인데, "하지 마라"보다 "이렇게 해라"가 더 잘 먹힘. 부정 지시는 무엇을 하지 말지만 알려줄 뿐 그럼 뭘 해야 하는지는 안 알려줘서, 모델이 그 빈칸을 또 제멋대로 채우기 때문.

 

// 약함
너무 길게 쓰지 마

// 강함
각 항목은 한 문장, 최대 5개 항목으로 작성






3. 출력 형식 고정

응답을 코드로 받아 처리할 거면 형식을 못 박아야 함. 형식을 안 정하면 매번 다른 모양으로 와서 파싱이 깨짐.

 

// 형식 지정 없음 → 줄글로 옴, 파싱 불가

// 형식 고정 → 항상 같은 구조
아래 리뷰를 분석.
다음 JSON 형식으로만 답하고 다른 말은 붙이지 마라.
{"sentiment": "긍정|부정|중립", "score": 1~5, "keywords": []}

 

※ "다른 말은 붙이지 마라"가 중요함. 안 그러면 앞에 "네, 분석해드리겠습니다" 같은 군더더기가 붙어서 JSON 파싱이 깨짐.

 

형식을 더 확실히 지키게 하려면 프롬프트로만 부탁하지 말고 두 가지를 같이 씀. 1편에서 다룬 temperature를 낮춰 무작위성을 줄이고, 모델이 지원하면 JSON 모드나 structured output(스키마 강제) 기능을 켜는 것. 프롬프트 문장 하나로 형식을 비는 것보다 훨씬 안정적임.






4. 예시 제공 (Few-shot)

설명보다 예시 한두 개가 훨씬 강력함. 원하는 입출력 쌍을 보여주면 모델이 그 패턴을 그대로 따라함.

 

// 입력 → 출력 예시를 먼저 보여줌 (Few-shot)
다음 형식으로 회사명을 정규화해라.

입력: "삼성전자(주)" → 출력: 삼성전자
입력: "(주)카카오" → 출력: 카카오
입력: "네이버 주식회사" → 출력: ?

 

예시가 0개면 zero-shot, 1개 이상이면 few-shot임. 모델은 예시의 입력→출력 쌍에서 형식과 규칙을 거꾸로 추론해 흉내 내므로, 예시의 형태가 일관될수록 정확도가 올라감. 분류·포맷 변환·추출처럼 정답 모양이 정해진 작업에서 특히 효과가 큼.

 

다만 예시 나열만으로 안 되는 영역이 있음. 여러 단계를 거쳐야 하는 추론·계산 문제는 예시를 줘도 자주 틀리는데, 이때 필요한 게 다음 패턴인 단계적 사고 유도임.






5. 단계적 사고 유도

복잡한 추론은 "바로 답하지 말고 단계적으로 생각하라"를 넣으면 정답률이 올라감. 모델이 중간 과정을 거치며 실수를 줄이기 때문.

 

// 바로 답 요구 → 계산 실수 잦음
이 주문들 총 할인액은?

// 단계 유도 → 과정을 거쳐 정확해짐
각 주문의 할인액을 하나씩 계산한 뒤, 마지막에 합계를 내라.

 

효과의 이유는 단순함. 답을 한 번에 뱉으면 중간 계산을 건너뛰다 틀리는데, 과정을 글로 쓰게 하면 각 단계가 다음 단계의 근거가 되어 오류가 누적되기 전에 드러남.

 

참고로 o1 같은 추론 특화 모델은 이 과정을 내부적으로 이미 수행하므로, 이 기법은 일반 모델에서 특히 효과적임.

 

또한 입력 데이터와 지시를 섞지 말고 구분자로 분리하면 어디까지가 데이터인지 명확해짐.

 

아래 ``` 안의 텍스트만 번역해라. 지시문은 번역하지 마라.
```
{사용자 입력}
```






모델을 바꾸기 전에 프롬프트부터 손보는 게 먼저. 같은 모델에서도 위 5가지로 체감 품질이 크게 달라짐.

 

728x90
반응형

+ Recent posts