跳到文章正文
Claude 实用教程

Claude API文档引用怎么开启?citations、原文位置与证据核对

在Messages文档块开启citations,读取引用对象而非只看回答文字;正确处理文档索引、…

应用让Claude根据文档回答,单在提示里写“请附来源”,可能只得到人工生成的页码或一句笼统说明。Messages API提供citations功能,把回答与所给文档的具体位置关联。本文用一份虚构规则文本展示启用、读取与人工核对,不实际调用付费API,也不把有效引用指针等同于结论一定充分。

第一步:准备可引用的文档内容

当前支持PDF、纯文本和自定义内容文档,引用针对文本,不能直接引用图片。PDF里纯图片的图表或扫描文字不能默认获得文本引用,先确认有可提取内容。文档title与context是辅助元数据,不是可引用正文,重要证据应放source内容中。

本例使用自己写的两句练习规则,避免真实客户资料。多份文档时保持稳定顺序并记录对应版本;同一请求目前要求所有文档都开启引用或都不开,不能只在某个块启用后期待任意混用。普通网页或第三方聊天不一定暴露这些API参数。

第二步:在document块开启引用

import anthropic

client = anthropic.Anthropic()
response = client.messages.create(
    model="claude-opus-5-5", max_tokens=1024,
    messages=[{"role":"user","content":[
        {"type":"document",
         "source":{"type":"text","media_type":"text/plain",
                   "data":"练习规则:提交材料需要项目编号。普通问题在三个工作日内回复。"},
         "title":"练习规则A", "citations":{"enabled":True}},
        {"type":"text","text":"提交需要什么?回复期限是什么?逐项回答并引用原文,未知内容不补充。"}
    ]}],
)
for block in response.content:
    if block.type == "text":
        print(block.text)
        for citation in block.citations or []:
            print(citation.model_dump())

示例通过已配置环境认证,不含真实密钥。模型按账号当前可用范围核对;代码只做示范,不代表已在你环境运行。读取每个text块的citations,不只把所有文本拼接后丢弃引用对象,否则前端可能无法知道哪句话对应哪段证据。

第三步:解释位置字段的口径

document_index从零开始,对应请求中的文档顺序。纯文本字符区间从零开始、结束索引不包含;PDF页码从一开始,结束页也不包含。不能把结束页直接显示为“包含该页”的范围,或把字符索引当字节偏移来裁剪UTF-8原文。

不同语言对Unicode字符串索引有不同处理方式,前端如要高亮,应按实际字符模型验证,不凭视觉长度猜切片。自定义内容引用使用块索引,同样需要回到原内容列表,不套用PDF页码逻辑。保留cited_text有助于人工核对。

第四步:核对引用是否支持整句结论

证据验收:文档编号是否正确;引用原文是否包含所需条件;回答有没有把“工作日”改成“自然日”;是否额外补上未给出的负责人、价格或生效日期;没有证据的字段是否明确未知。

API保证的有效位置指针,不保证每个论断都由那段文字充分支持。练习规则只说普通问题三个工作日回复,不能扩写成紧急请求也必定如此。引用系统帮助追溯,应用仍应检查语义、条件和文档版本。

第五步:处理与其他格式的冲突

citations不能与output_config.format结构化输出在同一请求同时启用,官方说明这类组合会400。需要每字段引用时,可先要求逐字段文字和引用,再按实际块结构在应用中处理,不强制“只输出JSON”后指望仍保留完整引用。

保存结果时保留回答、文档版本与位置映射,别只存一串孤立页码。对于缺失引用、拒绝或不完整回答,按真实状态处理,不补造来源。完成标准是每项重要答案可回到正确原文,引用粒度与索引口径正确,且结论没有超出材料。

文档索引跨请求中的全部document块按顺序计算,不能只在最后一条用户消息里重新编号。应用保存来源映射时应与实际发送顺序一致。

官方资料

资料核对日期:2026年11月9日。

本文地址:https://www.163264.com/20112