Engineering : 공학은 자연과학, 수학, 엔지니어링 설 계 과정을 활용하여 기술적 문제를 해 결하고, 효율성과 생산성을 높이고, 시 스템을 개선하는 학문
PromptEngineering> 컴퓨터(AI, LLM)에게 일을 ‘잘’ 시키는 일!
Prompt로 정확히 지시 내리기
역할 할당
참고 데이터 전달
출력 구조 설정
지시사항 전달
Hallucination - AI가 사실이 아닌 정보를 생성하는 현상 - 존재하지 않는 데이터를 만들어내거나 잘못된 정보를 사실처럼 제공하는 경우를 포함 - LLM이 확률적으로 단어를 예측하는 방식으로 동작하기 때문에 발생 - 이 문제를 줄이기 위해 프롬프트 엔지니어링, 검증 시스템 도입, 인간 감수 과정, function calling을 통한 출처 활용 등이 필요
프롬프트 설계 시 고려 사항
프롬프트 제작에는 정해진 정답은 없지만, 고려해야 하는 것들은 있음
다양한 상황과 요구 사항에 맞게 프롬프트를 적용할 수 있어야 함
특정 목적이나 요구 사항에 맞춰 특화된 기능과 성능을 제공해야 함
프롬프트의 품질과 결과가 일정해야 함
프롬프트 제작과 운영에 필요한 비용이 효율적이어야함
OpenAI의 6가지 프롬프트 엔지니어링 전략
명확한 지시 ( Write clear instructions)
구체적인 프롬프트로 목표를 분명히 제시
참고자료 제공 ( Provide reference text)
모델이 더 잘 이해하고 응답할 수 있도록 배경 정보 제공
작업 분해 (Split complex tasks into simpler subtasks)
복잡한 문제는 단계별로 나누기
생각 유도 (Give the model time to “think")
단계적 사고를 유도해 정확도 향상
외부 도구 활용 (Use external tools)
계산, 검색 등 부족한 능력을 보완
체계적 테스트 (Test changes systematically)
변경 시 성능 비교로 최적화 진행
ChatGPT가 정리해준 예시 ~ 🧭 1. Write clear instructions (명확한 지시 작성) ✅ 핵심: 曖昧(애매)한 프롬프트는 불확실한 출력으로 이어진다. 🎯 어떻게? 명확한 목적, 대상, 형식, 스타일을 포함하세요. 지시문이 구체적일수록 모델의 응답 품질이 올라갑니다. 💬 예시: ❌ "설명해줘" ✅ "중학생이 이해할 수 있도록 '에너지 보존 법칙'을 간단한 예시와 함께 설명해줘"
📚 2. Provide reference text (참고 자료 제공) ✅ 핵심: 모델은 문맥에 매우 민감하므로, 관련 정보나 샘플을 직접 제공하면 훨씬 나은 결과를 얻을 수 있습니다. 🎯 어떻게? 글의 톤, 포맷, 사실 기반 정보를 함께 첨부 “이 자료를 참고해서” 라고 명시해도 효과적 💬 예시: "다음 글을 요약해줘: [본문 입력]" 또는 "이 스타일을 따라 아래 내용을 써줘"
🔨 3. Split complex tasks into simpler subtasks (복잡한 작업을 간단한 단계로 나누기) ✅ 핵심: 한 번에 복잡한 작업을 맡기기보다는, 여러 단계로 나눠서 처리하면 더 정확함 🎯 어떻게? 작업을 세분화 → 각 단계마다 모델을 호출 “우선 요약해줘 → 다음은 요약을 바탕으로 제목을 정해줘” 식 접근 💬 예시: 1단계: “이 보고서를 5문장으로 요약해줘” 2단계: “요약한 내용을 바탕으로 캐치프레이즈를 만들어줘”
⏳ 4. Give the model time to “think" (생각할 시간을 주기) ✅ 핵심: 인간처럼 모델도 단계를 따라 생각하게 유도하면 더 논리적인 결과가 나옵니다. 이 방법을 "Chain of Thought Prompting"이라고도 합니다. 🎯 어떻게? "Let's think step by step" "우선 조건을 정리하고, 그 뒤에 해결책을 제안해줘" 같이 지시 💬 예시: “문제를 단계별로 해결해보자. 먼저, 문제의 조건을 정리하고, 그 후에 식을 세워줘”
🛠️ 5. Use external tools (외부 도구 활용) ✅ 핵심: LLM은 계산, 검색, 실시간 정보에는 약하므로, 외부 도구(API, 코드 실행기, 계산기, 검색엔진 등)와 연동하면 강력해집니다. 🎯 어떻게? 모델이 구 호출 명령을 구성하고, 사람이 실행하거나 자동화 시스템이 처리 예: LangChain, Function Calling, Plugin 등 💬 예시: “서울의 내일 날씨를 알려줘” → GPT가 get_weather("Seoul", "tomorrow") 함수 호출 → 외부 API 결과 기반 응답
🧪 6. Test changes systematically (변화를 체계적으로 테스트) ✅ 핵심: 프롬프트를 변경할 때는 비교 가능한 방식으로 실험해야 어떤 방식이 효과적인지 객관적으로 판단할 수 있습니다. 🎯 어떻게? 여러 프롬프트 버전을 준비하고, A/B 테스트 예: 정답률, 사용자 만족도, 응답 속도 등을 비교 💬 예시: 프롬프트 A: “중학생 수준으로 설명해줘” 프롬프트 B: “쉽고 친절하게 풀어서 설명해줘” → 어떤 쪽이 더 유용한지 비교