프롬프트 엔지니어링
프롬프트 엔지니어링이란?
프롬프트 엔지니어링은 AI 모델에게 원하는 결과를 얻기 위해 입력 프롬프트를 효과적으로 설계하고 최적화하는 기술
좋은 프롬프트를 작성하는 것은 AI 모델의 성능을 최대한 활용하는 데 매우 중요
주요 프롬프트 작성 기법
- 명확한 지시사항
- 구체적이고 명확한 지시사항 제공
- 원하는 출력 형식 명시
- 필요한 제약조건 명시
- 컨텍스트 제공
- 관련 배경 정보 포함
- 예시 제공
- 필요한 참조 정보 포함
- 단계별 접근
- 복잡한 작업을 작은 단계로 분해
- 각 단계별 명확한 지시사항 제공
- 단계별 검증 포인트 설정
프롬프트 작성 모범 사례
- 역할 부여
- 형식 지정
- 예시 포함
주의사항
- 모호성 피하기
- 명확한 용어 사용
- 구체적인 수치나 기준 제시
- 모호한 표현 지양
- 적절한 길이
- 너무 짧지 않게
- 불필요한 정보 제외
- 핵심 내용 중심으로 작성
- 검증 가능성
- 확인 가능한 정보 요청
- 구체적인 기준 제시
- 검증 방법 명시
활용 분야
- 코드 작성
- 프로그래밍 언어 명시
- 요구사항 상세화
- 테스트 케이스 포함
- 문서 작성
- 문서 형식 지정
- 목적 명확화
- 대상 독자 고려
- 데이터 분석
- 분석 목적 명시
- 데이터 형식 지정
- 출력 형식 요구
예시
기본적인 프롬프트 작성
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