|
@@ -12,7 +12,7 @@ def map_prompt(question: str, format_context: str) -> str:
|
|
|
' "claims": [\n'
|
|
' "claims": [\n'
|
|
|
' {"point": "事实要点1(尽量原文转述/精准改写)"},\n'
|
|
' {"point": "事实要点1(尽量原文转述/精准改写)"},\n'
|
|
|
' {"point": "事实要点2"}\n'
|
|
' {"point": "事实要点2"}\n'
|
|
|
- ' ],\n'
|
|
|
|
|
|
|
+ " ],\n"
|
|
|
' "conflicts_or_limits": ["该片段的限制/含糊点(如时间、定义口径、版本号等)"]\n'
|
|
' "conflicts_or_limits": ["该片段的限制/含糊点(如时间、定义口径、版本号等)"]\n'
|
|
|
"}"
|
|
"}"
|
|
|
)
|
|
)
|
|
@@ -89,7 +89,7 @@ def merge_prompt(question: str, rag_answer: str, formatted_contexts: str) -> str
|
|
|
' "external_claims": [\n'
|
|
' "external_claims": [\n'
|
|
|
' {"claim":"外部补充要点1","note":"来源类型/可信度(如:官网/百科/标准) [EXT]"},\n'
|
|
' {"claim":"外部补充要点1","note":"来源类型/可信度(如:官网/百科/标准) [EXT]"},\n'
|
|
|
' {"claim":"外部补充要点2","note":"… [EXT]"}\n'
|
|
' {"claim":"外部补充要点2","note":"… [EXT]"}\n'
|
|
|
- ' ],\n'
|
|
|
|
|
|
|
+ " ],\n"
|
|
|
' "gaps": ["仍然缺失或无法确认的信息"]\n'
|
|
' "gaps": ["仍然缺失或无法确认的信息"]\n'
|
|
|
" }\n"
|
|
" }\n"
|
|
|
"}\n"
|
|
"}\n"
|
|
@@ -104,7 +104,7 @@ def build_rag_prompt(
|
|
|
contexts: List[Dict],
|
|
contexts: List[Dict],
|
|
|
mode: str = "single", # single | map | reduce | rerank | verify | merge
|
|
mode: str = "single", # single | map | reduce | rerank | verify | merge
|
|
|
max_chars_per_chunk: int = 800,
|
|
max_chars_per_chunk: int = 800,
|
|
|
- draft_answer: Optional[str] = None, # verify/merge 用:RAG 初稿或草稿
|
|
|
|
|
|
|
+ draft_answer: Optional[str] = None, # verify/merge 用:RAG 初稿或草稿
|
|
|
mapped_results: Optional[str] = None, # reduce 用
|
|
mapped_results: Optional[str] = None, # reduce 用
|
|
|
) -> Dict[str, Any]:
|
|
) -> Dict[str, Any]:
|
|
|
"""
|
|
"""
|
|
@@ -189,12 +189,18 @@ def build_rag_prompt(
|
|
|
|
|
|
|
|
if mode == "verify":
|
|
if mode == "verify":
|
|
|
draft = draft_answer or "(此处为初稿答案)"
|
|
draft = draft_answer or "(此处为初稿答案)"
|
|
|
- return {"system": system_text, "user": verify_prompt(question, draft, formatted_contexts)}
|
|
|
|
|
|
|
+ return {
|
|
|
|
|
+ "system": system_text,
|
|
|
|
|
+ "user": verify_prompt(question, draft, formatted_contexts),
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
if mode == "merge":
|
|
if mode == "merge":
|
|
|
if not draft_answer:
|
|
if not draft_answer:
|
|
|
raise ValueError("merge 模式需要提供 draft_answer(即 RAG 初稿答案)。")
|
|
raise ValueError("merge 模式需要提供 draft_answer(即 RAG 初稿答案)。")
|
|
|
- return {"system": system_text, "user": merge_prompt(question, draft_answer, formatted_contexts)}
|
|
|
|
|
|
|
+ return {
|
|
|
|
|
+ "system": system_text,
|
|
|
|
|
+ "user": merge_prompt(question, draft_answer, formatted_contexts),
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
raise ValueError(f"不支持的模式:{mode}")
|
|
raise ValueError(f"不支持的模式:{mode}")
|
|
|
|
|
|