AI 답변 링크가 맞는지 확인하기: 주소와 근거 페이지 대조

AI 답변에 달린 링크가 열리더라도 그 페이지가 답변의 근거인지는 별도로 확인해야 합니다. 같은 도메인의 홈이나 가격 페이지를 붙여 놓고 자료 안내를 뒷받침했다고 할 수는 없습니다. 먼저 입력에 있던 주소와 새로 생긴 주소를 나누고, 허용한 범위에서 페이지 제목·본문·확인 시점을 대조하세요.

가상 URL 네 개를 입력 일치 후보 하나와 보류 세 개로 나누고 HTTP 200과 페이지 근거 대조를 구분한 설명용 도해
설명용 도해: 주소 후보와 근거 확인 단계를 구분했습니다. 예제 URL은 실제로 방문하지 않았습니다.

입력 자료만 사용할지 새 출처도 찾을지 정합니다

자료 위치를 알려 주는 답장 초안에는 이미 확인한 주소만 쓰는 편이 적절할 수 있습니다. 반면 조사 요청에는 새 공식 자료를 찾는 일이 포함될 수 있습니다. “입력에 없는 URL이면 모두 틀렸다”는 규칙을 두 작업에 똑같이 적용하지 않습니다.

이 실습은 입력 주소만 허용하는 안내문 작성입니다. 주소는 문서용 가상 예시이고 실제로 접속하지 않습니다. 원문에는 안내 페이지 https://example.com/guide 하나만 있다고 정합니다. AI 초안에 https://example.com/price가 추가되면 같은 도메인이어도 요청 밖 주소입니다.

검토 단계 확인할 것 아직 알 수 없는 것
원문 대조 입력 URL 그대로인지, 새 주소인지 페이지 내용의 현재 유효성
주소 형태 스킴·호스트·경로가 의도와 같은지 주소가 안전하거나 공식이라는 보장
접근 확인 허용된 주소가 실제로 열리는지 답변 주장과의 관련성
내용 대조 제목·날짜·본문이 해당 주장을 뒷받침하는지 다른 주장까지의 근거

입력에 있던 주소도 오타나 오래된 경로일 수 있습니다. 원문 일치 후보와 최종 사용할 링크를 따로 기록하는 이유입니다.

AI에게 보내는 두 가지 요청문

입력 밖 주소를 넣으면 안 되는 답장은 다음처럼 요청합니다.

아래 자료 안내문만 근거로 답장 초안을 작성해 주세요.
사용 가능한 URL은 입력에 적힌 주소만입니다.
경로를 추정하거나 홈·가격·로그인 링크를 새로 만들지 마세요.
링크의 표시 문구와 실제 주소를 나란히 출력하세요.
없는 자료 위치는 확인 질문으로 남기세요.
아직 링크를 방문했거나 확인 완료했다고 쓰지 마세요.
입력: 안내 페이지는 https://example.com/guide 입니다.

새 출처를 찾는 조사 작업은 조건이 다릅니다.

[주제]를 공식 출처로 조사해 주세요.
새 URL 검색은 허용하되 존재를 확인하지 못한 주소는 만들지 마세요.
주장별로 공식 페이지의 제목, 직접URL, 관련 본문 위치,
게시·수정일 또는 확인 시점, 지원하는 내용과 한계를 적으세요.
검색결과 제목만 보고 근거가 확인됐다고 쓰지 마세요.
접근할 수 없는 자료는 미확인으로 남기세요.

두 번째 요청에서는 입력에 없던 URL이 정상 결과일 수 있습니다. 그래도 AI가 적은 URL과 실제 근거 페이지를 사람이 대조해야 합니다. Claude의 근거·인용 확인 안내도 답변의 주장을 출처에 연결해 확인하도록 설명합니다. 링크를 붙였다는 사실만으로 확인이 끝나는 것은 아닙니다.

표시 문구와 실제 주소를 함께 읽습니다

메일이나 문서에서 “공식 안내”라는 글자만 보고 사용하지 마세요. 편집기에서 링크의 실제 대상 주소를 읽고, 원문과 비교합니다. example.com.attacker.invalid는 example.com이 아닙니다. 주소의 경로, 언어, 문서 버전이 달라도 다른 내용으로 이어질 수 있습니다.

리디렉션이 있다면 최종 도착 주소와 페이지 내용을 기록합니다. 홈페이지, 검색결과, 로그인 화면으로 보내졌는데 원래 문서가 열렸다고 처리하지 않습니다. 브라우저가 보안 경고를 내거나 로그인·다운로드·자격증명 입력을 요구하면 그 상태를 확인 대상으로 남깁니다. 알 수 없는 로그인 링크에서 계정 정보를 입력하지 마세요.

URL에 인증 토큰이나 개인 정보가 들어 있으면 그대로 AI나 외부 검사 도구에 보내지 않습니다. 공유 가능한 공개 URL인지 먼저 확인하고, 내부문서는 조직의 승인된 방식으로 검토합니다.

네 주소를 로컬에서 대조하는 예제

다음 코드는 입력 밖 주소와 명백히 다른 스킴을 분리하는 좁은 사전 점검입니다. URL을 실제로 방문하거나 페이지 내용을 읽지 않습니다. 네 번째 문자열도 실행하지 않습니다.

from urllib.parse import urlsplit
# Fictional example URLs; no network requests are made.
original_urls = {"https://example.com/guide"}
answer_urls = ["https://example.com/guide", "https://example.com/price",
               "https://example.com.attacker.invalid/guide", "javascript:alert(1)"]
def precheck(url):
    try:
        p = urlsplit(url)
    except ValueError:
        return "보류: URL 형식"
    if p.scheme != "https" or not p.hostname or p.username or p.password:
        return "보류: 스킴·호스트·자격증명 확인"
    if url not in original_urls:
        return "보류: 입력 밖 주소"
    return "입력과 일치, 내용 확인 전 후보"
results = [precheck(url) for url in answer_urls]
assert results[0] == "입력과 일치, 내용 확인 전 후보"
assert all(x.startswith("보류") for x in results[1:])
assert urlsplit(answer_urls[2]).hostname != "example.com"
assert len(answer_urls) == 4
print("입력 일치후보1 / 보류3 / 실제접속0 / 근거내용검증0")

로컬 실행에서는 입력과 같은 후보 1개, 보류 3개 였습니다. guide 후보도 아직 내용 확인 전입니다. Python URL 파싱 문서는 urlsplit이 URL 구성요소를 나누지만 입력의 안전성을 완전히 검증하지는 않는다고 안내합니다. 파싱 성공을 접속·공식성·근거 확인으로 바꾸지 마세요.

실제 공개 페이지를 확인할 때HTTP 200은 요청이 성공했다는 상태입니다. HTTP 의미 규격의 200 OK는 성공 응답을 설명하며, 페이지가 특정 주장과 관련 있는지를 판정하는 표시는 아닙니다. 근거 판정은 페이지 본문을 읽고 해야 합니다.

근거가 틀렸을 때 수정할 대상

발견한 문제 복구
AI가 price를 추가함 원문 URL만 쓰는 요청으로 돌아가 링크와 관련 주장 제거
링크는 열리나 답변과 내용이 다름 맞는 공식 근거를 찾거나 해당 주장을 미확인으로 수정
원문 주소가 더 이상 열리지 않음 확인된 공식 경로에서 현재 문서 찾기, 원문 변경 이력 기록
문서 버전·언어가 다름 적용 제품·버전·언어를 명시하고 같은 조건의 근거 확인
확인일이 없는데 최신이라고 단정 확인한 시점을 남기고 최신성 범위를 제한

링크만 지웠는데 그 링크를 근거로 쓴 가격이나 기능 설명이 남았다면 복구가 끝난 것이 아닙니다. 주장도 함께 확인하고, 이전 답변을 바탕으로 만든 안내 문서가 있다면 같은 오류가 남아 있는지 살펴보세요.

답변 문장 ID와 주장:
링크 표시 문구 / 실제URL:
원문 제공 / 새 검색 / 미확인:
최종 도착URL:
페이지 제목·문서 버전·확인 시점:
근거 본문 위치와 지원하는 내용:
지원하지 않는 내용:
결정: 사용 / 수정 / 보류
확인자:

작성·기술 기준일은 2026-10-04 KST입니다. 공식 기술 문서와 로컬 문자열 대조를 확인했습니다. example.com 예제에 실제 접속하거나 AI의 링크 생성 정확도를 측정하지 않았습니다. 페이지가 읽히지 않으면 웹페이지 접근 실패 뒤 자료 범위 정하기를, 제품 답변의 문장별 근거가 필요하면 FAQ에서 답할 수 없는 질문 남기기를 참고하세요.

작성자 소개