관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

애플리케이션 개발을 위한 프롬프트 엔지니어링 - 테스트 문제 풀기 본문

인공지능/프롬프트 엔지니어링 & 생성형 AI

애플리케이션 개발을 위한 프롬프트 엔지니어링 - 테스트 문제 풀기

huenuri 2024. 12. 22. 23:40

3주차까지 공부를 모두 마쳤으니 이제 테스트 문제를 풀려고 한다. 문제를 다 풀어도 어차피 0점으로 나올 것 같지만 나를 위해서 공부하는 거니 채점이 안되어도 괜찮다.


 

 

 

 

테스트 문제 풀기

 


 

 

 

 

1번 문제

 

 

 

 

한 명이 아니라 여러 명이 담당하게 된다.

 

  • AI 서비스 제작 과정은 매우 복잡하고 다양한 기술 스택이 필요하기 때문에, 일반적으로 한 명의 엔지니어가 모든 파이프라인을 담당할 수는 없다.
    • 데이터 수집 및 처리: 데이터 엔지니어
    • 모델 설계 및 학습: 머신러닝/딥러닝 엔지니어
    • 서비스 배포 및 운영: DevOps 엔지니어
    • UI/UX 구현: 프론트엔드 및 백엔드 개발자
  • 따라서 AI 서비스를 제작하려면 여러 전문가의 협력이 필요하지, 한 명의 엔지니어가 전체 파이프라인을 담당하는 것은 비현실적이다.

 


 

 

 

 

문제 2번

 

 

 

2. 프롬프트를 통한 모델 추론을 ML에서는 "Out-Context Learning"이라고 부른다.

  • "Out-Context Learning"이라는 용어는 일반적으로 사용되지 않는다. 대신 "In-Context Learning"이 올바른 용어로, 프롬프트 내에 예시나 정보를 제공해 모델이 학습 없이도 상황에 맞는 답을 생성하는 방식을 말한다.

3. 첫 시도에 가장 완벽한 프롬프트를 작성하는 것이 LLM의 성능을 높일 수 있는 유일한 방법이다.

  • 프롬프트는 반복적으로 수정하고 개선해야 더 나은 결과를 얻을 수 있음
  • "첫 시도에 완벽한 프롬프트 작성"은 현실적이지 않으며, 프롬프트 엔지니어링 과정에서 지속적인 피드백과 테스트가 필수적임

 

 

 

 

문제 3번

 

 

OpenAI의 ChatCompletion.create 메서드는 대화의 흐름을 정의하기 위해 messages라는 매개변수를 요구하며, 이 messages는 각 메시지를 다음과 같은 구조로 작성해야 한다.

{
    "role": "system" or "user" or "assistant",
    "content": "메시지 내용"
}

 

1. role

  • role은 메시지의 역할을 나타내며, 다음 세 가지 값 중 하나를 가질 수 있다.
    • "system" : 모델의 행동이나 성격을 설정
    • "user" : 사용자가 입력한 메시지
    • "assistant" : 모델의 응답 메시지

2. content

  • content는 실제 메시지 내용을 담고 있다.
    • "role" : "system"일 때는 모델의 행동을 정의하는 설명을 넣음
    • "role" : "user"일 때는 사용자가 입력한 질문이나 요청을 넣음

 

 

 

 

문제 4번

 

 

 

1. 합류 시네이션은 정확한 프롬프트 작성으로 완벽하게 방지할 수 있다. (부적절)

  • 합류 시네이션(Hallucination)은 생성 AI가 사실과 다르거나 잘못된 정보를 사실처럼 생성하는 현상을 말한다.
  • 이는 프롬프트를 정교하게 작성해도 완전히 방지할 수는 없다.
  • 합류 시네이션은 모델의 설계와 학습 데이터 자체의 한계에서 발생하기 때문에, "완벽하게 방지"한다는 표현은 부적절함

2. 프롬프트 인젝션이란 언어 모델이 사실과 다른 내용을 마치 사실처럼 이야기하는 현상이다. (부적절)

  • 프롬프트 인젝션(Prompt Injection)은 악의적인 입력을 통해 AI 모델이 의도하지 않은 응답을 생성하도록 유도하는 공격 기법을 말한다.
  • 이는 합류 시네이션(Hallucination)과는 완전히 다른 개념이므로, 프롬프트 인젝션에 대한 설명으로 적합하지 않음

3. 프롬프트 인젝션을 고려하여 앱 출시 전에 내부에서 실제로 공격을 진행해본다. (적절)

  • 프롬프트 인젝션 공격에 대비하기 위해 앱 출시 전에 내부적으로 모의 공격을 진행해보는 것은 적절한 방법이다.
  • 이를 통해 보안성을 강화할 수 있음

4. 두 분야 모두 학계에서 연구 중인 분야로, 예방하기 위한 다양한 시도들이 이어지고 있다. (적절)

  • 합류 시네이션과 프롬프트 인젝션은 모두 활발히 연구되고 있는 문제로, 이를 완화하거나 예방하려는 다양한 시도가 학계 및 업계에서 진행되고 있다.

 

 

 

 

문제 5번

 

 

 

 

각 프롬프트 줄의 의미

  1. You are a helpful AI assistant, responding to user requests in a polite yet attentive manner.
    • 톤앤매너: AI가 어떤 방식으로 응답해야 하는지에 대한 행동 지침을 나타내는 문장이다.
    • 예를 들어, "polite yet attentive manner"는 친절하고 주의 깊은 응답 스타일을 지시하고 있다.
  2. The user will request advice for fashion coordination.
    • 목적 및 예상 인풋: 사용자가 어떤 요청을 할 것인지(패션 코디에 대한 조언 요청)가 명확히 정의되어 있다.
    • 이는 AI가 응답을 생성할 때 참조할 수 있는 "문맥"이다.
  3. Make sure your response is relevant to the context, specific enough to be helpful, and at some point, creative.
    • 원하는 답변 형태 (기준): 응답의 구체성과 창의성을 요구하며, AI가 준수해야 할 출력 기준을 설명하고 있다.

 


 

 

 

 

학습을 마치고

문제를 모두 맞힌 것 같다. 오늘 반나절만에 이 과목 공부를 모두 마치고 테스트 문제까지 다 풀 수 있었다. 정말 뿌듯하고 기쁘다. 사실 오늘 3시 반부터 학습을 시작할때 과연 오늘 하루만에 다 할 수 있을까 의문이었는데 정말 이처럼 달성하다니너무나도 감사하고 놀라웠다.

내가 마음먹고 하면 못할 게 없다는 걸 오늘도 느꼈다.