完善模板测试弹窗与多文件解析链路
This commit is contained in:
@@ -43,7 +43,7 @@ def _ensure_json_content(text: str) -> dict:
|
||||
return {"content": [{"type": "text", "text": stripped}]}
|
||||
|
||||
|
||||
def _build_prompt(paragraph: Paragraph) -> tuple[str, str]:
|
||||
def _build_prompt(paragraph: Paragraph, file_summaries: list[dict] | None = None) -> tuple[str, str]:
|
||||
system_prompt = (
|
||||
"你是一个企业文档撰写助手。"
|
||||
"请严格输出 JSON,不要输出 JSON 之外的说明。"
|
||||
@@ -55,6 +55,11 @@ def _build_prompt(paragraph: Paragraph) -> tuple[str, str]:
|
||||
user_parts.append(f"模板上下文:{paragraph.content}")
|
||||
if paragraph.need_prompt and paragraph.prompt_text:
|
||||
user_parts.append(f"附加要求:{paragraph.prompt_text}")
|
||||
if file_summaries:
|
||||
file_blocks = []
|
||||
for item in file_summaries:
|
||||
file_blocks.append(f"文件名:{item['file_name']}\n文件摘要:{item['summary']}")
|
||||
user_parts.append("参考文件内容:\n" + "\n\n".join(file_blocks))
|
||||
user_parts.append(f"输出格式:{paragraph.output_format}")
|
||||
return system_prompt, "\n\n".join(user_parts)
|
||||
|
||||
@@ -157,8 +162,8 @@ async def _call_anthropic(model: AiModel, system_prompt: str, user_prompt: str)
|
||||
return AiCallResult(content=_ensure_json_content(text), raw_text=text, used_model=model.name)
|
||||
|
||||
|
||||
async def call_ai(paragraph: Paragraph, model: AiModel) -> AiCallResult:
|
||||
system_prompt, user_prompt = _build_prompt(paragraph)
|
||||
async def call_ai(paragraph: Paragraph, model: AiModel, file_summaries: list[dict] | None = None) -> AiCallResult:
|
||||
system_prompt, user_prompt = _build_prompt(paragraph, file_summaries)
|
||||
if model.api_format == "anthropic":
|
||||
return await _call_anthropic(model, system_prompt, user_prompt)
|
||||
return await _call_openai_compatible(model, system_prompt, user_prompt)
|
||||
|
||||
Reference in New Issue
Block a user