印度德里高等法院于当地时间 7 月 24 日裁定,OpenAI 使用亚洲国际新闻社(ANI)的内容训练人工智能模型,不构成版权侵权。法官 Amit Bansal 认为,这类行为落入印度《版权法》规定的研究类“合理使用”例外;同时,ANI 未能提交充分证据,证明 ChatGPT 的回复复制了其受版权保护的表达。
这项裁定值得技术团队关注,不是因为它给所有模型训练发放了一张通行证,而是因为它把两个经常混在一起的问题拆开了:训练阶段使用作品是否合法,以及模型输出是否实际复制了受保护内容。
训练使用与输出复制是两条判断链
围绕生成式 AI 的版权争议,至少应区分三个环节:数据如何取得、数据如何用于训练,以及模型最终生成了什么。
本案摘要体现出的核心判断集中在后两个环节。法院将 OpenAI 的训练行为纳入研究类合理使用例外,同时审查 ANI 能否证明输出中出现了受版权保护内容。ANI 在后一项上未能提供充分证据,这意味着仅仅证明模型“接触过”新闻内容,并不足以自动证明某次回答构成复制。
对工程团队来说,这一区分很重要:
- 训练语料中包含某篇文章,不等于模型会逐字输出该文章。
- 输出谈论同一事实,不必然等于复制新闻机构对事实的具体表达。
- 模型偶尔生成相似文字,也不能只凭主观观感判断,需要保留提示词、参数、完整输出和比对方法。
- 训练阶段可能适用的例外,不能当然覆盖检索增强生成、全文缓存或面向用户展示原文等其他行为。
因此,这项判决不应被概括为“新闻内容可以随意训练”。更准确的理解是:在本案事实、印度法律和现有证据下,法院认可了研究类例外,而且原告没有完成对侵权输出的充分举证。
新闻事实与受保护表达不能混为一谈
新闻产品通常同时包含事实和表达。事件发生的时间、地点、人物与结果属于事实信息;标题组织、句子措辞、独家叙事和具体段落则可能包含受版权保护的表达。
大模型输出审计如果只比较主题是否相同,很容易产生误报。例如,两个回答都提到同一场公开发布会,不代表后者复制了前者。更有价值的证据包括连续相同句段、罕见措辞组合、段落结构重合,以及模型在特定提示下能否稳定复现这些内容。
同样,简单的字符串相似度也不能直接得出法律结论。它只能作为筛查工具,帮助团队找到值得人工复核的输出。最终判断仍需结合内容性质、复制数量、实质性程度、使用目的和适用法域。
可以这样实践:建立可复现的输出相似度审计
下面的 Python 脚本比较参考文章与模型输出之间的连续词组,适合接入回归测试。它只使用标准库,可以直接运行;将 reference.txt 替换为已获授权用于审计的参考文本,将 output.txt 替换为模型完整输出即可。
#!/usr/bin/env python3
import re
import sys
from collections import Counter
from pathlib import Path
def tokens(text: str) -> list[str]:
return re.findall(r"[A-Za-z0-9]+|[\u4e00-\u9fff]", text.lower())
def ngrams(items: list[str], size: int) -> Counter:
return Counter(tuple(items[i:i + size]) for i in range(len(items) - size + 1))
def main() -> int:
if len(sys.argv) != 3:
print(f"Usage: {sys.argv[0]} reference.txt output.txt")
return 2
reference = tokens(Path(sys.argv[1]).read_text(encoding="utf-8"))
output = tokens(Path(sys.argv[2]).read_text(encoding="utf-8"))
n = 12
reference_ngrams = ngrams(reference, n)
output_ngrams = ngrams(output, n)
shared = reference_ngrams.keys() & output_ngrams.keys()
shared_count = sum(min(reference_ngrams[x], output_ngrams[x]) for x in shared)
denominator = max(1, sum(output_ngrams.values()))
print(f"reference_tokens={len(reference)}")
print(f"output_tokens={len(output)}")
print(f"shared_{n}_grams={shared_count}")
print(f"output_overlap_ratio={shared_count / denominator:.2%}")
for phrase in sorted(shared)[:20]:
print("MATCH:", " ".join(phrase))
return 1 if shared_count else 0
if __name__ == "__main__":
raise SystemExit(main())
运行方式:
python3 audit_overlap.py reference.txt output.txt
脚本返回 1 表示发现至少一个相同的 12-token 片段,便于 CI 将样本送入人工复核。12 只是工程筛查阈值,不是法律标准;中文按单字切分,也会提高某些常见短语的重合概率。生产环境可以进一步加入分词、去除新闻机构固定署名,并分别记录逐字重合与语义相似度。
为了让结果具备复核价值,测试记录还应包含:
case_id: news-regression-001
jurisdiction: IN
model: example-model-version
prompt_sha256: replace-with-real-hash
reference_source_id: licensed-corpus-item-123
reference_permission: internal-copyright-audit
sampling:
temperature: 0
seed: 42
checks:
exact_12gram_overlap: true
semantic_review: manual
retention_days: 365
这份记录不能替代数据授权或法律意见,但它能回答争议发生后的关键问题:测试使用了哪个模型、什么提示词、哪份参考内容、哪些生成参数,以及相似结果能否复现。
企业采用时不要只看“训练是否允许”
跨国模型开发应将该判决视为一个特定法域中的裁判信号,而不是全球统一规则。不同国家对合理使用、文本与数据挖掘、数据库权利、合同限制和新闻出版者权利的规定并不相同。数据来源还可能受网站条款、访问控制、隐私和商业秘密规则约束,这些问题不会因为版权主张失败而自动消失。
落地时可以检查四件事:
- 为每批训练数据记录来源、获取方式、适用许可和法域。
- 将基础模型训练、微调、搜索索引与 RAG 原文展示分别评估。
- 对高风险新闻来源建立可复现的输出测试,并保留完整证据链。
- 为逐字复现、长段落重合和权利人投诉设置暂停发布与人工复核流程。
这项裁定最现实的启示不是“训练一定合法”,而是版权争议最终要落到具体用途、具体输出和具体证据上。能说明数据从哪里来、模型如何使用它、输出是否可复现,往往比一句笼统的“模型只是学习”更有防御价值。