"""
Bonus:亲手重现"核辐射条款被切断"的教学失败场景(完整可运行)
------------------------------------------------
环境:Python3.12独立venv；与同章PDF练习使用同一已实测组合。
依赖:python -m pip install langchain==0.1.20 langchain-community==0.0.38 langchain-text-splitters==0.0.2 pypdf==4.3.1
设一个极小的 chunk_size,看关键的"除外"语义怎么被切到下一块。
"""
from langchain.text_splitter import RecursiveCharacterTextSplitter

text = "本保险承保意外伤害导致的身故或残疾,但以下情况除外:(1)战争 (2)核辐射"

# 极小的 chunk_size,并让它在冒号/句号处断开,演示"从中间切断"的风险
splitter = RecursiveCharacterTextSplitter(
    chunk_size=30, chunk_overlap=0, separators=[":", "。", ""]
)
chunks = splitter.split_text(text)

for i, c in enumerate(chunks):
    print(f"Chunk {i}: {c}")

# 实际输出:
# Chunk 0: 本保险承保意外伤害导致的身故或残疾,但以下情况除外
# Chunk 1: :(1)战争 (2)核辐射
#
# Chunk 0 只到"但以下情况除外"就断了,除外哪些(战争、核辐射)全在 Chunk 1。
# 用户问"核辐射在不在保障范围",检索只命中 Chunk 0,模型看不到核辐射属于除外项,
# 于是可能回答"在保障范围内"——这是教学演练要展示的错误传播路径。
