Skip to main content

hallu_lab — LLM 할루시네이션 & 컨텍스트 소실 실습

LLM에서 나타나는 두 가지 현상을 직접 관찰하는 교육용 파이썬 패키지입니다.

  1. 할루시네이션(환각) — 모델이 모르는 것을 그럴듯하게 지어내는 현상
  2. 컨텍스트 정보 소실 — 문맥이 길어지거나 핵심 정보가 가운데 묻히면 놓치는 현상

두 가지 백엔드를 지원합니다.

백엔드 다운로드 설명
sim (기본) 없음 현상을 규칙으로 재현하는 시뮬레이터. 오프라인·즉시 실행. 개념 학습용.
ollama 모델 용량 실제 로컬 LLM. 더 현실적인 잡음 관찰 가능.

1. 설치

pip install -e .          # code 디렉토리에서 (시뮬레이터는 외부 의존성 없음)
# 주피터까지:  pip install -e ".[notebook]"

시스템 파이썬이 외부 관리(PEP 668) 상태라 설치가 막히면 가상환경을 쓰세요:

python3 -m virtualenv .venv && .venv/bin/pip install -e . ipykernel
.venv/bin/python -m ipykernel install --user --name hallu-lab --display-name "Python (hallu-lab)"

주피터에서 커널을 Python (hallu-lab) 로 선택하면 됩니다.


2. 빠른 사용

from hallu_lab import make_client, run_hallucination_demo, length_sweep, position_sweep, summarize

# 다운로드 없는 시뮬레이터 (기본)
client = make_client("sim", seed=0)

# 실습 A: 할루시네이션 — 가드레일 유무 비교
for r in run_hallucination_demo(client):
    r.show()

# 실습 B-1: 문서가 길어질수록 핵심 정보를 놓치는가 (길이 효과)
summarize(length_sweep(client, filler_sizes=[10, 100, 300, 600]))

# 실습 B-2: 핵심 정보 위치에 따른 차이 (lost-in-the-middle)
summarize(position_sweep(client, n_filler=120))

실제 로컬 LLM으로 바꾸려면 클라이언트 한 줄만 교체:

client = make_client("ollama", model="qwen2.5:0.5b", seed=0)  # 약 400MB
# 사전: pip install "hallu-lab[ollama]"  +  `ollama serve`  +  `ollama pull qwen2.5:0.5b`

단계별 실습은 examples/demo.ipynb 또는 examples/demo.py 참고.


3. 패키지 구조

파일 역할
hallu_lab/init.py make_client() 팩토리 + 공개 API
hallu_lab/simulated.py 다운로드 없는 시뮬레이터 (SimulatedClient)
hallu_lab/client.py 실제 Ollama 호출 래퍼 (OllamaClient)
hallu_lab/datasets.py 허구 질문 / 바늘·채움 텍스트 생성
hallu_lab/hallucination.py 할루시네이션 실습 (run_hallucination_demo, temperature_sweep)
hallu_lab/context_loss.py 컨텍스트 소실 실습 (length_sweep, position_sweep)

4. 실습 포인트 (강의용)

  • 가드레일 효과: "모르면 모른다고 하라"는 시스템 프롬프트를 줬을 때 할루시네이션이 줄어드는지 비교.
  • 온도(temperature): temperature_sweep로 온도 0은 동일, 높을수록 답이 흔들리는 것을 관찰.
  • 길이 효과: length_sweep에서 문서가 길어질수록 핵심 정보를 놓침. num_ctx를 작게(예: 512) 주면 창을 넘쳐 잘리는 현상을 더 극적으로 재현.
  • 위치 효과: position_sweep에서 보통 중앙(50%)에서 성공률이 가장 낮음 (lost-in-the-middle).

⚠️ 시뮬레이터(sim)는 진짜 신경망이 아니라 현상을 재현하는 규칙 기반 모형입니다. "정답"을 보는 게 아니라 실패 패턴/개념을 관찰하는 용도입니다.

Metadata

Release files for hallu-lab 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hallu-lab 0.2.0
File Size Uploaded
hallu_lab-0.2.0.tar.gz 14.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hallu-lab 0.2.0
File Interpreter ABI Platform
hallu_lab-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 31.3 kB

Release files / hallu_lab-0.2.0.tar.gz

Download URL hallu_lab-0.2.0.tar.gz
Size 14.8 kB
Tags Source
SHA-256 checksum
How to use checksums
3475ca881ed83734c4fa81b839531f22d3e6c3f0d5b37d1fe1bab4ec6311ed22
BLAKE2b-256 checksum
How to use checksums
2e79250de1052ac6737d4ac3f31237c29480da78f1db60d2b258680e019c3f01
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / hallu_lab-0.2.0-py3-none-any.whl

Download URL hallu_lab-0.2.0-py3-none-any.whl
Size 16.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e21b51cddfd6b8282dac9d152b7968d55e577f11cb53751758c7e88a2308bb2e
BLAKE2b-256 checksum
How to use checksums
5e5204d8abde89ebb837b1245d24d8ccbeab6116b0d32ce7d437a4d542e033a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page