"""简历段落润色 AI 引擎:仅做格式/错字/表达层面的优化""" import json from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate from app.ai.model_config import ResumePolisherModel from app.ai.resume_polisher.prompts import POLISH_PROMPT from app.core.logger import log from app.tool.json_helper import parse_llm_json # 润色链(StrOutputParser 拿原始文本,再手动解析 JSON,避免 markdown 代码块导致解析失败) _polish_chain = ( ChatPromptTemplate.from_messages([("system", POLISH_PROMPT), ("human", "请开始润色。")]) | ResumePolisherModel.POLISH | StrOutputParser() ) async def polish_paragraphs(content: list[str]) -> list[str]: """对段落数组做表达层面的润色,返回与输入等长的数组;失败兜底原样返回""" if not content: return [] inp = {"content": json.dumps(content, ensure_ascii=False)} try: raw = await _polish_chain.ainvoke(inp) result = parse_llm_json(raw) if isinstance(result, list) and len(result) == len(content): return [str(item) for item in result] log.warning(f"AI润色返回结果不符合预期, 原样返回: {result}") return content except Exception as e: log.warning(f"AI润色失败: {e}") return content