프롬프트 엔지니어링
더 많은 작업
프롬프트 엔지니어링(Prompt Engineering)은 대형 언어 모델 같은 생성형 인공지능에서 원하는 결과를 정확하고 일관되게 얻도록 입력(프롬프트)의 지시·맥락·예시·형식을 설계하고 시험하며 개선하는 기법이다.
대형 언어 모델은 같은 질문이라도 어떻게 묻느냐에 따라 답의 품질이 크게 달라진다. 프롬프트 엔지니어링은 모델의 가중치를 바꾸지 않고 입력만으로 모델의 동작을 이끈다는 점에서, 추가 학습으로 모델 자체를 바꾸는 미세조정과 구별된다. 비용이 적고 바로 적용할 수 있어 생성형 AI 활용의 출발점이 된다.
프롬프트는 단순한 질문 한 줄에서, 역할과 규칙을 정한 시스템 지시, 참고 문서, 예시, 출력 형식 명세를 갖춘 구조화된 입력으로 발전했다. 모델을 여러 단계·도구와 엮어 쓰게 되면서 관심은 프롬프트 한 장에서 모델에 들어가는 맥락 전체(컨텍스트 엔지니어링), 나아가 에이전트가 돌아가는 실행 환경 전체(하네스 엔지니어링)로 넓어지고 있다.
| 요소 | 내용 | 예 |
|---|---|---|
| 지시(Instruction) | 모델이 할 일 | "다음 계약서에서 위약금 조항을 찾아 요약하라" |
| 역할(Role) | 모델이 맡을 관점·전문성 | "너는 10년 차 보안 감사인이다" |
| 맥락(Context) | 배경 정보, 참고 문서, 제약 조건 | 사내 규정 원문, 대상 독자, 분량 제한 |
| 입력 데이터(Input) | 처리할 대상 | 요약할 본문, 분류할 문장 |
| 예시(Example) | 기대하는 입력–출력 쌍 | 분류 예시 3개 |
| 출력 형식(Output Format) | 결과의 구조와 형식 | JSON 스키마, 표, 글자 수 |
- 연쇄적 사고(Chain-of-Thought): 답을 바로 내지 말고 중간 추론 과정을 쓰게 한다. 수학·논리 문제의 정확도가 오른다 → 연쇄적 사고 프롬프팅
- 자기 일관성(Self-Consistency): 같은 질문에 여러 추론 경로를 생성하고 다수결로 답을 고른다.
- 생각의 나무(Tree of Thoughts): 추론을 여러 갈래로 펼쳐 평가하고 유망한 갈래를 이어 간다.
- 문제 분해·프롬프트 체이닝: 큰 작업을 여러 단계로 나눠 앞 단계의 출력을 다음 프롬프트의 입력으로 쓴다.
- 자기 검토: 생성한 답을 모델이 다시 점검·수정하게 한다.
- 검색 증강 생성(RAG): 질문과 관련된 문서를 검색해 프롬프트에 넣어 근거 있는 답을 만들게 한다. 할루시네이션을 줄인다 → RAG (인공지능)
- ReAct: 추론(Reasoning)과 행동(Acting, 도구 호출)을 번갈아 하게 해 검색·계산·API 호출 결과를 반영한다.
- 도구 사용 명세: 호출할 수 있는 함수와 인자 형식을 프롬프트로 알려 준다 → 모델 컨텍스트 프로토콜
- 구분자와 구조화: 지시와 데이터를 태그·구분선으로 나눠 모델이 헷갈리지 않게 한다.
- 출력 형식 지정: JSON 스키마, 표, 항목 수를 명시해 후속 프로그램이 결과를 바로 쓰게 한다.
- 제약과 부정 지시: 모르면 모른다고 답하게 하고, 다루지 말아야 할 주제를 정한다.
- 생성 매개변수: 온도(temperature)·top-p 를 낮추면 일관된 답, 높이면 다양한 답이 나온다.
- 평가 데이터셋: 대표 질문과 기대 답을 모아 프롬프트를 바꿀 때마다 품질을 비교한다.
- 버전 관리: 프롬프트를 코드처럼 저장소에서 관리하고 변경 이력을 남긴다.
- 보안: 사용자 입력이나 외부 문서에 숨긴 지시로 모델을 조종하는 프롬프트 인젝션과 안전 장치를 우회하는 탈옥(Jailbreak)을 막도록 입력 검증, 권한 분리, 출력 필터를 둔다.
| 분야 | 활용 |
|---|---|
| 업무 자동화 | 보고서 초안, 회의록 요약, 이메일 작성, 문서 분류·정보 추출 |
| 소프트웨어 개발 | 코드 생성·리뷰, 테스트 케이스 작성, 오류 원인 분석, 문서화 → 바이브 코딩 |
| 고객 서비스 | 상담 챗봇, FAQ 응답, 상담 내용 요약과 분류 |
| 데이터 분석 | 자연어 질의를 SQL 로 변환, 분석 결과 해석, 비정형 텍스트 구조화 |
| 교육·연구 | 개인 맞춤 문제 풀이 설명, 논문 요약, 번역 |
| 공공·전문 분야 | 법령·규정 검색과 근거 제시(RAG 결합), 민원 응대, 의료 기록 요약 |
활용할 때는 사실 확인(근거 제시 요구, RAG), 개인정보·기밀을 프롬프트에 넣지 않는 내부 지침, 결과에 대한 사람의 검토 절차를 함께 둔다.
하네스 엔지니어링(Harness Engineering)은 대형 언어 모델을 에이전트로 쓸 때, 모델을 둘러싼 실행 환경(하네스)을 설계하는 일이다. 하네스는 모델에게 줄 도구와 권한, 맥락을 채우고 정리하는 방식, 작업을 반복하는 루프, 테스트·린터 같은 자동 검증, 기억 저장, 실행 기록과 관찰, 안전 장치를 포함한다. 모델이 사람 대신 여러 단계의 작업(예: 코드 작성 → 테스트 → 수정)을 오래 수행하게 되면서, 결과 품질이 프롬프트 문구보다 이 실행 환경에 더 크게 좌우된다는 인식에서 나온 말이다.
| 구분 | 프롬프트 엔지니어링 | 하네스 엔지니어링 |
|---|---|---|
| 설계 대상 | 모델에 넣는 입력 문구와 예시 | 모델을 감싼 실행 환경 전체(도구, 맥락, 루프, 검증, 권한) |
| 단위 | 한 번의 모델 호출 | 여러 단계·여러 번의 호출로 이어지는 작업 전체 |
| 목표 | 한 번의 응답 품질 향상 | 장시간 자율 작업의 신뢰성·재현성·안전성 확보 |
| 주요 수단 | 지시·역할·예시·출력 형식, CoT 같은 추론 유도 | 도구 연결, 컨텍스트 관리(요약·압축·기억), 피드백 루프, 자동 테스트·검증, 샌드박스와 권한 통제, 실행 로그·관찰 |
| 오류 대응 | 프롬프트 문구 수정 | 실패를 자동 검증으로 잡아 모델에 되돌려 주고, 환경·규칙·도구를 고친다 |
| 산출물 | 프롬프트 템플릿 | 에이전트 실행 프레임워크, 규칙 문서, 검증 파이프라인 |
| 필요 역량 | 언어 표현, 과업 이해 | 소프트웨어 공학, 시스템 설계, 보안 |
| 관계 | 하네스 안에서도 프롬프트는 여전히 핵심 구성 요소이다. 프롬프트 엔지니어링이 하네스 엔지니어링의 일부로 포함된다 | |
- 같은 프롬프트라도 모델 버전이 바뀌면 결과가 달라져 다시 조정해야 한다.
- 프롬프트만으로는 모델이 모르는 지식이나 최신 정보를 채울 수 없다(RAG·미세조정 필요).
- 결과가 확률적으로 생성되어 같은 입력에도 답이 달라질 수 있다.
- 프롬프트 인젝션 같은 공격을 프롬프트 문구만으로 완전히 막을 수 없다.