목차
Claude 가이드 - 이 글은 시리즈의 일부입니다.
이 글은 Claude API 공식 문서의 Citations 페이지를 정리한 글입니다. 원문: https://platform.claude.com/docs/en/build-with-claude/citations 마지막 확인: 2026-05-19
1. 한 줄 요약 #
Claude가 답변할 때마다 “이 말은 어느 자료 몇 페이지에서 가져왔어요"라고 자동으로 꼬리표를 달아주는 기능입니다.
2. 무엇이고 왜 좋을까 #
서점에서 책을 사면 끝에 색인이 있죠. “사과 — 32쪽, 사과나무 — 105쪽” 하는 그 페이지 번호. Citations는 AI가 자기 답변에 알아서 색인을 달아주는 기능입니다. 답변 한 줄 한 줄에 “이건 ○○자료 ○쪽” 식의 출처가 자동으로 따라붙어요.
왜 좋을까요? AI는 가끔 그럴듯하지만 사실은 자료에 없는 말을 만들어내기도 합니다. 흔히 **환각(hallucination)**이라고 부르는 현상이에요. Citations를 켜두면 답변 문장마다 출처가 명시되니까, 출처가 없는 문장은 곧바로 의심해볼 수 있습니다. Anthropic 평가에 따르면 직접 시키는 방식보다 관련 있는 인용을 더 잘 찾아오는 것으로 나타났고, 인용된 문장 자체(cited_text)는 출력 토큰으로 계산되지 않아 비용도 절약됩니다.
3. 이런 상황에서 써요 #
상황 1: 학생 — 강의 PDF에서 답을 찾을 때 #
기말고사가 코앞인데, 교수님이 올려주신 강의 PDF가 300쪽이에요. Claude에게 “이 자료에서 ‘확증 편향’이 뭐라고 설명하나요?“라고 물어보면, 그냥 답만 주는 게 아니라 “47쪽: 확증 편향이란 자기 믿음에 맞는 정보만 받아들이는 경향이다” 같이 출처를 함께 보여줍니다. 시험 정답을 따로 펼쳐서 확인할 필요 없이, 페이지로 바로 가서 맞는지 확인하면 끝이에요.
상황 2: 직장인 — 회사 매뉴얼·정책에 질문할 때 #
회사 인사 정책 문서가 100쪽이 넘어요. 신입사원이 “출산 휴가는 며칠인가요?“라고 물어보면, AI가 “60일입니다"라고만 답하면 좀 불안하죠. 출처가 있다면 이야기가 달라집니다. Claude는 **“인사 규정 23쪽 — 출산 휴가는 90일이며, 그중 60일은 유급이다”**처럼 회사 공식 문서 어디에서 가져왔는지 짚어줍니다. 답을 그대로 메일에 인용해도 부담이 적어지고, 잘못된 정보로 직원에게 안내할 위험도 크게 줄어들어요.
상황 3: 일반인 — 두꺼운 책 한 권을 정리할 때 #
전자책으로 산 자기계발서 한 권을 정리하고 싶어요. 그냥 “요약해줘"라고 하면 어디서 나온 얘기인지 알 수 없는 일반론이 나오기 쉽습니다. 책 본문을 함께 주고 Citations를 켜두면, “스트레스 해소법으로 저자가 추천하는 세 가지는 → 본문 4장에서 ①산책, ②종이에 적기, ③잠 충분히 자기로 정리되어 있습니다” 식으로 본문 어디를 보고 한 말인지 함께 와요. 나중에 그 부분만 다시 펼쳐 읽기에도 좋습니다.
4. 가볍게 시작하기 #
💻 개발 경험이 있으신가요? 아래는 Python 기준 가장 짧은 예시입니다. 비개발자라면 “아, 이렇게 짧은 한 줄로 켜는 거구나” 정도로 보고 넘어가셔도 좋습니다.
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
messages=[{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "text",
"media_type": "text/plain",
"data": "잔디는 초록색입니다. 하늘은 파란색입니다.",
},
"title": "예시 문서",
"citations": {"enabled": True}, # ← 이 한 줄이 출처 기능
},
{"type": "text", "text": "잔디와 하늘은 무슨 색인가요?"},
],
}],
)
print(response)핵심은 자료를 document라는 블록에 담아 보내고, 그 안에 "citations": {"enabled": True} 한 줄을 넣는 것입니다. 그러면 답변이 여러 조각으로 나뉘어 돌아와요. 어떤 조각은 그냥 문장이고, 어떤 조각에는 cited_text(인용된 원문), document_title(어느 자료인지), 위치 정보(글자 위치/페이지 번호)가 함께 붙어 있습니다. 우리는 이걸 화면에 보기 좋게 풀어주기만 하면 끝이에요.
5. 흔한 오해와 함정 #
⚠️ 함정 1: “켜기만 하면 무조건 정확하겠죠?” #
Citations는 “AI가 자료 어디를 보고 한 말인지” 알려주는 기능이지, **“그 말이 옳은지”**를 판정하는 기능이 아닙니다. 즉, 자료 자체가 틀렸거나 오래된 정보라면 출처는 정확해도 답은 틀릴 수 있어요. 출처는 의심을 줄여주는 도구이지, 진실 검증기는 아니라는 점을 꼭 기억해주세요.
⚠️ 함정 2: “어, 그런데 왜 출처가 안 보이지?” #
자료 일부에만 Citations를 켜고 일부는 끄면 동작하지 않습니다. 공식 문서에 따르면 한 번의 요청 안에서는 모든 자료에 켜거나, 모두 끄거나 둘 중 하나여야 해요. 또 하나, 스캔본 PDF(글자가 아닌 이미지로 된 PDF)는 본문 글자를 뽑아내지 못해 출처를 달 수 없습니다. 가능하면 글자가 살아 있는 PDF나 텍스트 파일을 쓰는 게 안전합니다.
⚠️ 함정 3: “JSON으로 깔끔하게 받고 싶은데 안 되네요?” #
Citations는 구조화 출력(Structured Outputs) 기능과 함께 쓸 수 없습니다. 둘 다 켜면 오류가 나요. Citations는 답변 사이사이에 출처 조각을 끼워 넣는 방식이라, JSON 같은 엄격한 형식과 충돌하기 때문입니다. “출처를 받을지, 깔끔한 JSON을 받을지” 둘 중 하나를 골라야 합니다. 보통은 출처 쪽이 훨씬 도움이 돼요.
6. 한 단계 더 (관심 있는 분만) #
🎯 여기까지 오신 분 환영합니다. 이 섹션은 좀 더 깊이 알고 싶으신 분을 위한 보너스입니다. 본문만 읽으셔도 충분합니다.
자료가 길어지면(예: 회사 매뉴얼 100쪽) 매번 전체를 다시 보내기 부담스럽죠. 이때는 #1 가이드에서 다뤘던 프롬프트 캐싱과 함께 쓰는 게 좋습니다. 자료 블록 안에 cache_control만 추가하면, 같은 자료는 잠깐 기억해두고 다음 질문부터는 훨씬 빠르고 싸게 처리됩니다.
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
messages=[{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "text",
"media_type": "text/plain",
"data": "(여기에 긴 매뉴얼 본문)",
},
"citations": {"enabled": True}, # 출처 켜기
"cache_control": {"type": "ephemeral"}, # 잠깐 기억해두기
},
{"type": "text", "text": "출산 휴가 정책이 어떻게 되나요?"},
],
}],
)또 하나 알아두면 좋은 점은 자료 종류에 따라 출처 단위가 다르다는 것입니다.
| 자료 종류 | 출처가 가리키는 단위 | 어디에 좋을까 |
|---|---|---|
| 일반 텍스트 | 문장 단위 (글자 위치) | 짧은 자료, 산문 |
| 문장 단위 (페이지 번호) | 보고서, 책 | |
| Custom content | 내가 정한 덩어리 | 회의록, 표, 항목별 자료 |
회의록처럼 “발언자 한 명당 한 덩어리"로 인용받고 싶다면 Custom content 방식이 잘 맞습니다.
7. 한 마디 #
Citations는 “AI 답변을 어디까지 믿어야 할까?” 하는 막연한 불안을 한 줄 옵션으로 줄여주는 기능입니다. 처음엔 설정값이 좀 복잡해 보여도, 사실은 자료에 "citations": {"enabled": True} 한 줄 추가하는 것뿐이에요. 출처가 안 보이거나 오류가 난다면 함정 1~3 중 하나일 가능성이 큽니다 — 자료를 일부에만 켰는지, 스캔본 PDF인지, 구조화 출력과 같이 켰는지 점검해보세요.
다음 가이드에서는 Streaming — 답변을 한 글자씩 흘려보내며 받기를 다룰 예정입니다. ChatGPT처럼 글자가 또르륵 흘러나오는 그 효과, 어떻게 만드는지 천천히 풀어드릴게요.
Claude API 공식 문서를 한국어로 풀어쓴 시리즈입니다. 원문 정확성이 가장 우선, 의역과 친근함은 그 위에서.
— 키스 드림