프롬프트 엔지니어링 기초: 실용 용어 해설
프롬프트 엔지니어링 기본을 명확하게 설명하며, 즉시 활용할 수 있는 예제와 기법을 포함합니다.
프롬프트 엔지니어링은 언어 모델이 원하는 출력을 생성하도록 입력 텍스트를 작성하는 실행 관행입니다. 쓰기와 디버깅 사이 어딘가에 위치합니다: 전통적인 의미의 코딩은 아니지만, 모델이 명령어를 어떻게 해석하는지에 대한 가설을 테스트하고 실패할 때 반복하고 있습니다.
프롬프트가 실제로 무엇인지
프롬프트는 모델이 응답을 생성하기 전에 보내는 모든 것입니다 — 명령어, 맥락, 예제, 그리고 실제 질문이나 작업. 대부분의 현대적 채팅 모델은 이를 역할로 나눕니다: 시스템 메시지(동작과 제약을 설정), 사용자 메시지(실제 요청), 그리고 때로 어시스턴트 메시지(이전 차례 또는 예제). OpenAI나 Anthropic 같은 API를 사용하면 코드에서 명시적으로 설정합니다. 채팅 인터페이스를 사용하면 시스템 프롬프트는 종종 숨겨지거나 대화 시작 시점에 한 번 설정됩니다.
같은 질문이 다른 답을 얻는 이유
언어 모델은 이전의 모든 것, 즉 문구, 단어 순서, 심지어 구두점을 포함한 모든 것을 바탕으로 다음 토큰을 예측합니다. "재귀를 설명해"라고 물으면 일반적인 교과서 답을 얻습니다. "루프는 이해하지만 재귀는 이해하지 못하는 주니어 개발자를 위해 기본 케이스와 재귀 케이스가 있는 단일 Python 예제를 사용하여 재귀를 설명해"라고 물으면 훨씬 더 유용한 답을 얻습니다. 입력의 구체성이 출력의 구체성을 직접 형성합니다. 이것이 초보자가 알아야 할 핵심 통찰입니다: 모델이 당신의 생각을 읽는 것이 아니라 당신의 단어에 대해 패턴 매칭을 하고 있다는 것입니다.
먼저 배울 가치 있는 핵심 기법
제로샷 프롬프팅은 예제 없이 직접 묻는 것입니다: "미국 전화번호를 일치시키는 정규식을 작성하세요." 이것은 일반적이고 명확하게 정의된 작업에 잘 작동합니다.
퓨샷 프롬프팅은 모델에 원하는 입력/출력 패턴의 하나 이상의 예제를 제공한 다음 패턴을 계속하도록 요청하는 것입니다. 모델이 지원 티켓을 카테고리로 분류하도록 하려면, 먼저 라벨이 지정된 3개의 예제를 보여주면 카테고리를 산문으로만 설명하는 것보다 훨씬 일관된 결과를 얻습니다.
체인오브쓰트 프롬프팅은 모델에 최종 답을 주기 전에 단계별로 추론하도록 요청하며, 종종 글자 그대로 "단계별로 생각해"를 추가하거나 작업 과정을 보여달라고 요청하는 방식입니다. 이것은 수학, 논리, 다단계 작업에 도움이 되지만 토큰 사용량과 응답 길이도 증가시킵니다.
롤 프롬프팅은 모델에 페르소나를 할당합니다 — "당신은 이 코드를 취약점에 대해 검토하는 시니어 보안 엔지니어입니다" — 이는 톤, 어휘, 우선순위를 두는 세부 사항의 종류를 이동시킬 수 있습니다. 모델에 새로운 능력을 부여하지는 않지만 출력 스타일을 고정시킵니다.
구조가 기발함보다 중요
초보자들은 종종 프롬프트 엔지니어링이 마법 같은 구절을 찾는 것이라고 가정합니다. 실제로 구조는 거의 항상 기발함을 이깁니다. 프롬프트를 명확한 부분으로 나눕니다: 맥락, 작업, 제약, 형식. 예를 들어:
맥락: 보안 감사를 위해 Python Flask 앱을 검토하고 있습니다.
작업: 아래 코드에서 SQL 주입 위험을 파악하세요.
제약: /login 및 /search 경로의 문제만 표시하세요.
형식: 라인 번호와 한 문장 설명이 있는 번호 목록을 반환하세요.
이러한 명시적 형식화는 모호성을 줄이고 스크립트에서 프롬프트를 함께 연결할 때 프로그래밍 방식으로 출력을 구문 분석하기 쉽게 만듭니다.
초기에 자주 하는 실수
빈번한 오류는 간결함으로 위장한 모호함입니다 — "이것을 더 좋게 만들어"라고 묻되 "더 좋게"가 의미하는 것(더 빠름? 더 읽기 쉬움? 더 안전함?)을 정의하지 않는 것입니다. 또 다른 것은 단일 프롬프트에 관련 없는 5개의 작업을 집어넣는 것인데, 이는 다섯 가지 모두에 얕은 답을 생성하는 경향이 있습니다. 초보자들은 또한 별도의 API 호출 간 모델이 메모리를 갖지 않으며 명시적으로 이전 대화 기록을 다시 전달하지 않으면 보유하지 않는다는 것을 잊으며, 이는 상태 저장 모든 것을 구축할 때 사람들을 놀라게 합니다.
엔지니어처럼 테스트하고 반복하기
프롬프트를 코드처럼 다루세요. 버전 관리하고 테스트하는 것이지 버리는 일회성 텍스트가 아닙니다. 프롬프트 변형과 출력의 로그를 기록하세요, 특히 고객 지원 봇이나 코드 검토 어시스턴트 같은 프로덕션에서 재사용할 모든 것. 작은 단어 변경 — "요약하세요" 대 "정확히 세 개의 글머리 기호로 요약하세요" — 의미 있게 다른 결과를 생성할 수 있으며, 당신의 사용 사례에 무엇이 작동하는지 아는 유일한 방법은 가정하기보다 직접 비교를 실행하는 것입니다.
실제 무엇인가를 구축하는 데 이것이 어디에 맞는지
프롬프트가 안정적이 되면 다음 단계는 보통 프로그래밍 방식 사용입니다: 작업에 맞게 조정된 온도와 max_tokens 설정으로 API를 호출하고, 형식이 잘못된 출력에 대한 재시도 논리를 추가하고, 응답이 사용자에게 도달하기 전에 검증합니다. 이는 프롬프트 엔지니어링이 일반적인 소프트웨어 엔지니어링 규율과 겹치기 시작하는 곳이며, 채팅 창에서 실험하는 것에서 실제 스크립트를 작성하는 것으로 이동할 좋은 지점입니다.
더 나아가고 싶다면 Python에서 LLM API로 작업하기와 처음부터 작은 AI 기반 도구 구축에 관한 Korra Studio의 세그먼트를 확인하세요.
AI 도움을 받아 작성했으며, Michal Pilch(CISSP), Korra Studio에서 검토 및 게시했어요.
이것은 Korra Studio 나레지베이스의 한 노트예요. 플랫폼은 모든 주제를 1-to-1 멘토링과 함께 제공해요.
무료로 시작하기arrow_forward