🦋 SKALA: SK AX AI Leader Academy

1. 소개

LLM을 사용할때 명령을 어떻게 내리느냐에 따라서 결과가 많이 달라진다. 우리는 보통 이때 프롬프트 엔지니어링을 통해 내가 원하는 바가 LLM에게 잘 전달되게 노력해보자!

프롬프트 엔지니어링은 사용자의 의도를 인공지능이 이해할 수 있는 최적의 형태로 변환하는 기술이다. 단순히 질문을 던지는 것보다 모델이 사고할 수 있는 프레임워크를 제공할 때 답변의 일관성과 품질이 상승한다..! 아니 상승할 수 있는 가능성이 높아진다. RAG나 모델 튜닝 이전에 가장 적은 비용으로 효과를 볼수 있는 프롬프트 엔지니어링을 공부해보자.



2. LLM 핵심 파라미터

대규모 언어 모델(LLM)을 활용할 때, 단순히 좋은 프롬프트를 작성하는 것만큼 중요한 것이 파라미터 설정이다. 동일한 입력값이라도 파라미터 설정에 따라 모델의 응답은 논리적이고 정교해질 수도, 혹은 창의적이고 자유로워질 수도 있다. 주요 파라미터인 Temperature, Top-K, Top-P 등이 모델의 텍스트 생성 메커니즘에 어떤 영향을 주는지 정리해보자.


2-1. Temperature

Temperature 는 모델이 다음 토큰을 선택할 때 확률 분포의 첨도를 조절하는 역할을 한다.


2-2. Top-K

Top-K 는 모델이 예측한 토큰들 중 확률이 높은 순서대로 상위 K개만을 후보군으로 남기고 나머지는 배제하는 방식이다.

2-3. Top-P

현업에서 가장 빈번하게 사용되는 방식인 Top-P는 누적 확률을 기준으로 후보군을 선정한다. 상위 토큰들의 확률을 합산했을 때 특정 임계값 p를 넘지 않는 지점까지만 후보로 포함한다.


2-4. Output Length

출력 길이를 제한하는 파라미터이다. 단순히 글자 수를 맞추는 것이 아니라, 모델이 생성할 수 있는 최대 토큰 수를 지정한다. 효율적인 리소스 관리와 의도한 형식의 응답을 얻기 위해 적절한 프롬프트 설계와 병행되어야 한다.


2-5. LLM 파라미터 요약

LLM 파라미터 조정은 결국 확률의 제어 이다. 과제의 성격이 정답이 하나로 정해진 수학 문제라면 Temperature 를 0으로 설정하여 엄밀함을 확보해야 하고, 사용자와의 자유로운 대화나 창작이 목적이라면 이를 높여 유연함을 부여해야 한다. 각 파라미터가 확률 분포에 미치는 영향을 정확히 이해할 때, 모델의 성능을 한계치까지 끌어낼 수 있다.



3. RICE

특히 효율적인 프롬프트 구성을 위해 RICE (Role, Instruction, Context, Example) 개념을 적용하면 보다 정교한 제어가 가능하다.


RICE 개념을 적용한 구조적 프롬프트 예시

RICE 프레임워크를 모두 활용하여 기술적인 코드 리뷰를 요청하는 프롬프트의 예시를 한번 살펴보자.

# Role
너는 10년 차 이상의 시니어 백엔드 개발자이자 보안 아키텍트이다. 
주니어 개발자가 작성한 코드를 꼼꼼하게 검토하고 피드백을 주는 역할을 수행한다.

# Instruction
1. 제시된 코드의 로직상 오류나 비효율적인 부분을 찾아낸다.
2. OWASP Top 10을 기준으로 보안 취약점이 있는지 점검한다.
3. 개선된 코드를 제시하고, 왜 그렇게 수정해야 하는지 이유를 설명한다.

# Context
- 언어 및 환경: Node.js (Express)
- 상황: 사용자로부터 입력받은 ID를 통해 데이터베이스에서 회원 정보를 조회하는 API이다.
- 제약 사항: 설명은 기술적인 용어를 사용하되 명확해야 하며, 답변은 Markdown 형식을 유지한다.

# Example
입력: function(data) { console.log(data); }
출력: [로직 리뷰] 단순 출력 함수입니다. [개선] 화살표 함수를 사용하면 더 간결합니다.


# Input Code
function getUser(userId) {
    const query = "SELECT * FROM users WHERE id = '" + userId + "';";
    return db.execute(query);
}


4. Shot

RICE 를 직접 활용해보면 알겠지만, 그냥 단도직입적으로 LLM에게 질의하는 것보다 조금 더 내가 원하는 정보와 응답을 받아내기 용이하다. 이때, 모델에게 제공하는 예시의 양에 따라 성능과 효율성이 달라짐을 어느정도 느낄 수 있을 것이다. 이제 RICE의 Example 요소를 좀 더 구체화한 Shot 기법에 대해서 알아보자.

4-1. Zero-shot

지시: 다음 문장의 감성을 '긍정' 또는 '부정'으로 분류하라.
문장: "오늘 새로 산 키보드의 타건감이 생각보다 훨씬 부드럽다."
결과: ~~

4-2. One-shot

지시: 기술 용어를 초등학생도 이해할 수 있게 비유로 설명하라.
예시: "데이터베이스는 정리 정돈이 잘 된 거대한 도서관과 같다."
작업: "API를 비유로 설명하라."
결과: ~~

4-3. Few-shot

지시: 사용자 문의 사항을 카테고리별로 분류하고 중요도를 측정하라.

예시 1: "결제가 안 돼요." -> [카테고리: 결제], [중요도: 상]
예시 2: "아이디를 변경하고 싶어요." -> [카테고리: 계정], [중요도: 중]
예시 3: "앱 화면에 오타가 있어요." -> [카테고리: UI/UX], [중요도: 하]

작업: "로그인이 계속 실패하고 서버 에러 메시지가 뜹니다."
결과: ~~


5. 아주아주 간단한 논문 리뷰

Gemini로 요약

5-1. Model Size and Few-shot

Language Models are Few-Shot Learners (Brown et al. 2020)


5-2. 예시의 품질

Rethinking the Role of Demonstrations: What Makes In-Context Learning Work? (Min et al. 2022)


5-3. 친절 vs 무례

Should We Respect LLMs? (2024.02)

5-4. 감정을 담아 질의하기

Large Language Models Understand and Can be Enhanced by Emotional Stimuli (2023.11)

5-5. Temperature와 Hallucination

Is Temperature the Creativity Parameter of Large Language Models (2024.05)



6. Reference



🦋 SKALA: SK AX AI Leader Academy