본문 바로가기

생성형 AI 교육/AI 교육

[Day 5] 프롬프트 엔지니어링(프롬프트 설계, 데이터 생성 및 전처리, 프롬프트 작성)

  • 프롬프트 작성 시 주의 사항
    • 프롬프트 작성 시, 너무 많은 정보와 상세한 지시를 제공하려고 하다가 LLM에게 특정 답변을 유도하는 형태로 프롬프트를 작성하게 되는 경우가 있음
    • “나는 이러이러하게 생각하는데 너는 어떻게 생각해?”와 같이 자신의 의도가 정보인 것처럼 전달될 때, LLM의 답변은 자신의 의도를 중심으로 답변을 구성하게 될 확률이 높음
    • 따라서 프롬프트의 문장을 작성할 때 편향성을 띄지 않도록 주의할 필요가 있음
    • 내 의견의 정보를 아예 배제하는 것이 좋다.(중립의 입장에서 질문하기)
    • 단계적으로 심화해서 질문을 하기

 

1. 프롬프트 설계 (Prompt Design)

  • 생성형 AI가 원하는 방식으로 답하도록 질문과 지시를 구조적으로 작성하는 것
  • 좋은 프롬프트는 단순히 길게 쓰는 게 아니라
    무엇을 해야 하는지, 어떤 형식으로 답해야 하는지, 어떤 맥락을 참고해야 하는지를 분명하게 전달하는 게 핵심이다

1.1 기본적인 프롬프트 설계 원칙

  • 명확성(Clarity)
    • LLM에게 무엇을 원하는지 명확하게 전달해야 함
    • 모호하거나 추상적인 표현은 모델이 엉뚱한 답변을 내놓도록 만들 수 있음
  • 구체성(Specificity)
    • 원하는 답변의 형식, 길이, 스타일, 포함해야 할 내용 등을 최대한 구체적으로 명시해야 함
  • 간결성(Conciseness)
    • 불필요한 단어나 구문을 줄여 프롬프트의 핵심 내용을 명확하게 전달해야 함
  • 문맥 제공(Context)
    • 모델이 질문이나 지시를 이해하는 데 필요한 배경 정보나 상황을 제공해야 함
  • 목표 명시(Goal Definition)
    • 최종적으로 어떤 결과물을 얻고 싶은지 명확하게 제시해야 함

좋은 프롬프트와 나쁜 프롬프트의 예)

나쁜 프롬프트

  • 파이썬 코드 짜줘

좋은 프롬프트

  • 파이썬으로 CSV 파일을 읽어서 결측치 개수를 열별로 출력하는 코드를 작성해줘
  • pandas를 사용해줘
  • 코드에 주석을 포함해줘
  • 초보자도 이해할 수 있게 마지막에 코드 설명을 3줄로 덧붙여줘

1.2 프롬프트 최적화 시 고려사항

  • 모델의 특성 이해
    • 각 생성형 AI 모델은 고유한 특성과 강점을 가지고 있음
    • 사용하는 모델의 능력을 이해하고 그에 맞춰 프롬프트를 설계하는 것이 중요함
  • 실험과 평가
    • 다양한 프롬프트 시도를 통해 어떤 방식이 가장 효과적인 결과를 가져오는지 실험하고 평가하는 과정이 필요함
  • 윤리적 고려
    • 편향되거나 유해한 정보를 생성하지 않도록 프롬프트를 신중하게 설계해야 함
  • 프롬프트 최적화는 끊임없이 발전하는 분야이며, 새로운 기술과 전략들이 계속해서 등장하고 있음
  • 효과적인 프롬프트 엔지니어링은 생성형 AI의 잠재력을 최대한으로 활용하고, 우리가 상상하는 것 이상의 가치를 창출하는 데 핵심적인 역할을 수행할 것임

정리

  • 프롬프트 설계는 AI에게 일을 잘 시키는 방법이고
  • 프롬프트 최적화는 그 지시문을 계속 개선해서 결과 품질을 높이는 과정이다
  • 결국 생성형 AI 활용의 핵심은
    모델 성능 자체만이 아니라, 어떻게 질문하고 어떻게 다듬느냐에 달려 있다

2. 데이터 생성 및 전처리

LLM의 자연어 처리 능력을 활용해 새로운 데이터를 만들거나, 기존 데이터를 정리하고 가공해서 학습이나 분석에 더 적합한 형태로 바꾸는 작업

  • 데이터 생성 : 부족한 데이터를 보완하거나, 실제 데이터를 대신할 예시 데이터를 만들 때 활용한다

주요 활용

  • 텍스트 데이터 증강: 기존 문장을 비슷한 표현으로 바꿔 데이터 수를 늘림
  • 합성 데이터 생성: 실제 수집이 어렵거나 개인정보 이슈가 있을 때 유사 데이터를 생성함
  • 특정 스타일 콘텐츠 생성: 광고 문구, 이메일, SNS 문구 같은 형식화된 텍스트 대량 생성
  • 테이블 데이터 생성: 자연어 설명을 표 형식 데이터로 바꾸거나 기존 표를 변형
  • 코드 생성: 설명을 바탕으로 코드 작성이나 코드 변환 수행

예시

  • 하나의 질문에 대해 여러 표현의 답변 생성
  • 상품 속성을 주고 상품 설명 문구 생성

데이터 전처리

기존 텍스트의 품질을 높이고, 분석이나 모델 학습에 맞게 형태를 다듬는 과정

 

주요 활용

  • 텍스트 정제: 특수문자, HTML 태그, 이모티콘 제거
  • 오류 수정: 맞춤법, 문법, 비표준 표현 보정
  • 텍스트 요약: 긴 글을 핵심만 남겨 압축
  • 감성 분석: 긍정, 부정, 중립 등 감정 분류
  • 개체명 인식: 사람, 장소, 조직, 날짜 같은 정보 추출
  • 관계 추출: 개체 사이 관계 파악
  • 텍스트 분류: 내용에 따라 카테고리 분류
  • 의미 기반 변환: 텍스트를 의미 정보 중심으로 변환

예시)

  • 비표준 표현과 HTML 태그가 섞인 문장을 자연스럽게 정리
  • 긴 설명문을 3문장으로 요약

주의할 점

  • 프롬프트 품질이 결과 품질에 큰 영향을 줌
  • 모델은 학습 데이터의 편향을 반영할 수 있음
  • 생성 결과는 사람이 검토하는 것이 좋음
  • 사용 비용과 연산 자원이 들 수 있음

정리

데이터 생성은 없는 데이터를 새로 만드는 데 강하고
데이터 전처리는 기존 데이터를 더 깨끗하고 활용하기 좋게 다듬는 데 강하다

 

LLM은 둘 다 잘할 수 있어서
데이터가 부족할 때는 생성에, 데이터 품질이 낮을 때는 전처리에 유용하게 활용할 수 있다


3. 시나리오 기반 프롬프트

특정 상황, 역할, 목표를 먼저 설정한 뒤 그 맥락에 맞는 답변을 생성하도록 만드는 프롬프트 방식이다.

 

핵심 요소

  • 상황 설정: 누가, 어디서, 어떤 상황인지 구체화
  • 역할 부여: 어떤 관점으로 답할지 지정
  • 목표 제시: 무엇을 만들어야 하는지 명확히 전달
  • 제약 조건: 길이, 형식, 포함 내용 제한
  • 톤 앤 매너: 전문적, 친근한, 감성적 같은 분위기 지정.

장점

  • 맥락에 맞는 답변을 더 잘 이끌어냄
  • 원하는 형태의 결과물을 얻기 쉬움
  • 창의적인 답변 유도에 유리함
  • 스토리텔링, 교육, 마케팅 같은 다양한 분야에 활용 가능.

정리

시나리오 기반 프롬프트는 그냥 질문하는 방식보다 더 현실적이고 맥락 있는 결과를 만들기 좋다.
상황과 목표를 구체적으로 줄수록 결과도 더 정교해진다.