프롬프트 엔지니어링 (1)

이영진·2025년 4월 22일
0

LLM

목록 보기
7/25

Prompt Engineering

LLM의 입력에 해당하는 프롬프트를 효과적으로 만들고 최적화하는 과정


Prompt 중요성

  • Prompt의 역할: Prompt는 지시문과 사용자 입력으로 구성되며, 모델이 작업을 수행하는 데 중요한 역할을 합니다.

  • 정보 포함: 사용자 입력이 충분하지 않을 경우, 필요한 정보를 Prompt에 포함시킬 수 있습니다.

  • 구성 방식: Prompt를 어떻게 구성하느냐에 따라 결과가 달라질 수 있으므로, 다양한 실험을 통해 최적의 Prompt를 찾는 것이 중요합니다.

문장 생성 원리

  • Encoder 역할: Prompt는 Encoder에서 Embedding으로 변환되어 Decoder에 전달됩니다.

  • Decoder 역할: Decoder는 입력된 데이터를 기반으로 다음 토큰을 반복적으로 예측하는 방식으로 문장을 생성합니다.

Hallucination

  • 개념: LLMC(대형 언어 모델)가 학습하지 않은 데이터나 Context 부족으로 일반적이지 않은 답변 또는 현실에 맞지 않는 답변을 생성하는 현상을 Hallucination이라고 합니다.

  • 원인: 학습되지 않은 정보가 많거나 입력된 데이터가 불충분할 때 발생합니다.

  • 해결 방법: 데이터 품질을 개선하거나 Prompt를 조정하여 이러한 문제를 줄일 수 있습니다.


Temperature

언어 모델이 텍스트 생성 시 출력의 랜덤성을 제어하는 하이퍼파라미터(0~1)

⇒ 클수록 다양하고 창의적인 출력 생성(일관적이지 X)


Token

컴퓨터가 문장이나 글을 이해하기 위해 사용하는 작은 단위


Prompt의 목적

  • LLM이 잘 이해하여 답변할 수 있도록 질의

  • 원하는 답변의 요구 사항을 명확하게 제시

  • 원하는 답변을 일관하게 할 수 있도록

⇒ 일관된 답변을 낼 수 있도록 여러 번 질문해서 해당 답변들을 기준으로 나열해서 중간 정도의 답변을 가져옴


Prompt 구성 5원칙

구성 요소설명예시
목적원하는 정보나 작업을 명확히 전달하기 위한 목적 설정~ 주제에 대한 정보가 필요해 / ~을 하려고 해
명확성요청 내용을 구체적이고 명확하게 작성하여 혼동을 줄임~ 설명해줘 / ~를 정리해줘 / ~을 알려줘
맥락관련된 배경정보를 제공하여 요청의 이해를 돕고 응답의 품질을 올림대상이 ~이고 어떤 곳에 사용할 ~을 기반으로 / ~에 필요한
형식원하는 결과와 형식을 명시하여 유용한 정보 받기~ 개별 항목으로 알려줘 / ~ 표로 정리해줘
피드백결과에 대한 추가 요청이나 수정사항을 통해 AI의 응답 개선설명을 하는데 도움이 되는 ~ 예를 포함해줘 / 설명할 수 있는 근거를 ~ 해줘

Prompt Design Framework

항목설명
(1) Role / Persona (역할)모델이 수행해야 할 역할 또는 페르소나를 정의
(2) Audience (대상)결과물이 전달될 대상 또는 청중을 명확히 설정
(3) Knowledge / Information (지식 / 정보)작업에 필요한 배경 지식이나 정보를 제공
(4) Task / Goal (작업목표)모델이 수행해야 할 작업과 목표를 구체적으로 명시
(5) Policy / Rule, Style, Constraints (정책 / 규제, 스타일, 제약 사항)작업 수행 시 준수해야 할 규칙, 스타일, 제한 조건
(6) Format / Structure (형식 / 구조)결과물의 형식과 구조를 명확히 지정
(7) Examples (예시)원하는 결과물의 예시를 제공하여 모델의 이해를 돕기

1) Role / Persona (역할)

생성형 AI의 페르소나(역할)을 정의

당신은 10년 이상의 경력을 가진 디지털 마케팅 전문가입니다.


2) Audience (대상)

생성형 AI에게 누구에게 정보를 제공하는지 지정하여, 해당 대상에게 필요한 수준에 맞게 조정

초등학생에게 ~~


3) Knowledge / Information (지식 / 정보)

생성형 AI에게 누구에게 정보를 제공하는지 지정하여, 해당 대상에게 필요한 수준에 맞게 조정

질문과 관련하여 참고할 만한 지식과 정보를 함께 제공


4) Task / Goal (작업목표)

요청하는 질문이 불분명하면, AI도 모호한 답변을 할 가능성이 높음

명령을 반드시 포함해야 하며, 하나의 프롬프트에는 한 개의 Task만을 작성


5) Policy / Rule, Style, Constraints (정책 / 규제, 스타일, 제약 사항)

응답을 생성할 때 따라야 하는 정책, 스타일, 제약사항 등을 설정

성격, 어떤 분야의 전문 용어 사용 등을 제시


6) Format / Structure (형식 / 구조)

응답 형식 지정

테이블 형태, 500자 이내,,,


7) Examples (예시)

원하는 응답 형식이나 내용을 구체적인 예시를 제공하여 원하는 방향으로 응답 유도

Few-Shot learning


참고 MarkDown

마크다운을 활용하여 Prompt를 더욱 논리적이고 체계적으로 구성할 수 있음


[실습]

  • 시나리오

페르소나 5명에 대하여 심층 인터뷰, 소비자들의 관심사, Pain-Points를 도출

  • 목표 산출물
    1. 5개의 대표 페르소나 정의
    2. 페르소나 별 인터뷰 질의서
    3. 설문 조사 질의서

초보 러너를 위한 디지털 마케팅 기획 [2조]


User Prompt (사용자가 모델에게 전달하는 입력)

  • 목적: 사용자가 원하는 질문, 요청 또는 명령을 전달하여 모델이 적절한 출력을 생성하도록 유도.

  • 특징:

    • 자연어로 작성되어 모델이 작업을 이해하도록 설계.
    • 구체적이고 명확할수록 더 나은 결과를 얻을 가능성이 높음.
    • 사용자의 의도나 질문 중심으로 구성.
  • 예시:

    • "Python으로 리스트를 정렬하는 코드를 작성해주세요."

System Prompt (시스템 또는 개발자가 모델에게 설정하는 초기 지침)

  • 목적: 모델의 동작 방식, 응답 스타일, 또는 역할을 제어.

  • 특징:

    • 사용자가 직접 설정할 수 없는 경우가 많음 (백그라운드에서 작동).
    • 모델이 특정 역할을 수행하도록 지침을 제공.
    • 모델의 성격, 톤, 또는 특정 지식과 관련된 방향성을 설정하는 데 사용.
  • 예시:

    • "You are a helpful assistant. Act as a professional financial advisor."

상호작용 과정

즉, 사용자 입력(User Prompt)과 시스템 초기 지침(System Prompt)이 결합되어 최종적으로 출력 결과를 결정하게 됩니다.


User Prompt – Template

  • 정의: 사용자가 모델에 제공하는 입력.

  • 목적: Prompt 템플릿을 활용하여 특정 작업을 더 효율적으로 전달.

  • 장점:

    • 사용자가 입력한 형식으로 질문을 전달할 수 있음.
    • 잘 설계된 템플릿은 모델의 응답 품질을 높임.
  • 예시:

    "Please summarize the following text:\n\n{input_text}\n\nYour summary should be concise and clear."

    • {input_text}: 사용자가 입력하는 텍스트.
    • 사용자는 요구하는 내용만 제공하면, 템플릿이 이를 포맷팅하여 LLM(대규모 언어 모델)에 전달.

System Prompt – Template

  • 정의: 모델의 역할과 동작 방식을 정의.

  • 목적: Prompt 템플릿은 특정 역할이나 지침(Instruction)을 반복적으로 설정 및 적용할 때 유용.

  • 장점:

    • 특정 프로젝트에 맞는 역할 정의 가능.
    • 다양한 Context에 따라 조정 가능.
  • 예시:

    text"You are a professional {role}. Your job is to assist users by providing accurate and detailed information about {domain}. Respond in a helpful and professional manner."

    • 설정 변수: {role}, {domain} (예: role = "chef", domain = "Italian cuisine").
    • 사용자가 해당 변수에 해당하는 값을 입력받아 System Prompt가 완성되고 답변 제어 가능.

비교

항목User PromptSystem Prompt
역할사용자 요청 전달모델의 역할 및 동작 방식 정의
사용 목적특정 작업 요청모델의 응답 스타일 및 방향성 설정
구성 요소사용자 입력값 포함역할 및 도메인 관련 지침 포함
적용 방식사용자 요청마다 변경 가능일반적으로 고정되거나 미리 정의됨

이 두 요소는 협력하여 모델이 적절하고 효율적인 응답을 생성하도록 돕습니다.


Prompt Techniques

Zero-shot

  • 정의: 예제 없이 모델에 직접 작업을 요청하는 방식.

  • 특징:

    • 간단하고 빠르게 작업 가능.
    • 모델의 기본 추론 능력에 의존.
    • 작업 명령을 명확하게 작성해야 함.

Few-shot

  • 정의: 작업에 대해 몇 가지 예제를 제공하여 모델이 작업 패턴을 학습하도록 유도하는 방식.

  • 특징:

    • 모델의 성능을 향상시키는 데 효과적.
    • Prompt가 길어질수록 사용 가능한 Context Length가 줄어듦.

One-shot

  • 정의: 단 하나의 예제를 제공하여 작업 패턴을 보여주는 방식

  • 특징:

    • Zero-shot과 Few-shot의 중간 형태.
    • 예제 하나로도 성능 개선 가능.
    • Few-shot보다 간결한 Prompt가 필요할 때 유용.

Chain of Thought

  • 정의: 모델이 중간 사고 과정을 단계적으로 생성하도록 유도하는 방식.

  • 특징:

    • 복잡한 문제를 해결할 때 매우 유용.
    • 중간 과정이 명확하게 표현되며 정답 유도 가능.
    • 필요 시 Emotional Prompt 추가 활용 가능.

Instruction

  • 정의: 작업의 지시를 구체적으로 작성하여 모델이 작업을 수행하도록 유도하는 방식.
  • 특징:
    • 명령을 최대한 명확하고 구체적으로 작성.
    • Instruction Tuning을 통해 최적화된 표현 제공 (예: GPT-4, Claude 등).

Dynamic

  • 정의: 작업에 따라 실시간으로 Prompt를 생성하거나 수정하는 방식.

  • 특징:

    • 서비스 목표를 고려해 응답 형태를 보완하거나 성능 개선이 필요한 경우 적용.
    • 예시로는 Runnable 기능 활용 가능.

비교 요약

방식주요 특징활용 상황
Zero-shot예제 없이 간단히 요청빠르고 명확한 작업 요청
Few-shot몇 가지 예제로 학습 유도복잡한 패턴 학습 필요 시
One-shot하나의 예제로 간결하게 요청간단한 패턴 학습 필요 시
Chain of Thought중간 사고 과정을 단계적으로 생성복잡한 문제 해결
Instruction구체적인 지시를 통해 작업 수행명확하고 전문적인 응답 필요 시
Dynamic실시간으로 Prompt 생성 및 수정서비스 목표 및 성능 개선 요구 시

Feasibility 분석

Feasibility 분석은 특정 프로젝트, 사업 또는 아이디어의 실행 가능성을 평가하는 과정입니다.

이를 통해 해당 프로젝트가 성공적으로 수행될 수 있는지 판단하고, 필요한 자원, 잠재적 위험, 예상되는 이익 등을 분석합니다.

Feasibility 분석의 목적

  1. 실행 가능성 평가: 프로젝트가 실제로 실행 가능한지 여부를 확인.

  2. 위험 식별: 잠재적인 문제와 장애물을 사전에 파악.

  3. 대안 개발: 문제 해결을 위한 다양한 접근법과 대안을 제시.

  4. 결정 지원: 프로젝트 진행 여부에 대한 데이터 기반의 의사결정을 지원.

Feasibility 분석의 주요 유형

  1. 시장 타당성(Market Feasibility):

    • 시장 조사와 고객 니즈 분석을 통해 제품이나 서비스의 수요를 평가.
    • 경쟁 환경과 목표 시장을 파악.
  2. 기술적 타당성(Technical Feasibility):

    • 프로젝트에 필요한 기술 및 자원의 가용성을 평가.
    • 기술적 제약 사항과 해결 방안을 검토.
  3. 재무적 타당성(Financial Feasibility):

    • 비용 대비 수익을 분석하여 재정적 실현 가능성을 검토.
    • 투자 대비 예상 수익(Return on Investment, ROI)을 계산.
  4. 운영적 타당성(Operational Feasibility):

    • 조직 구조, 인력, 설비 등이 프로젝트를 성공적으로 지원할 수 있는지 평가.
  5. 법적 타당성(Legal Feasibility):

    • 프로젝트가 관련 법률 및 규정을 준수하는지 확인.

Feasibility 분석의 단계

  1. 예비 조사(Preliminary Analysis):

    • 초기 데이터를 수집하여 전체적인 실행 가능성을 평가.

    • 추가적인 상세 분석이 필요한지 결정.

  2. 시장 조사(Market Research):

    • 고객 요구와 경쟁 상황을 파악하여 시장 기회를 확인.
  3. 재무 예측(Financial Forecasting):

    • 예상 비용과 수익을 계산하여 경제적 타당성을 검토.
  4. 리스크 분석(Risk Assessment):

    • 외부 및 내부 위험 요소를 식별하고 이를 완화할 방법을 제안.
  5. 결론 도출(Conclusion):

    • 프로젝트 진행 여부에 대한 최종 판단과 권고 사항 제공.

Feasibility 분석의 주요 이점

  • 초기 단계에서 문제를 식별하여 위험을 최소화.

  • 실행 가능성이 높은 프로젝트에 자원을 집중할 수 있음.

  • 투자자와 이해관계자에게 신뢰를 제공하여 지원 확보 가능.

Feasibility 분석은 새로운 사업 시작, 제품 개발, 인프라 구축 등 다양한 분야에서 활용되며, 성공적인 프로젝트 수행을 위한 필수 과정으로 간주됩니다.


Langchain에서의 홀더

  • 메모리 홀더(Memory Holder)

랭체인에서 메모리를 사용할 때, 대화를 저장하고 관리하는 객체를 의미할 수 있다.


논문으로 보는 Prompt Engineering Tip

  • Few-Shot prompting은 모델의 파라미터 수가 충분히 클 때 효과가 있음.

  • 예시를 사용하면 모델의 성능을 향상시킴

  • 입력 라벨 형식을 유지하는 것이 모델 성능을 최적화하는데 필수적

0개의 댓글