Rust CLI 및 라이브러리  /  MIT

모델이 확신하지 못한 단어를 찾아냅니다.

토큰 로그 확률(logprobs)이 포함된 LLM 답변을 넣어 주세요. 모델의 확신이 떨어진 단어를 표시하고, 대신 말할 뻔했던 후보를 보여 줍니다. 저장된 응답을 오프라인으로 분석하거나, OpenAI 호환 API에 실시간으로 질문할 수 있습니다.

cargo install llm-token-visualizer

Windows용 다운로드 (.exe)

Rust가 설치되어 있다면 위 명령어로도 됩니다. macOS와 Linux 빌드는 최신 릴리스에 있습니다.

표시된 구간과 모델이 고려한 후보

Llama 3.1 8B Instruct의 실제 응답이며 examples/logprobs/에 포함되어 있습니다. 탐지는 CLI와 같은 규칙으로 브라우저에서 실행됩니다. 단어에 마우스를 올리거나 탭하면 확률과 대안 후보가 보입니다. OpenAI, OpenRouter, Together 키가 있다면 브라우저에서 바로 직접 질문해 보세요.

터미널에서

명령어 한 줄, API 키 필요 없음.

저장된 Chat Completions 응답을 지정하기만 하면 됩니다. 답변이 히트맵으로 표시되고, 표시된 각 구간마다 가장 약한 토큰의 후보가 나열되며, --fail-on-flag를 쓰면 CI 게이트가 됩니다.

cuyp 샘플의 터미널 출력: 답변에서 Aelbert와 Dordrecht에 밑줄이 있고, 그 아래 대안 후보 막대: A 0.49, The 0.43, D 0.08 및 ord 0.57, üsseldorf 0.39, elf 0.03.
llm-token-visualizer --logprobs-file examples/logprobs/cuyp.json --threshold 0.6
git clone https://gitlab.com/mattbusel/LLM-Hallucination-Detection-Script
# offline, on a bundled real response
cargo run -- --logprobs-file examples/logprobs/cuyp.json --threshold 0.6

# all four samples through the library API
cargo run --example detect

# live: ask a model, analyze its answer
export OPENAI_API_KEY=sk-...
cargo run -- --live "Who was the second person to walk on the Moon?" \
  --save answer.json

라이브 모드에는 프리셋이 있습니다: --provider openai, openrouter, together, vllm, ollama(로컬, 키 필요 없음). logprobs를 반환하는 다른 서버도 --base-url로 쓸 수 있습니다. Anthropic API는 logprobs를 반환하지 않습니다.

동작 원리

규칙 네 가지, 별도 모델 없음.

두 번째 LLM도, 임베딩도, 오프라인 모드에서의 네트워크 호출도 없습니다. 모델이 이미 준 숫자를 꼼꼼히 읽을 뿐입니다.

애니메이션 다이어그램: 실제 Llama 3.1 답변의 각 토큰은 p = e^logprob 값과 빨간색부터 회색까지의 색을 받는다. 토큰이 단어로 합쳐지고, 임계값 0.6보다 낮은 토큰이 있는 단어가 표시된다(Aelbert p 0.49, Dordrecht p 0.57). 표시된 각 구간에는 모델이 고려한 후보 The 0.43과 üsseldorf 0.39가 나온다.
알 수 없는 것

모델은 자신 있게 틀릴 수 있습니다.

토큰 확률이 낮다는 건 살펴볼 곳이라는 뜻이지 사실 확인이 아닙니다. 아래 포함된 답변은 틀렸는데, 탐지기는 이를 잡아내지 못합니다.

틀린 이름은 표시되지 않음

두 번째로 달에 간 사람은 Buzz Aldrin입니다. 모델은 Pete Conrad의 모든 토큰에 최소 0.72를 주었고, 어느 위치에서 반환한 상위 3개 후보에도 Aldrin은 없었습니다.

대신 표시된 것

표현에 쓰인 단어들입니다. 표시는 어디부터 확인할지 정하는 데 쓰고, 답변이 맞다고 보증하는 데는 절대 쓰지 마세요.

출력 형식

터미널, HTML, Markdown, JSON.

같은 리포트를 워크플로에 맞는 형태로. 네 가지 모두 CLI가 같은 탐지 결과로 만들어 냅니다.

--format html

독립 실행형 단일 페이지: 스크립트도, 외부 리소스도 없고 라이트/다크 모드를 지원합니다. 단어에 마우스를 올리면 대안 후보가 보입니다.

eiffel 샘플의 다크 모드 HTML 리포트, 표시된 구간 4개와 확률 막대.
llm-token-visualizer --logprobs-file answer.json --format html -o report.html

--format markdown

풀 리퀘스트, 이슈, $GITHUB_STEP_SUMMARY에 그대로 붙여 넣으세요.


      

--format json 및 --fail-on-flag

기계가 읽을 수 있는 구간을 출력하고, 하나라도 표시되면 종료 코드 2를 반환하므로 파이프라인에서 답변을 검토로 보낼 수 있습니다.

llm-token-visualizer --logprobs-file answer.json \
  --fail-on-flag --format json -o report.json