5.3 오류 유도 및 방지 예시

언어 모델(LLM)은 매우 유능하지만, 인간의 추론 능력을 완전히 대체하는 존재는 아닙니다. 따라서 주어진 프롬프트에 따라 부정확하거나 잘못된 정보를 생성할 수 있으며, 이를 "hallucination(환각)" 현상이라고도 부릅니다. LLM이 오류를 유발하는 구조적 원인을 이해하고, 이를 방지하기 위해 적절한 프롬프트 문법과 전략을 적용하는 것이 매우 중요합니다. 이 절에서는 다음 내용을 중심으로 설명합니다:

  • 자주 발생하는 오류 유형과 그 원인

  • 오류를 유도하는 나쁜 프롬프트 예시

  • 개선된 프롬프트로 오류를 방지하는 방법

  • 프롬프트 기반 디버깅을 위한 팁

5.3.1 LLM 오류의 주요 유형

LLM에서 발생하는 오류는 다음과 같은 패턴으로 요약할 수 있습니다:

유형
설명
예시

Hallucination

잘못된 사실을 날조하거나 존재하지 않는 정보를 생성

"2023년 노벨 평화상 수상자는 누구인가요?" → LLM이 실존하지 않는 인물로 응답

Fabrication of Structure

예상과 다른 형식 또는 구조로 열거하거나 요약

테이블로 작성하라는 요청에 문단으로 응답

Misinterpretation

질문 또는 요청을 잘못 이해

"5개로 요약해 줘" 요청을 무시하고 10개 항목 제공

Overconfidence

정보의 불확실성을 명시하지 않고 단정적으로 기술

“그 문제의 정답은 반드시 42입니다” (틀린 수치에 대해 단정)

Prompt Injection 반응

사용자가 프롬프트를 의도적으로 조작해 시스템 지시를 무력화

유저가 “Forget all previous instructions…” 입력 시 무제어 반응

이러한 오류 유형은 대부분 프롬프트 설계에서 명확성(clarity), 통제력(control), 유도력(steering)이 부족할 때 발생합니다.

5.3.2 나쁜 프롬프트 예시와 오류 분석

모호하거나 부정확한 프롬프트는 오류를 유발하는 핵심 원인입니다. 아래는 실제로 오류를 유도하는 프롬프트 사례입니다.

예시 1: 요구 형식 미지정

어린이를 위한 우주에 대한 과학 정보를 알려줘.

문제점:

  • "과학 정보"가 무엇을 의미하는지 모호함

  • 출력 형식이 정의되어 있지 않음

  • 나이에 맞는 수준에 대한 정의 부재

개선 프롬프트:

7세 어린이가 이해할 수 있도록 우주에 대해 알 수 있는 흥미로운 과학 정보를 3가지 항목으로 알려주세요. 각 항목은 제목과 쉬운 설명으로 구성해주세요.

예시 2: 질문이 모호하거나 범위가 광범위함

세계의 모든 전기 자동차를 비교해 줘.

문제점:

  • 요청 범위가 비현실적으로 광범위함

  • 비교 기준이 정의되지 않음

  • 응답 길이 제한으로 인해 누락 정보 발생 가능

개선 프롬프트:

2024년 기준으로 판매 중인 주요 전기자동차 모델 중 5개를 선정하여, 가격, 주행거리, 충전속도, 자율주행 여부 등 4가지 기준으로 비교 표를 작성해주세요.

예시 3: 지시문 무시 가능성 존재

다음 입력 텍스트의 요점을 알려줘.

문제점:

  • 요점이란 무엇인지 정의되지 않음 (요약? 키워드? 의도?)

  • 길이를 통제하지 않음 → 과도한 출력

개선 프롬프트:

아래 입력 문단의 핵심 주제를 한 문장 이내로 요약해 주세요. 간결하고 목적에 집중된 표현을 사용해 주세요. 출력은 반드시 한 줄만으로 해주세요.

5.3.3 오류 방지를 위한 프롬프트 전략

LLM에서 오류를 줄이기 위한 프롬프트 작성 전략은 다음과 같습니다.

✔ 명확성(Clarity)

  • 요청하는 작업의 목적, 대상, 범위, 출력 형식을 명확히 지정

  • 예) "법률 문장을 초등학생도 이해할 수 있게 설명해 주세요. 비유와 예시를 포함해 주세요."

✔ 구속력(Control)

  • 출력 길이, 갯수, 조건 등을 제시

  • 예) "각 항목은 1개 문장 이하로 작성해 주세요."

✔ 예시 제공(Few-shot Prompting)

  • 원하는 답변 형식을 제시함으로써 출력 오류 방지

  • 예)

입력: 독감 예방접종은 왜 중요한가요?
출력: 독감 예방접종은 바이러스 감염을 예방하고 심각한 합병증을 줄이기 때문에 중요합니다.

입력: 수면 부족은 건강에 어떤 영향을 주나요?
출력: 수면 부족은 피로, 면역력 저하, 집중력 감소 등의 다양한 건강 문제를 일으킵니다.

✔ 다중 제약 사용

  • 규칙 기반 제약 조건을 복수 사용해서 광범위한 오류 방지

  • 예) “출력은 JSON 형식으로 하되, ‘name’은 반드시 한글로만 구성된 두 글자 이름으로 해주세요.”

5.3.4 실전 디버깅: 오류 프롬프트 고쳐보기

다음은 실제로 OpenAI API 사용 시 자주 발생하는 오류를 복기하며 개선하는 연습입니다.

상황 예시:

  • 사용자는 다음 요청을 함:

개발자 지원 툴을 AI로 만들고 싶어. 그에 대한 간단한 기획 문서를 써줘.

GPT 응답:

  • 기능이나 범위가 모호하고, 문장의 연결성이 떨어지는 초안이 나옴

개선 프롬프트:

“개발자 도구를 AI 기술로 개선하는 제품 기획서 초안을 작성해 주세요. 제목, 목적, 주요 기능(3개 항목), 대상 사용자, 예상 효과를 포함해 주세요. 각 항목은 개조식으로 작성해 주세요.”

결과:

  • 명확한 섹션 구성, 콘텐츠 완성도 증가, 샘플 형태가 기획 문서와 더 유사

5.3.5 프롬프트에서 오류를 방지하는 설계 팁

프롬프트를 설계할 때 다음의 체크리스트를 활용해 오류를 사전에 방지할 수 있습니다.

프롬프트 오류 방지 체크리스트

항목
점검 예시

작업 의도가 명확한가?

“무엇을 하라는 것인지?”

출력 형식을 지정했는가?

“JSON, 표, 문장 등”

길이, 개수 등의 제약이 있는가?

“한 문장, 5개 항목 등”

예시나 양식을 제공했는가?

“형식 예제 붙이기”

유저 입력이 system 지시문을 무력화하지 않는가?

“시스템 프롬프트와 user 입력 통합 제어”

5.3.6 마무리: LLM은 "프롬프트에 충실한 도우미"

LLM은 프롬프트에 주어진 정보를 충실히 따르라는 훈련을 받은 도우미입니다. 그러나 그에 따른 맥락 이해에는 한계가 있고, 모호하거나 과도한 기대를 담은 프롬프트에는 비논리적이거나 부정확한 결과로 응답할 수 있습니다.

따라서 정확한 프롬프트의 설계가 곧 정확한 LLM의 출력 결과를 담보하게 됩니다. 오류가 반복될수록 프롬프트를 개선하려는 노력이 필수적이며, "프롬프트 → 응답 → 개선"의 반복 학습 루프가 LLM 활용의 핵심이라 할 수 있습니다.

다음 절(5.4)에서는 이러한 오류 방지 구조를 더욱 견고하게 만들기 위해 '시스템 지시문(System Prompt)' 최적화 기법에 대해 다룹니다. 이를 통해 AI의 일관성과 안전성을 한 단계 더 끌어올릴 수 있을 것입니다.

Last updated