抽象json提取风格
This commit is contained in:
@@ -1,9 +1,6 @@
|
||||
"""简历诊断 AI 引擎:并行诊断 + 汇总评价"""
|
||||
|
||||
import asyncio
|
||||
import re
|
||||
|
||||
from json_repair import repair_json
|
||||
|
||||
from langchain_core.output_parsers import StrOutputParser
|
||||
from langchain_core.prompts import ChatPromptTemplate
|
||||
@@ -11,13 +8,7 @@ from langchain_core.prompts import ChatPromptTemplate
|
||||
from app.ai.models import LLM
|
||||
from app.ai.resume_diagnoser.prompts import DIAGNOSE_MODULE_PROMPT, SUMMARY_PROMPT, POLISH_PROMPT
|
||||
from app.core.logger import log
|
||||
|
||||
|
||||
def _parse_json(text: str) -> dict:
|
||||
"""解析 AI 输出的 JSON,自动去除 markdown 代码块包裹,容错处理"""
|
||||
cleaned = re.sub(r"^```(?:json)?\s*\n?", "", text.strip())
|
||||
cleaned = re.sub(r"\n?```\s*$", "", cleaned)
|
||||
return repair_json(cleaned, return_objects=True)
|
||||
from app.tool.json_helper import parse_llm_json
|
||||
|
||||
|
||||
# 诊断链(StrOutputParser 拿原始文本,再手动解析 JSON,避免 markdown 代码块导致解析失败)
|
||||
@@ -92,7 +83,7 @@ async def polish_content(module_type: str, reference_content: list[dict] | str |
|
||||
}
|
||||
try:
|
||||
raw = await _polish_chain.ainvoke(inp)
|
||||
result = _parse_json(raw)
|
||||
result = parse_llm_json(raw)
|
||||
if isinstance(result, list):
|
||||
return [str(item) for item in result]
|
||||
return [str(result)]
|
||||
@@ -106,7 +97,7 @@ async def _safe_invoke(task: dict) -> dict:
|
||||
raw = ""
|
||||
try:
|
||||
raw = await _diagnose_chain.ainvoke(task)
|
||||
return _parse_json(raw)
|
||||
return parse_llm_json(raw)
|
||||
except Exception as e:
|
||||
log.warning(f"AI诊断[{task.get('module_type', '')}]失败: {e}\n原始输出: {raw[:500]}")
|
||||
return _empty_result()
|
||||
|
||||
Reference in New Issue
Block a user