콘텐츠로 이동

환각 방어책

Hallucination Guardrail은 AI가 생성한 콘텐츠가 사실에 기반하고 환각이 포함되어 있지 않은지 검증하는 엔터프라이즈 기능입니다. 이 기능은 작업 출력물을 참조 컨텍스트와 비교 분석하여, 잠재적으로 환각이 감지되었을 때 상세한 피드백을 제공합니다.

환각(Hallucinations)이란 무엇인가요?

섹션 제목: “환각(Hallucinations)이란 무엇인가요?”

AI 환각은 언어 모델이 그럴듯해 보이지만 사실과 다르거나 제공된 맥락에 의해 뒷받침되지 않는 내용을 생성할 때 발생합니다. Hallucination Guardrail은 다음과 같은 방법으로 이러한 문제를 방지합니다:

  • 출력물을 참조 맥락과 비교
  • 원본 자료에 대한 충실도 평가
  • 문제 있는 콘텐츠에 대한 상세 피드백 제공
  • 검증 엄격성을 위한 사용자 정의 임계값 지원
from crewai.tasks.hallucination_guardrail import HallucinationGuardrail
from crewai import LLM
# Basic usage - will use task's expected_output as context
guardrail = HallucinationGuardrail(
llm=LLM(model="gpt-4o-mini")
)
# With explicit reference context
context_guardrail = HallucinationGuardrail(
context="AI helps with various tasks including analysis and generation.",
llm=LLM(model="gpt-4o-mini")
)
from crewai import Task
# Create your task with the guardrail
task = Task(
description="Write a summary about AI capabilities",
expected_output="A factual summary based on the provided context",
agent=my_agent,
guardrail=guardrail # Add the guardrail to validate output
)

보다 엄격한 검증을 위해 사용자 지정 신뢰성 임계값(0-10 범위)를 설정할 수 있습니다:

# Strict guardrail requiring high faithfulness score
strict_guardrail = HallucinationGuardrail(
context="Quantum computing uses qubits that exist in superposition states.",
llm=LLM(model="gpt-4o-mini"),
threshold=8.0 # Requires score >= 8 to pass validation
)

작업에서 도구를 사용할 때 더 정확한 검증을 위해 도구 응답을 포함할 수 있습니다:

# Guardrail with tool response context
weather_guardrail = HallucinationGuardrail(
context="Current weather information for the requested location",
llm=LLM(model="gpt-4o-mini"),
tool_response="Weather API returned: Temperature 22°C, Humidity 65%, Clear skies"
)
  1. 컨텍스트 분석: 가드레일은 작업 결과를 제공된 참조 컨텍스트와 비교합니다.
  2. 정확성 점수 부여: 내부 평가자를 사용하여 정확성 점수(0-10)를 부여합니다.
  3. 판단 결정: 콘텐츠가 정확한지 또는 환각이 포함되어 있는지 결정합니다.
  4. 임계값 확인: 사용자 지정 임계값이 설정된 경우 해당 점수와 비교하여 검증합니다.
  5. 피드백 생성: 검증에 실패할 때 상세한 사유를 제공합니다.
  • 기본 모드: 판정 기반 검증(FAITHFUL vs HALLUCINATED)을 사용함
  • 임계값 모드: 신뢰성 점수가 지정된 임계값에 도달하거나 이를 초과해야 함
  • 오류 처리: 평가 오류를 우아하게 처리하고 유익한 피드백을 제공함

가드레일은 검증 상태를 나타내는 구조화된 결과를 반환합니다:

# Example of guardrail result structure
{
"valid": False,
"feedback": "Content appears to be hallucinated (score: 4.2/10, verdict: HALLUCINATED). The output contains information not supported by the provided context."
}
  • valid: 출력이 검증을 통과했는지 여부를 나타내는 불리언 값
  • feedback: 검증 실패 시 상세 설명. 다음을 포함:
    • 신뢰도 점수
    • 판정 분류
    • 실패의 구체적인 이유

가드레일이 태스크에 추가되면, 태스크가 완료로 표시되기 전에 출력값이 자동으로 검증됩니다:

# Task output validation flow
task_output = agent.execute_task(task)
validation_result = guardrail(task_output)
if validation_result.valid:
# Task completes successfully
return task_output
else:
# Task fails with validation feedback
raise ValidationError(validation_result.feedback)

guardrail은 CrewAI의 이벤트 시스템과 통합되어 가시성을 제공합니다:

  • 검증 시작됨: guardrail 평가가 시작될 때
  • 검증 완료됨: 평가가 결과와 함께 종료될 때
  • 검증 실패: 평가 중 기술적 오류가 발생할 때
  1. 포괄적인 컨텍스트 제공

    AI가 출력할 때 기반이 되어야 할 모든 관련 사실 정보를 포함하세요:

    context = """
    Company XYZ was founded in 2020 and specializes in renewable energy solutions.
    They have 150 employees and generated $50M revenue in 2023.
    Their main products include solar panels and wind turbines.
    """
  2. 관련 있는 컨텍스트만 유지하기

    혼란을 피하기 위해 작업과 직접적으로 관련된 정보만 포함하세요:

    # Good: Focused context
    context = "The current weather in New York is 18°C with light rain."
    # Avoid: Unrelated information
    context = "The weather is 18°C. The city has 8 million people. Traffic is heavy."
  3. 컨텍스트를 정기적으로 업데이트하기

    참고하는 컨텍스트가 최신이고 정확한 정보를 반영하는지 확인하세요.

  1. 기본 검증으로 시작하기

    맞춤 임계값 없이 시작하여 기준 성능을 파악합니다.

  2. 요구사항에 따라 조정하기
    • 중요 콘텐츠: 최대 정확도를 위해 임계값 8-10 사용
    • 일반 콘텐츠: 균형 잡힌 검증을 위해 임계값 6-7 사용
    • 창의적 콘텐츠: 임계값 4-5 또는 기본 판정 기반 검증 사용
  3. 모니터링 및 반복

    검증 결과를 추적하고, 오탐/미탐을 기반으로 임계값을 조정합니다.

  • 검증 오버헤드: 각 가드레일마다 작업당 약 1~3초가 추가됩니다
  • LLM 효율성: 평가에는 효율적인 모델을 선택하세요 (예: gpt-4o-mini)
  • 모델 선택: guardrail 평가에는 더 작고 효율적인 모델을 사용하세요
  • 컨텍스트 크기: 참조 컨텍스트는 간결하면서도 포괄적으로 유지하세요
  • 캐싱: 반복적인 콘텐츠의 검증 결과를 캐싱하는 것을 고려하세요
검증이 항상 실패함

가능한 원인:

  • 컨텍스트가 너무 제한적이거나 작업 결과와 관련이 없음
  • 임계값이 콘텐츠 유형에 비해 너무 높게 설정됨
  • 참조 컨텍스트에 오래된 정보가 포함되어 있음

해결 방법:

  • 작업 요구사항에 맞게 컨텍스트를 검토하고 업데이트하세요
  • 임계값을 낮추거나 기본 판정 기반 검증을 사용하세요
  • 컨텍스트가 최신이며 정확한지 확인하세요
오탐 (유효한 콘텐츠가 무효로 판정됨)

가능한 원인:

  • 창의적이거나 해석적인 작업에 임계값이 너무 높음
  • 컨텍스트가 결과의 모든 유효한 측면을 포함하지 않음
  • 평가 모델이 과도하게 보수적임

해결 방법:

  • 임계값을 낮추거나 기본 검증을 사용하세요
  • 폭넓은 허용 가능한 콘텐츠를 포함하도록 컨텍스트를 확장하세요
  • 다른 평가 모델로 테스트하세요
평가 오류

가능한 원인:

  • 네트워크 연결 문제
  • LLM 모델 사용 불가 또는 속도 제한
  • 잘못된 형식의 작업 출력 또는 컨텍스트

해결 방법:

  • 네트워크 연결 및 LLM 서비스 상태를 확인하세요
  • 일시적 오류에 대해 재시도 로직을 구현하세요
  • guardrail 평가 전에 작업 출력 형식을 검증하세요

도움이 필요하신가요?

환각 guardrail 구성 또는 문제 해결에 도움이 필요하시면 지원팀에 문의하세요.