Skip to content

프롬프트 엔지니어링

프롬프트 엔지니어링이란?

프롬프트 엔지니어링은 AI 모델에게 원하는 결과를 얻기 위해 입력 프롬프트를 효과적으로 설계하고 최적화하는 기술

좋은 프롬프트를 작성하는 것은 AI 모델의 성능을 최대한 활용하는 데 매우 중요

주요 프롬프트 작성 기법

  1. 명확한 지시사항
  2. 구체적이고 명확한 지시사항 제공
  3. 원하는 출력 형식 명시
  4. 필요한 제약조건 명시
  5. 컨텍스트 제공
  6. 관련 배경 정보 포함
  7. 예시 제공
  8. 필요한 참조 정보 포함
  9. 단계별 접근
  10. 복잡한 작업을 작은 단계로 분해
  11. 각 단계별 명확한 지시사항 제공
  12. 단계별 검증 포인트 설정

프롬프트 작성 모범 사례

  1. 역할 부여
    당신은 [역할]입니다. [역할에 대한 설명]을 수행해주세요.
    
  2. 형식 지정
    다음 형식으로 답변해주세요:
    - 제목
    - 주요 내용
    - 결론
    
  3. 예시 포함
    다음은 예시입니다:
    [예시]
    위와 같은 형식으로 답변해주세요.
    

주의사항

  1. 모호성 피하기
  2. 명확한 용어 사용
  3. 구체적인 수치나 기준 제시
  4. 모호한 표현 지양
  5. 적절한 길이
  6. 너무 짧지 않게
  7. 불필요한 정보 제외
  8. 핵심 내용 중심으로 작성
  9. 검증 가능성
  10. 확인 가능한 정보 요청
  11. 구체적인 기준 제시
  12. 검증 방법 명시

활용 분야

  1. 코드 작성
  2. 프로그래밍 언어 명시
  3. 요구사항 상세화
  4. 테스트 케이스 포함
  5. 문서 작성
  6. 문서 형식 지정
  7. 목적 명확화
  8. 대상 독자 고려
  9. 데이터 분석
  10. 분석 목적 명시
  11. 데이터 형식 지정
  12. 출력 형식 요구

예시

기본적인 프롬프트 작성

import openai

def create_basic_prompt():
    prompt = """
    당신은 파이썬 전문가입니다. 다음 요구사항에 맞는 코드를 작성해주세요:

    요구사항:
    - 리스트에서 중복된 요소를 제거하는 함수
    - 함수는 입력 리스트를 변경하지 않고 새로운 리스트 반환
    - 시간 복잡도 최적화

    출력 형식:
    - 함수 정의
    - 간단한 사용 예시
    - 시간 복잡도 설명
    """
    return prompt

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "You are a Python expert."},
        {"role": "user", "content": create_basic_prompt()}
    ]
)

단계별 접근 프롬프트

def create_step_by_step_prompt():
    prompt = """
    다음 단계별로 데이터 분석 코드를 작성해주세요:

    1단계: 데이터 로드
    - pandas를 사용하여 CSV 파일 로드
    - 기본 데이터 정보 출력

    2단계: 데이터 전처리
    - 결측치 처리
    - 이상치 제거

    3단계: 데이터 분석
    - 기술 통계량 계산
    - 시각화

    각 단계별로 코드와 설명을 제공해주세요.
    """
    return prompt

컨텍스트가 포함된 프롬프트

def create_context_prompt():
    prompt = """
    다음은 기존 코드입니다:
    ```python
    def calculate_average(numbers):
        return sum(numbers) / len(numbers)
    ```

    위 코드를 개선하여 다음 요구사항을 만족하는 코드를 작성해주세요:
    - 빈 리스트 처리
    - 음수 값 필터링
    - 소수점 자릿수 제한

    기존 코드의 장점을 유지하면서 개선된 버전을 제공해주세요.
    """
    return prompt

검증 가능한 프롬프트

def create_verifiable_prompt():
    prompt = """
    다음 요구사항에 맞는 테스트 코드를 작성해주세요:

    테스트 대상: 문자열 회문(palindrome) 검사 함수
    테스트 케이스:
    1. 일반적인 회문 ("level")
    2. 대소문자 구분 없는 회문 ("Racecar")
    3. 공백이 포함된 회문 ("A man a plan a canal Panama")
    4. 빈 문자열
    5. 특수문자가 포함된 경우

    각 테스트 케이스에 대한 예상 결과값도 함께 제공해주세요.
    """
    return prompt