인공지능

프롬프트 기초

원담 2025. 6. 4. 15:22
728x90

프롬프트(Prompt)란?

  • 정의: AI 모델에게 텍스트 응답을 생성하게 하는 입력 문장 또는 지시문
  • 기능: 모델에게 어떤 출력을 원하는지 유도하는 질문, 명령, 텍스트
  • 필요 역량: AI 모델의 입력 양식에 대한 기본 이해

프롬프트 엔지니어링(Prompt Engineering) 이란?

  • 정의: 원하는 출력값을 얻기 위해 프롬프트를 정교하게 설계하고 개선하는 과정
  • 목적:
    • 모델의 응답 품질 최적화
    • 출력 스타일, 톤, 콘텐츠를 미세 조정하여 정확하고 관련성 있는 결과 생성
  • 필요 역량:
    • AI 내부 작동 방식에 대한 이해
    • 창의성 및 언어 감수성 (미묘한 단어 차이에 따른 반응 차이 이해)

프롬프트 vs 프롬프트 엔지니어링 비교 요약

항목
프롬프트 롬프트 엔지니어링
정의 AI에게 입력하는 텍스트 출력 품질을 높이기 위한 프롬프트 설계 과정
목적 응답 유도 응답 최적화 및 제어
예시 “용에 대한 이야기 들려줘” 문체, 캐릭터, 길이를 명시하여 상세하게 설계
필요사항 입력 형식 이해 모델 구조·언어 뉘앙스·실험적 감각
 
Prompt Engineering = 인문학 ✕ 기술의 융합
  • ‘프롬프트’는 언어적 감수성이 필요한 인문학 영역
  • ‘엔지니어링’은 기술적인 구조 설계
  • 이 둘을 통합한 직무가 Prompt Engineer
    • 창의성과 분석력이 동시에 요구되는 하이브리드 역할

LLM (Large Language Model)과의 관계

  • LLM은 입력된 프롬프트를 바탕으로 다음 단어를 예측하는 방식으로 응답을 생성함
  • 주요 모델:
    • GPT-3, GPT-4, GPT-4o (OpenAI)
    • Claude (Anthropic)
    • Gemini (Google)
    • Command (Cohere) 등

모델 튜닝의 새로운 방법

Prompt Engineering은 다음과 같이 모델을 제어하는 새로운 방법으로 주목받고 있음:

  • Fine-Tuning: 모델 자체를 학습 데이터로 재훈련
  • Prompt Engineering: 입력 설계를 통해 성능 조정
  • Feature-Tuning: 특정 특성(feature)을 조정하여 반응 제어

프롬프트 엔지니어링의 중요성

항목
내용
모델 연구 언어 모델의 성능 극대화, 출력물 제어
서비스 측면 AI 서비스의 시간/비용 절감, 사용자 경험 향상
중요 과제 상식 부족 보완, 헷갈리는 문맥 해결, 정확도 향상, 편향 제거 등
 
왜 중요한가?
  • 출력 제어: 원하는 스타일, 톤, 결과를 유도
  • 정확성: 문맥에 맞는 답 생성
  • 편향 완화: 모델의 편견을 줄이고 오류 방지
  • 적응성: 다양한 목적에 맞춰 활용 가능
  • 경제성: 재학습 없이 성능 최적화
  • 윤리성: 책임 있는 AI 활용을 위한 제어 수단

프롬프트의 기본 요소 (Prompt Anatomy)

구성 
요소설명
Instruction (지시) 모델이 수행해야 할 작업에 대한 명령어
Context (문맥) 지시에 대한 배경 정보 또는 참고 지식
Input Data (입력값) 응답 생성에 참고할 입력 데이터
Output Indicator (출력 지시문) 출력 포맷이나 응답 방식 안내
 
프롬프트 유형(Type) 분류
유형
구성 특징
Type A 지시문 + 출력문 기본 형태. 단순 질문–응답 구조
Type B 지시문 + 맥락 + 출력문 배경 정보를 함께 주어 더 구체적인 답 유도
Type C 지시문 + 맥락 + 예시 + 출력문 구조화된 예시와 함께 응답을 유도
Type D 지시문 + 입력값 + 출력문 외부 데이터를 활용해 응답을 구성하는 형태

Type A

  • Prompt: 오늘 날씨는 어때?
  • Output: 오늘은 맑고 따뜻한 날씨입니다. 기온은 24도 내외로, 야외 활동에 적합합니다.

Type B
  • Prompt: 맥락(제주도)  + 지시(오늘 날씨를 알려줘)
  • Output: 제주도는 오늘 흐린 가운데 오후부터 비가 내릴 것으로 예상됩니다. 최고 기온은 21도이며, 바람이 강하므로 외출 시 우산을 챙기시는 것이 좋습니다.

Type C

  • Prompt: 맥락(서울) + 예시(: - 요약 날씨 - 최고/최저 기온 - 활동 추천) + 지시(위 형식을 참고해 오늘 서울의 날씨를 알려줘)
  • Output:
  • - 오늘 서울은 맑고 일교차가 큰 날씨입니다. - 최고 25도 / 최저 14도 - 가벼운 외출이나 산책에 좋은 날씨입니다.

Type D

  • Prompt: 지시(아래 입력값을 읽고 날씨 정보를 요약해줘. 한 문장으로 작성해) + 
    입력값(서울은 아침에 흐리다가 낮부터 맑아졌으며, 기온은 15도에서 23도 사이였고, 바람은 약간 있었으나 외출하기 좋은 날씨였다.)
  • Output: 서울은 오전 흐림 후 맑아지며 15~23도 사이의 외출하기 좋은 날씨였습니다.

프롬프트 제작 원칙 (Prompt Design Principles)

원칙
설명
범용성 다양한 상황에서 사용할 수 있도록 작성
일관성 모델이 여러 번 실행돼도 비슷한 품질 유지
목적 지향성 특정 기능이나 목표 달성에 초점 맞춤
경제성 비용 효율적으로 프롬프트 설계 (토큰 절약 등)
 
설계 방법 및 팁

Tip 1: 최신 모델 사용

  • 가능하면 최신 모델을 사용하되, 모델 성능 대비 비용도 고려

Tip 2: 명확한 지시 사용

  • 애매한 요청은 피하고, 명확한 동사 사용(예: 작성해, 요약해, 분류해)

Tip 3: 프롬프트 구조화

  • 마크다운, 코드블록, 리스트 등을 활용해 모델이 읽기 쉬운 형식으로 구성
  • Prompt 요소 (Instruction, Context 등)를 명확히 구분해서 설계

Structured Prompting 방식

Markdown 기호 활용

구분 기능 예시
#, ## 제목/섹션 구분 다음 텍스트에서.. 추출해라.. #Format: ##텍스트
-, 1. 리스트 형태로 정보 정리  
*텍스트*, **텍스트** 강조 (이탤릭, 볼드) 표현 가능  

구조화 방식: 코드/태그 사용

  • 코드 사용 (Code Prompting)
    • 자연어 대신 코드 형식 프롬프트 사용 시 모호성↓, 환각 현상↓, 정확성↑
    • 특히 파이썬 등으로 행동 범위를 명시할 수 있음
def classify_emotion(text: str) -> str:
    """
    텍스트가 표현하는 감정을 '긍정', '부정', '중립' 중 하나로 분류합니다.
    """

text = "오늘은 기분이 너무 좋아!"

# GPT 출력 예시:
# '긍정'
  • XML 태그 사용 (<tag>) --> 프롬프트 템플릿화
    • 문장 내 구간을 명확히 분리해 반복 수정 용이
    • 해당 구역을 강조하는 효과
    • 반복작업에서 프롬프트 수정과 편집/용이
    • 언어 모델의 처리 속도 향상
    • 예시) Human: <email>내일 6시에 미팅 잡을게요</email> 이 이메일을 더 공손하게 바꿔줘
    • 예시) 여러 데이터의 종류를 구분하고 파싱한다
      • input data: cow, dog, seal,
      • prompt: please responed with the noise that animal makes. <animal>{{animal}}</animal>.
XML Tags 사용한 프롬프트 템플릿

Tip 4: 단문 중심의 간결한 문장 사용

  • 언어 모델에 작업을 요청할 떈 명확하고 구체적인 지시문을 작성하자
  • 원하는 결과물의 톤앤 매너, 형식, 길이, 문단 등
  • 나쁜예) 5월의 봄을 주제로 시를 써주되, 길지 않아야 하고, 한국어의 멋과 운율이 살아있고, 봄의 감성이 느껴지게 해줘.
  • 좋은예) 너는 시인이야.  
    5월의 봄을 떠올려봐.  
    짧은 시를 써줘.  
    한국어의 운율을 살려줘.  
    봄의 감성이 느껴지게 해줘.

Tip 5: '하지 말 것'보다 ‘해야 할 것’을 지시하자

  • 나쁜 예: "아이디 묻지 마세요"
  • 좋은 예: "아이디 대신 고객센터 링크를 안내하세요"

언어모델의 추측을 줄이고 명확하게 행동을 유도

but 프롬프트 설계에 100% 정답은 없다

  • 상황과 목적에 따라 다름
  • 때로는 부정 지시("절대 반복하지 마")도 효과적
  • 시스템 프롬프트 작성 시도 포함

 OpenAI Playground 구성요소

  • Chat: GPT와 실시간 대화 가능 (지시문 + 응답 실험)
  • Assistants: 툴, 파일, 코드를 포함한 지능형 'Agent' 구성 가능
  • Completions: 가장 기본적인 텍스트 예측 API. 완성형 문장을 생성하는 데 사용됨

Assistants API의 구조

구성 요소:

  • Assistants:
    • 모델 (예: GPT-3.5, GPT-4)
    • Instruction (지시문/프롬프트)
    • Tools (코드 실행, 파일 검색 등)
    • Files (업로드된 사용자 파일들)
    • Assistant는 다양한 작업을 처리할 수 있는 지능형 봇 역할
  • Threads:
    • 대화 채널처럼 동작하며 메시지를 모아둠
  • Runs:
    • Assistant와 Thread의 실행 단위
    • 사용자의 요청을 받아 툴을 쓰고 응답을 생성하는 실제 실행 단계

Completions 기능

  • OpenAI가 처음 제공한 문장 완성 API
  • GPT-3.5-turbo-instruct, davinci-002 등 사용 가능
  • 프롬프트를 주면 문장 전체를 자동 완성
  • 대화형 구조보다는 정적 응답이 중심

Open AI Playground의 주요 설정값


파라미터
설명
Temperature 출력을 얼마나 무작위화할지 설정. 높을수록 창의적, 낮을수록 일관됨
Top-p (nucleus sampling) 누적 확률 기준으로 후보 단어를 제한함. 다양성과 통제를 동시에 조절
Max Tokens 최대 생성 토큰 수 (글자수 아님)
Frequency Penalty 같은 단어 반복 억제 (중복 패턴 줄임)
Presence Penalty 특정 단어나 패턴이 등장하는 것 자체를 억제
Stop Sequence 이 시퀀스가 등장하면 출력 중단 (예: "\n\nUser:")

토큰(Token)의 개념

  • 자연어처리에서 기본적으로 처리할 수 있는 언어의 조각이나 단위로서 프롬프트를 제작할떄는 토큰 수를 미리 예상 할 수 있어야 함
  • LLM은 글자를 단위로 처리하지 않고 '토큰' 단위로 텍스트를 처리
  • 영어: 단어나 구두점 기준
  • 한국어: 음절, 어미 등 다양한 단위로 분할됨
  • 예시:
    • Apple → 1 token
    • Red Apple → 3 tokens (Red, space, Apple)
    • 밥을 사줘 → 모델에 따라 3~6개로 분할

Tokenizer를 활용하면 텍스트가 몇 개의 토큰으로 변환되는지 미리 확인 가능

모델의 동작 원리 (Predict the next token)

Input text →Tokenize (숫자 시퀀스로 변환) → LLM이 다음 토큰의 확률 분포를 예측 → Sampling (가장 높은 확률 또는 랜덤 선택)

Temperature vs Top-P


항목
사용 
Temperature 확률 분포 자체의 날카로움 조절 값이 높을수록 창의적이나 무작위
Top-P 누적 확률 상위 단어들만 후보로 제한 Temperature 값이 높을 때 안정화용으로 병행 사용

Penalty 옵션 비교


항목
역할 예시
Frequency Penalty 같은 단어의 반복 방지 "사과 사과 사과" → "사과 배 바나나"
Presence Penalty 특정 단어 등장 자체를 억제 이미 등장한 "사과"라는 단어의 재등장 자체를 막음

LLM 한계와 프롬프트 엔지니어링의 필요성

LLM의 주요 한계

항목 설명
할루시네이션 LLM이 모르는 질문에 대해 사실처럼 보이는 허구 정보를 생성함 (예: "환각")
편향성 모델이 학습 데이터에 내재된 사회적 편견, 고정관념을 그대로 드러낼 수 있음
자료 인용 부재 정보의 출처가 불명확하며, 때로는 출처를 조작하거나 허위로 제공하기도 함
수학 및 기초 상식 추론 능력 부족 간단한 연산도 틀릴 수 있으며, 논리적 추론이 필요한 문제에 약함
프롬프트 해킹 악의적인 사용자에 의해 모델이 의도하지 않은 콘텐츠를 생성하도록 조작될 수 있음
 
프롬프트 엔지니어링의 필요성
할루시네이션 해결 명확하고 구조화된 프롬프트로 환각 가능성 줄이기
편향 해결 중립적/균형 잡힌 질문 방식으로 모델의 편향 최소화
추론력 강화 체계적인 지시(prompt)로 수학/논리 문제 해결을 유도
프롬프트 해킹 완화 악의적 우회 시도에 대해 명확한 거부 조건 설정 필요
 
추가 설명: 왜 프롬프트 엔지니어링이 중요한가?
  • GPT와 같은 LLM은 '지능'이라기보다 확률 기반의 텍스트 예측기이다.
  • 따라서 어떻게 질문하느냐(prompt)에 따라 출력 결과가 극적으로 달라진다.
  • "좋은 입력이 좋은 출력(GIGO, Garbage In Garbage Out)"을 좌우하기 때문에, 프롬프트 엔지니어링은 LLM 활용의 핵심이다.
728x90

'인공지능' 카테고리의 다른 글

프롬프트 엔지니어링(Advanced)  (1) 2025.06.05
프롬프트 엔지니어링(Basic)  (2) 2025.06.05
Multimodal Image 생성기술  (2) 2025.05.30
Multimodal 모델  (3) 2025.05.29
Vision 생성모델 - Diffusion  (1) 2025.05.28