Files
offerpai_python_ai/app/ai/resume_polisher/polisher.py
T
2026-06-23 18:21:30 +08:00

37 lines
1.3 KiB
Python

"""简历段落润色 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