From cc6ce8729ad1bbc318f8acd27671f84284f668d5 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Thu, 30 Apr 2026 23:37:32 +0800 Subject: [PATCH] 1 --- backend/app/api/stocks.py | 42 ++++++++++++++++++++++---------- backend/app/llm/prompts.py | 2 +- backend/app/llm/tool_executor.py | 15 +++++++----- backend/app/llm/tools.py | 2 +- 4 files changed, 40 insertions(+), 21 deletions(-) diff --git a/backend/app/api/stocks.py b/backend/app/api/stocks.py index 57d235d4..5cac0903 100644 --- a/backend/app/api/stocks.py +++ b/backend/app/api/stocks.py @@ -545,25 +545,26 @@ async def diagnose_stock(ts_code: str, mode: str = Query("entry")): 股票: {ts_code} ({basic_info}) {quote_str} -技术面: {signal_str} - -位置安全: {position_str} - -趋势: {trend_str} -{ma_info} 资金面: {flow_str} {rec_score_str} {sector_str} +价格行为与趋势: {trend_str} +{ma_info} +位置安全: {position_str} + +技术指标备注: {signal_str} + 重要提示: 1. 你不是在写传统研报,而是在给交易作战台输出结构化会诊意见。 2. 如果有推荐体系评分、操作计划、跟踪信息,请优先沿用当前推荐体系,而不是另起一套标准。 -3. 当前推荐体系以“资金顺势 + 主线板块 + 供需/量价 + 趋势”为主,技术指标只做节奏和风控确认。 -4. RSI、MACD、KDJ 等滞后指标不能单独决定买卖;RSI 超买只提示追高风险,超卖只提示弱势或反弹弹性,不等于可买或不可买。 -5. 位置安全评分高(>80)表示股价处于相对低位,低(<40)表示可能追高。 -6. 板块信息、资金面和推荐体系信息优先级高于单一技术指标。 -7. 先给结论和动作,再解释原因;不要先铺陈背景再拖到最后才下结论。 -8. 如果证据不足,也要明确给出“观察”或“回避”,不能写成模糊建议。 +3. 分析优先级必须是:资金流向与主线板块 > 量价关系与价格行为 > 位置和交易边界 > 技术指标备注。 +4. 技术指标只做节奏和风控确认,不能成为核心判断;不要把 MA/MACD/RSI/KDJ 放在主要依据的第一位。 +5. RSI、MACD、KDJ 等滞后指标不能单独决定买卖;RSI 超买只提示追高风险,超卖只提示弱势或反弹弹性,不等于可买或不可买。 +6. 位置安全评分高(>80)表示股价处于相对低位,低(<40)表示可能追高。 +7. 板块信息、资金面、量价承接和推荐体系信息优先级高于单一技术指标。 +8. 先给结论和动作,再解释原因;不要先铺陈背景再拖到最后才下结论。 +9. 如果证据不足,也要明确给出“观察”或“回避”,不能写成模糊建议。 {freshness_note} 请严格按以下 Markdown 结构输出,不要写成泛泛长文: @@ -574,12 +575,22 @@ async def diagnose_stock(ts_code: str, mode: str = Query("entry")): - 当前动作: 只能从「执行 / 等确认 / 继续跟踪 / 暂不参与」中选一个 - 适配模式: 说明更适合启动试错、分歧回流、趋势跟随还是只观察 -## 核心逻辑 +## 资金与主线 - 市场环境: 当前大盘和风格是否支持这只票 - 板块位置: 所属板块是主线、次主线还是观察线 - 个股角色: 龙头 / 跟风 / 独立逻辑 / 非核心 +- 资金状态: 主力资金是持续流入、分歧流入、脉冲流入还是流出 + +## 量价与价格行为 +- 价格行为: 启动、突破、回踩、分歧回流、冲高回落、放量滞涨或弱反弹 +- 量价关系: 放量是否有承接,回调是否缩量,突破是否站稳 - 关键证据: 只提最重要的两到三条证据,不要抄原始数据 +## 位置与边界 +- 位置阶段: 低位启动 / 中位加速 / 高位博弈 / 退潮反抽 / 弱势震荡 +- 盈亏比: 当前是否还值得参与 +- 主要边界: 最关键的一条支撑或压力 + ## 执行动作 - 触发条件: 什么情况下才可以行动 - 失效条件: 什么情况下放弃 @@ -592,6 +603,10 @@ async def diagnose_stock(ts_code: str, mode: str = Query("entry")): - 风险2: - 风险3: +## 技术指标备注 +- 指标状态: 只说明 MA/MACD/RSI/BOLL 对节奏或风险的辅助含义 +- 不能作为结论的原因: 如果指标和资金/量价冲突,以资金和价格行为为主 + ## 复盘问题 - 如果后续走势不符合预期,优先检查哪两个问题 @@ -600,6 +615,7 @@ async def diagnose_stock(ts_code: str, mode: str = Query("entry")): 要求: - 结论必须明确,不能模糊两可 +- 不要把技术指标写成核心逻辑第一段 - 少写形容词,多写交易判断 - 不要重复原始数据 - 文字保持简洁,避免旧式研报语气 diff --git a/backend/app/llm/prompts.py b/backend/app/llm/prompts.py index a8ab7960..8228ade5 100644 --- a/backend/app/llm/prompts.py +++ b/backend/app/llm/prompts.py @@ -50,7 +50,7 @@ CHAT_SYSTEM_PROMPT = """\ - 回答用户关于某只股票能不能看、是否该买、持仓怎么处理、为什么涨跌、是否要复盘时,必须先 search_stock(如果用户没给标准 ts_code),再调用 diagnose_stock;必要时补充 get_stock_capital_flow、get_stock_technical_signal - 盘中时段(9:30-15:00)必须使用实时数据,盘后时段使用当日收盘或最近一次系统生成的数据 - 不要脱离系统上下文泛泛而谈,必须先调用工具获取最新结果再回答 -- A 股优先看资金顺势、主线板块、量价承接和位置;RSI/MACD/KDJ 只做节奏与风控确认,不能因超买超卖本身直接否决或买入 +- 个股分析必须优先看资金流向、主线板块、量价关系、价格行为和位置边界;RSI/MACD/KDJ 只做最后的节奏与风控备注,不能因超买超卖本身直接否决或买入 回答要求: 1. 使用工具获取最新数据后再回答,不要凭空编造数据 diff --git a/backend/app/llm/tool_executor.py b/backend/app/llm/tool_executor.py index 51ebb499..03162469 100644 --- a/backend/app/llm/tool_executor.py +++ b/backend/app/llm/tool_executor.py @@ -291,12 +291,12 @@ async def _diagnose_stock(ts_code: str, mode: str = "entry") -> str: 热门板块: {hot_sectors} -K线与技术指标: -{kline} - 资金流: {capital_flow} +K线与价格行为: +{kline} + 技术信号: {technical_signal} @@ -306,8 +306,10 @@ K线与技术指标: 输出要求: - 先给明确结论,只能是「可操作 / 重点关注 / 观察 / 回避」 - 明确当前动作、触发条件、失效条件、仓位边界、下一步观察点 -- A 股优先看资金顺势、主线板块、量价承接和位置;技术指标只做节奏与风控确认 -- RSI、MACD、KDJ 的超买超卖不能单独决定买卖 +- 分析顺序必须是:资金与主线 > 量价与价格行为 > 位置与边界 > 技术指标备注 +- A 股优先看资金顺势、主线板块、量价承接、价格行为和位置;技术指标只做节奏与风控确认 +- RSI、MACD、KDJ 的超买超卖不能单独决定买卖,也不能放在核心依据第一位 +- 输出必须包含以下小节:当前结论、资金与主线、量价与价格行为、位置与边界、执行动作、风险清单、技术指标备注 - 不写传统研报,不堆原始数据,不承诺收益 - 用 Markdown 输出,保持简洁""" @@ -316,7 +318,8 @@ K线与技术指标: "role": "system", "content": ( "你是 A 股投研作战台的个股会诊智能体。" - "你必须融合系统作战结论、板块、推荐池、资金流、K线和技术信号," + "你必须优先分析资金流向、主线板块、量价关系、价格行为和位置边界," + "技术指标只能作为最后的节奏与风控备注。" "输出可执行但带风险边界的会诊结论。" ), }, diff --git a/backend/app/llm/tools.py b/backend/app/llm/tools.py index 6a7b73af..66ecf5e9 100644 --- a/backend/app/llm/tools.py +++ b/backend/app/llm/tools.py @@ -149,7 +149,7 @@ CHAT_TOOLS = [ "type": "function", "function": { "name": "diagnose_stock", - "description": "对单只 A 股做系统化个股会诊,融合今日作战结论、推荐池、板块、K线、资金流和技术信号,输出结论、触发条件、失效条件和风险边界", + "description": "对单只 A 股做系统化个股会诊,优先分析资金流向、主线板块、量价关系、价格行为和位置边界,技术指标只做节奏与风控备注,输出结论、触发条件、失效条件和风险边界", "parameters": { "type": "object", "properties": {