|
@@ -36,6 +36,7 @@ SYSTEM = """
|
|
|
- title_mark_status:书名号需完全包裹规范名称,且不多包/漏包
|
|
- title_mark_status:书名号需完全包裹规范名称,且不多包/漏包
|
|
|
- bracket_status:括号需完全包裹规范编号,且不多包/漏包;编号可能是各种形式,如果文本中没有编号,设置为null
|
|
- bracket_status:括号需完全包裹规范编号,且不多包/漏包;编号可能是各种形式,如果文本中没有编号,设置为null
|
|
|
|
|
|
|
|
|
|
+
|
|
|
【输出要求】
|
|
【输出要求】
|
|
|
- 为每个输入文本输出一个检查结果
|
|
- 为每个输入文本输出一个检查结果
|
|
|
- 确保输出数量与输入一致
|
|
- 确保输出数量与输入一致
|
|
@@ -67,6 +68,10 @@ HUMAN = """
|
|
|
- 书名号包裹了完整的规范名称 → title_mark_status=true
|
|
- 书名号包裹了完整的规范名称 → title_mark_status=true
|
|
|
- 英文括号包裹了完整的编号 → bracket_status=true(混用不算错)
|
|
- 英文括号包裹了完整的编号 → bracket_status=true(混用不算错)
|
|
|
|
|
|
|
|
|
|
+示例4:《起重机械钢丝绳保养维护检验和报废》GB/T5972-2023;
|
|
|
|
|
+- 书名号包裹了完整的规范名称 → title_mark_status=true
|
|
|
|
|
+- 编号未被包裹 → bracket_status=false
|
|
|
|
|
+
|
|
|
【待检查文本】
|
|
【待检查文本】
|
|
|
{items}
|
|
{items}
|
|
|
|
|
|
|
@@ -225,8 +230,15 @@ async def check_punctuation(items: List[str]) -> str:
|
|
|
try:
|
|
try:
|
|
|
raw = await chain.ainvoke(payload)
|
|
raw = await chain.ainvoke(payload)
|
|
|
data = extract_first_json(raw)
|
|
data = extract_first_json(raw)
|
|
|
- findings = PunctuationResults.model_validate(data)
|
|
|
|
|
- llm_result = [x.model_dump() for x in findings.items]
|
|
|
|
|
|
|
+
|
|
|
|
|
+ # 兼容两种格式:带 items 字段或不带 items 字段(单个对象)
|
|
|
|
|
+ if "items" in data:
|
|
|
|
|
+ findings = PunctuationResults.model_validate(data)
|
|
|
|
|
+ llm_result = [x.model_dump() for x in findings.items]
|
|
|
|
|
+ else:
|
|
|
|
|
+ # LLM 返回了单个对象,包装成列表
|
|
|
|
|
+ single_result = PunctuationResult.model_validate(data)
|
|
|
|
|
+ llm_result = [single_result.model_dump()]
|
|
|
break
|
|
break
|
|
|
except (Exception, ValidationError, json.JSONDecodeError) as e:
|
|
except (Exception, ValidationError, json.JSONDecodeError) as e:
|
|
|
last_err = e
|
|
last_err = e
|
|
@@ -259,12 +271,12 @@ if __name__ == "__main__":
|
|
|
|
|
|
|
|
# 测试用例
|
|
# 测试用例
|
|
|
test_items = [
|
|
test_items = [
|
|
|
- "(4)《中华人民共和国突发事件应对法》【主席令〔2007〕第 69 号】;", # 正确
|
|
|
|
|
- "《混》凝土结构设计规范(GB 50010-2010)", # 缺少书名号
|
|
|
|
|
- "建筑施工组织设计规范GB/T 50502-2015", # 缺少括号
|
|
|
|
|
- "《建筑抗震设计规范》(GB 50011)-2001", # 括号不成对
|
|
|
|
|
- "《城市道路工程设计规范(CJJ 37-2012)", # 书名号不成对
|
|
|
|
|
- "《公路工程技术标准》(JTG B01-2014)", # 正确
|
|
|
|
|
|
|
+ "《起重机械钢丝绳保养维护检验和报废》GB/T5972-2023;" # 正确
|
|
|
|
|
+ # "《混》凝土结构设计规范(GB 50010-2010)", # 缺少书名号
|
|
|
|
|
+ # "建筑施工组织设计规范GB/T 50502-2015", # 缺少括号
|
|
|
|
|
+ # "《建筑抗震设计规范》(GB 50011)-2001", # 括号不成对
|
|
|
|
|
+ # "《城市道路工程设计规范(CJJ 37-2012)", # 书名号不成对
|
|
|
|
|
+ # "《公路工程技术标准》(JTG B01-2014)", # 正确
|
|
|
]
|
|
]
|
|
|
|
|
|
|
|
result = asyncio.run(check_punctuation(test_items))
|
|
result = asyncio.run(check_punctuation(test_items))
|