From 03139ffdbdcf4560f8d889a25daacc65feebaa8a Mon Sep 17 00:00:00 2001 From: Cxx0822 <1556464090@qq.com> Date: Wed, 2 Sep 2026 19:41:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B0=83=E6=95=B4=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- agent/prompt.py | 62 +++++++++++----------------------------- service/agent_service.py | 27 +++++++++++------ 2 files changed, 36 insertions(+), 53 deletions(-) diff --git a/agent/prompt.py b/agent/prompt.py index 6473cee..0d122b3 100644 --- a/agent/prompt.py +++ b/agent/prompt.py @@ -1,64 +1,36 @@ tip_prompt = """ -你是一个专业的健康科普作者。请一次性生成5篇健康科普文章,分别对应以下5个分类,每个分类各1篇。 - -【分类】 -1. 饮食营养 -2. 运动健身 -3. 睡眠作息 -4. 心理健康 -5. 常见病预防 +你是一个专业的健康科普作者。请生成3篇健康科普文章。 【选题要求】 -请你从每个分类中自行选择一个具体、实用的细分主题,5篇文章的主题互不重复。选题应贴近日常生活,适合普通大众阅读。 +从以下10个分类中选择3个不重复的分类: +饮食营养、运动健身、睡眠作息、心理健康、养生保健、疾病预防、职场健康、皮肤美容、家庭医疗、生活习惯 +每个分类下自行选择一个具体、实用的细分主题,要求: +贴近日常生活,适合普通大众阅读 +选题要具体、有新意,避免"多喝水""早睡早起""多运动"等过于宽泛的老话题 +结合当前月份和季节特点来选题 +如果涉及饮食建议,优先选择当季食材 【每篇文章要求】 -1. 标题简洁有力,吸引普通读者点击,控制在10字以内 -2. 概要控制在50字以内,概括文章核心观点 -3. 正文500字左右,语言通俗易懂,适合大众阅读,避免过多专业术语 -4. 内容需有科学依据,给出3-5条可操作的实用建议 -5. 正文结尾附一句总结金句 -6. 文末附免责声明:"本文仅供科普参考,不构成医疗建议。" -7. 不要使用Markdown格式,正文中的换行用\n表示 -8. 5篇文章的主题和内容互不重复 - +标题简洁有力,吸引普通读者点击,控制在10字以内 +概要控制在50字以内,概括文章核心观点 +正文300字左右,语言通俗易懂,适合大众阅读,避免过多专业术语 +内容需有科学依据,给出3-5条可操作的实用建议 +正文结尾附一句总结金句 +文末附免责声明:"本文仅供科普参考,不构成医疗建议。" +正文中的换行用\n表示 请严格按以下JSON数组格式输出,不要输出任何其他内容: - [ { "title": "文章标题", "summary": "50字以内的概要", "category": "分类名称", - "content": "正文内容,500字左右" + "content": "正文内容,300字左右" }, - { - "title": "文章标题", - "summary": "50字以内的概要", - "category": "分类名称", - "content": "正文内容,500字左右" - }, - { - "title": "文章标题", - "summary": "50字以内的概要", - "category": "分类名称", - "content": "正文内容,500字左右" - }, - { - "title": "文章标题", - "summary": "50字以内的概要", - "category": "分类名称", - "content": "正文内容,500字左右" - }, - { - "title": "文章标题", - "summary": "50字以内的概要", - "category": "分类名称", - "content": "正文内容,500字左右" - } ] """ recipe_prompt = """ -你是一位注册营养师和资深美食顾问。请为我生成2份健康菜谱,要求包含一份主菜和一份汤品。 +你是一位注册营养师和资深美食顾问。请为我生成2份健康菜谱,要求包含一份主菜和一份汤品,结合当前月份和季节特点来生成。 请按以下JSON数组格式输出,每条菜谱为一个对象,包含三个字段:name、tags、content。 diff --git a/service/agent_service.py b/service/agent_service.py index 59143e7..c29bff1 100644 --- a/service/agent_service.py +++ b/service/agent_service.py @@ -1,7 +1,8 @@ import json +from datetime import datetime from typing import Dict, Any -from langchain_core.messages import HumanMessage +from langchain_core.messages import HumanMessage, SystemMessage from agent.health import tip_agent, recipe_agent @@ -10,11 +11,15 @@ memory_store: Dict[str, Any] = { "recipe": [] } + def query_tip_agent(): try: - print("开始生成今日5篇健康科普文章") + print("开始生成今日健康资讯") + today = datetime.today().strftime("%Y-%m-%d") + resp = tip_agent.invoke({ - "messages": [HumanMessage(content="请生成今日5篇健康科普文章")] + "messages": [SystemMessage(content=f"当前系统日期:{today} \n\n"), + HumanMessage(content="请生成今日健康资讯")] }) last_msg = resp["messages"][-1] raw_text = last_msg.content.strip() @@ -23,7 +28,7 @@ def query_tip_agent(): articles = json.loads(raw_text) # 写入内存缓存 memory_store["articles"] = articles - print("结束生成今日5篇健康科普文章") + print("结束生成今日健康资讯") return True except json.JSONDecodeError as je: print(f"[JSON解析错误] {str(je)}") @@ -35,14 +40,19 @@ def query_tip_agent(): memory_store["articles"] = [] return False + def get_latest_tip(): return memory_store["articles"] + def query_recipe_agent(): try: - print("开始生成今日菜谱") + print("开始生成今日养生食谱") + today = datetime.today().strftime("%Y-%m-%d") + resp = recipe_agent.invoke({ - "messages": [HumanMessage(content="请生成今日菜谱")] + "messages": [SystemMessage(content=f"当前系统日期:{today} \n\n"), + HumanMessage(content="请生成今日养生食谱")] }) last_msg = resp["messages"][-1] raw_text = last_msg.content.strip() @@ -51,7 +61,7 @@ def query_recipe_agent(): recipes = json.loads(raw_text) # 写入内存缓存 memory_store["recipe"] = recipes - print("结束生成今日菜谱") + print("结束生成今日养生食谱") return True except json.JSONDecodeError as je: print(f"[JSON解析错误] {str(je)}") @@ -63,5 +73,6 @@ def query_recipe_agent(): memory_store["recipe"] = [] return False + def get_latest_recipe(): - return memory_store["recipe"] \ No newline at end of file + return memory_store["recipe"]