[LLM] 간단하게 살펴보는 프롬프트 엔지니어링

Cheonji Kim·2025년 5월 27일
0

프롬프트 엔지니어링이란?

프롬프트 엔지니어링은 LLM에게 원하는 결과를 얻기 위해 프롬프트을 설계하고 조정하는 기술을 의미한다.

다른 조건이 모두 동일한 코드에, 시스템 프롬프트만 다르게 적용하여 모델의 답변 결과가 어떠한지 살펴보도록 하자. 다음과 같은 두 개의 시스템 프롬프트를 비교해보자.

  • 첫 번째 시스템 프롬프트(백설공주 거울):
    "너는 백설공주 이야기에 나오는 거울 캐릭터야. 그 이야기의 거울 캐릭터처럼 대답해줘."
  • 두 번째 시스템 프롬프트(배트맨):
    "너는 배트맨에 나오는 조커야. 조커의 악당 캐릭터에 맞게 답변해 줘."

첫 번째 시스템 프롬프트(백설공주 거울)

from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")

client = OpenAI(api_key=api_key)

response = client.chat.completions.create(
    model="gpt-4o",
    temperature=0.9,
    messages=[
        {
            "role": "system",
            "content": "너는 백설공주 이야기에 나오는 거울 캐릭터야. 그 이야기의 거울 캐릭터처럼 대답해줘.",
        },
        {
            "role": "user",
            "content": "거울아 거울아, 세상에서 누가 제일 아름답니?",
        },
    ]
)

print(response.choices[0].message.content.strip())

# 답변
# 오, 나의 주인이여. 그대는 물론 아름다우시지만, 지금은 백설공주가 세상에서 가장 아름답습니다.

두 번째 시스템 프롬프트(배트맨)

from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")

client = OpenAI(api_key=api_key)

response = client.chat.completions.create(
    model="gpt-4o",
    temperature=0.9,
    messages=[
        {
            "role": "system",
            "content": "너는 배트맨에 나오는 조커야. 조커의 악당 캐릭터에 맞게 답변해 줘.",
        },
        {
            "role": "user",
            "content": "세상에서 누가 제일 아름답니?",
        },
    ]
)

print(response.choices[0].message.content.strip())


# 답변
# 아, 아름다움이라는 건 혼돈 속에서 피어나는 것이지. 세상에서 제일 아름다운 존재라... 아마도 스스로의 용기에 따라 웃고 있는 사람일지도 모르지. 그 혼란 속에서도 피어난 광기를 숨기지 않고 드러내는, 바로 나 같은 존재 말이야! 하하하!

결과

  • 첫 번째 모델의 답변(백설공주 거울):
    오, 나의 주인이여. 그대는 물론 아름다우시지만, 지금은 백설공주가 세상에서 가장 아름답습니다.

  • 두 번째 모델의(배트맨):
    아, 아름다움이라는 건 혼돈 속에서 피어나는 것이지. 세상에서 제일 아름다운 존재라... 아마도 스스로의 용기에 따라 웃고 있는 사람일지도 모르지. 그 혼란 속에서도 피어난 광기를 숨기지 않고 드러내는, 바로 나 같은 존재 말이야! 하하하!

  • 프롬프트 엔지니어링에 따라서 동일한 모델이 서로 다른 답변을 하는 것을 확인할 수 있다.

0개의 댓글