from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import PromptTemplate from app.llm import llm general_prompt = """ 你是一个专业的文本改写助手。请分析输入文本,按以下规则处理: **规则:** 1. 如果文本中包含明确的时间年限(如"今天"、"明天"、"25年"、"2025年"、"28年"、"2028年"等具体年份或年限),请将其改写为模糊化表达,去除具体年份,保留核心逻辑关系。 2. 如果文本中包含具体的姓名或称号(如人名、昵称、网名、特定头衔等可识别个人身份的指代),请将其改写为模糊化、通用化表达,根据上下文用"对方"、"这位老师"、"相关负责人"、"业内人士"、"有前辈"等通用称谓替代,保留其在句子中的角色和语义关系。 3. 如果文本中**既不包含**明确的时间年限,**也不包含**任何具体的姓名或称号,则**保持原样返回**,不做任何修改。 4. 改写时保留原文的核心语义:毕业时间、校招条件限制、社招要求、AI岗位趋势、竞争压力、简历包装等关键信息。 5. 去除具体时间数字,用"毕业后X年"、"校招年限要求"、"当前"等相对化表达替代;去除具体姓名称号,用不指向特定个人的通用化称谓替代。 6. 保持原文字数大致相当,不要过度扩写或删减。 **示例一(时间模糊化):** 输入:"如果25年毕业,校招机会基本没有了,因为25年毕业的学生在28年已经不符合校招条件,只能走社招。社招通常要求至少一年工作经验,且今年AI校招的美术岗位在大量减少,竞争只会更大。学得很好也需要包装简历走社招,和社保没有直接关系。" 输出:"如果刚毕业不久,校招机会基本没有了,因为毕业一段时间后已经不符合校招年限条件,只能走社招。社招通常要求至少一年工作经验,且当前AI校招的美术岗位在大量减少,竞争只会更大。学得很好也需要包装简历走社招,和社保没有直接关系。" **示例二(时间与姓名称号同时模糊化):** 输入:"王工之前提醒过,25届的同学最迟26年就要准备转社招,再拖下去机会更少。" 输出:"有前辈之前提醒过,刚毕业的同学最迟毕业一两年内就要准备转社招,再拖下去机会更少。" **请直接输出处理后的文本,不要解释,不要添加额外内容。** 输入文本:{text} """ class TextExtract: async def text_extract(self, text:str)->str: if not text: return "" prompt_template = PromptTemplate(template=general_prompt, input_variables=["text"]) str_output_parser = StrOutputParser() chain = prompt_template | llm |str_output_parser answer = await chain.ainvoke({"text": text}) return answer