update
This commit is contained in:
parent
cf199aa4be
commit
e234d66687
30
app/data/prompt_templates/department_base@1.0.0.json
Normal file
30
app/data/prompt_templates/department_base@1.0.0.json
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
"department_base": {
|
||||
"name": "部门基础模板",
|
||||
"description": "所有部门通用的审慎分析提示词骨架",
|
||||
"template": "\n部门:{title}\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【角色定位】\n- 角色说明:{description}\n- 行动守则:{instruction}\n\n【数据边界】\n- 可用字段:\n{data_scope}\n- 核心特征:\n{features}\n- 市场背景:\n{market_snapshot}\n- 追加数据:\n{supplements}\n\n【分析步骤】\n1. 判断信息是否充分,如不充分,请说明缺口并优先调用工具 `fetch_data`(仅限 `daily`、`daily_basic`)。\n2. 梳理 2-3 个关键支撑信号与潜在风险,确保基于提供的数据。\n3. 结合量化证据与限制条件,给出操作建议和信心来源,避免主观臆测。\n\n【输出要求】\n仅返回一个 JSON 对象,不要添加额外文本:\n{{\n \"action\": \"BUY|BUY_S|BUY_M|BUY_L|SELL|HOLD\",\n \"confidence\": 0-1 之间的小数,\n \"summary\": \"一句话结论\",\n \"signals\": [\"关键支撑要点\", \"...\"],\n \"risks\": [\"关键风险要点\", \"...\"]\n}}\n如需说明未完成的数据请求,请在 `risks` 或 `signals` 中明确。\n",
|
||||
"variables": [
|
||||
"title",
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
"description",
|
||||
"instruction",
|
||||
"data_scope",
|
||||
"features",
|
||||
"market_snapshot",
|
||||
"supplements"
|
||||
],
|
||||
"required_context": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
"features",
|
||||
"market_snapshot"
|
||||
],
|
||||
"metadata": {
|
||||
"category": "department",
|
||||
"preset": "base"
|
||||
},
|
||||
"version": "1.0.0",
|
||||
"activate": true
|
||||
}
|
||||
}
|
||||
@ -26,6 +26,6 @@
|
||||
"label": "structured_v2",
|
||||
"notes": "增加信号与风险的结构化字段。"
|
||||
},
|
||||
"activate": true
|
||||
"activate": false
|
||||
}
|
||||
}
|
||||
27
app/data/prompt_templates/liquidity_dept@1.0.0.json
Normal file
27
app/data/prompt_templates/liquidity_dept@1.0.0.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"liquidity_dept": {
|
||||
"name": "流动性评估部门模板",
|
||||
"description": "衡量成交活跃度与执行成本的提示词",
|
||||
"template": "\n部门:流动性评估部门\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【角色定位】\n- 评估成交活跃度、交易成本与可执行性。\n- 提醒潜在的流动性风险与仓位限制。\n\n【研究重点】\n1. 当前成交量与历史均值的对比。\n2. 价量限制(涨跌停、停牌等)对执行的影响。\n3. 预估滑点与转手难度。\n\n【数据边界】\n- 可用字段:\n{data_scope}\n- 流动性特征:\n{features}\n- 市场背景:\n{market_snapshot}\n- 追加数据:\n{supplements}\n\n请遵循【部门基础模板】的分析步骤,重点描述执行可行性与仓位建议。\n",
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
"data_scope",
|
||||
"features",
|
||||
"market_snapshot",
|
||||
"supplements"
|
||||
],
|
||||
"required_context": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
"features",
|
||||
"market_snapshot"
|
||||
],
|
||||
"metadata": {
|
||||
"category": "department",
|
||||
"preset": "liquidity"
|
||||
},
|
||||
"version": "1.0.0",
|
||||
"activate": true
|
||||
}
|
||||
}
|
||||
@ -2,7 +2,7 @@
|
||||
"liquidity_dept": {
|
||||
"name": "流动性评估部门模板",
|
||||
"description": "执行容量评估版",
|
||||
"template": "部门:流动性评估部门\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【流动性结构】\n- 成交分布:\n{features}\n- 市场深度:\n{market_snapshot}\n- 额外观察:\n{supplements}\n\n【评估流程】\n1. 计算日内成交额、换手率与买卖盘差,给出执行难度评级(easy/normal/hard)。\n2. 检查是否存在交易限制(涨跌停、停牌、集合竞价等)。\n3. 给出建议单笔容量与滑点预估范围。\n\n【输出格式】\n仅输出 JSON:\n{\n \"action\": \"BUY|BUY_S|BUY_M|BUY_L|SELL|HOLD\",\n \"confidence\": 小数,\n \"summary\": \"一句话\",\n \"signals\": [\n {\n \"metric\": \"关键指标\",\n \"value\": \"指标值\",\n \"execution_grade\": \"easy|normal|hard\"\n }\n ],\n \"risks\": [\n {\n \"threat\": \"执行风险\",\n \"monitor\": \"监控指标\",\n \"capacity_limit\": \"建议仓位上限\"\n }\n ]\n}\n如需额外数据,请在 `risks` 中说明缺口字段。",
|
||||
"template": "部门:流动性评估部门\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【流动性结构】\n- 数据范围:\n{data_scope}\n- 成交分布:\n{features}\n- 市场深度:\n{market_snapshot}\n- 额外观察:\n{supplements}\n\n【评估流程】\n1. 计算日内成交额、换手率与买卖盘差,给出执行难度评级(easy/normal/hard)。\n2. 检查是否存在交易限制(涨跌停、停牌、集合竞价等)。\n3. 给出建议单笔容量与滑点预估范围。\n\n【输出格式】\n仅输出 JSON:\n{{\n \"action\": \"BUY|BUY_S|BUY_M|BUY_L|SELL|HOLD\",\n \"confidence\": 小数,\n \"summary\": \"一句话\",\n \"signals\": [\n {{\n \"metric\": \"关键指标\",\n \"value\": \"指标值\",\n \"execution_grade\": \"easy|normal|hard\"\n }}\n ],\n \"risks\": [\n {{\n \"threat\": \"执行风险\",\n \"monitor\": \"监控指标\",\n \"capacity_limit\": \"建议仓位上限\"\n }}\n ]\n}}\n如需额外数据,请在 `risks` 中说明缺口字段。",
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
|
||||
27
app/data/prompt_templates/macro_dept@1.0.0.json
Normal file
27
app/data/prompt_templates/macro_dept@1.0.0.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"macro_dept": {
|
||||
"name": "宏观研究部门模板",
|
||||
"description": "宏观与行业景气度分析提示词",
|
||||
"template": "\n部门:宏观研究部门\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【角色定位】\n- 追踪宏观周期、行业景气与相对强弱。\n- 评估宏观事件对该标的的方向性影响。\n\n【研究重点】\n1. 行业相对大盘的表现与热点程度。\n2. 宏观/政策事件对行业或标的的指引。\n3. 需警惕的宏观风险与流动性环境。\n\n【数据边界】\n- 可用字段:\n{data_scope}\n- 宏观特征:\n{features}\n- 市场背景:\n{market_snapshot}\n- 追加数据:\n{supplements}\n\n请执行【部门基础模板】的分析步骤,并输出宏观驱动的信号与风险。\n",
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
"data_scope",
|
||||
"features",
|
||||
"market_snapshot",
|
||||
"supplements"
|
||||
],
|
||||
"required_context": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
"features",
|
||||
"market_snapshot"
|
||||
],
|
||||
"metadata": {
|
||||
"category": "department",
|
||||
"preset": "macro"
|
||||
},
|
||||
"version": "1.0.0",
|
||||
"activate": true
|
||||
}
|
||||
}
|
||||
@ -2,7 +2,7 @@
|
||||
"macro_dept": {
|
||||
"name": "宏观研究部门模板",
|
||||
"description": "宏观驱动结构化版",
|
||||
"template": "部门:宏观研究部门\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【宏观信号板】\n- 宏观指标:\n{features}\n- 行业位置:\n{market_snapshot}\n- 补充材料:\n{supplements}\n\n【分析步骤】\n1. 将宏观指标划分为“增长、价格、流动性”三类,每类给出当前阶段(扩张/收缩/拐点)。\n2. 判断行业与指数的相对强弱,给出驱动因子和持续性判断。\n3. 列出未来 1-2 个重要事件或数据公布,并评估对策略的潜在冲击方向。\n\n【输出格式】\n仅输出 JSON:\n{\n \"action\": \"BUY|BUY_S|BUY_M|BUY_L|SELL|HOLD\",\n \"confidence\": 小数,\n \"summary\": \"一句话\",\n \"signals\": [\n {\n \"driver\": \"宏观驱动项\",\n \"stage\": \"expansion|contraction|turning\",\n \"evidence\": \"对应指标\"\n }\n ],\n \"risks\": [\n {\n \"event\": \"未来事件\",\n \"date\": \"预期日期\",\n \"scenario\": \"正面|负面|不确定\"\n }\n ]\n}\n若存在数据缺口,请在 `risks` 中补充并说明所需指标。",
|
||||
"template": "部门:宏观研究部门\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【宏观信号板】\n- 数据范围:\n{data_scope}\n- 宏观指标:\n{features}\n- 行业位置:\n{market_snapshot}\n- 补充材料:\n{supplements}\n\n【分析步骤】\n1. 将宏观指标划分为“增长、价格、流动性”三类,每类给出当前阶段(扩张/收缩/拐点)。\n2. 判断行业与指数的相对强弱,给出驱动因子和持续性判断。\n3. 列出未来 1-2 个重要事件或数据公布,并评估对策略的潜在冲击方向。\n\n【输出格式】\n仅输出 JSON:\n{{\n \"action\": \"BUY|BUY_S|BUY_M|BUY_L|SELL|HOLD\",\n \"confidence\": 小数,\n \"summary\": \"一句话\",\n \"signals\": [\n {{\n \"driver\": \"宏观驱动项\",\n \"stage\": \"expansion|contraction|turning\",\n \"evidence\": \"对应指标\"\n }}\n ],\n \"risks\": [\n {{\n \"event\": \"未来事件\",\n \"date\": \"预期日期\",\n \"scenario\": \"正面|负面|不确定\"\n }}\n ]\n}}\n若存在数据缺口,请在 `risks` 中补充并说明所需指标。",
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
|
||||
27
app/data/prompt_templates/momentum_dept@1.0.0.json
Normal file
27
app/data/prompt_templates/momentum_dept@1.0.0.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"momentum_dept": {
|
||||
"name": "动量研究部门模板",
|
||||
"description": "围绕价格与量能动量的决策提示",
|
||||
"template": "\n部门:动量研究部门\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【角色定位】\n- 专注价格动量、成交量共振与技术指标背离。\n- 保持纪律,识别趋势延续与反转风险。\n\n【研究重点】\n1. 多时间窗口动量是否同向?\n2. 成交量是否验证价格走势?\n3. 是否出现过热或背离信号?\n\n【数据边界】\n- 可用字段:\n{data_scope}\n- 动量特征:\n{features}\n- 市场背景:\n{market_snapshot}\n- 追加数据:\n{supplements}\n\n请沿用【部门基础模板】的分析步骤与输出要求,重点量化趋势动能和量价配合度。\n",
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
"data_scope",
|
||||
"features",
|
||||
"market_snapshot",
|
||||
"supplements"
|
||||
],
|
||||
"required_context": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
"features",
|
||||
"market_snapshot"
|
||||
],
|
||||
"metadata": {
|
||||
"category": "department",
|
||||
"preset": "momentum"
|
||||
},
|
||||
"version": "1.0.0",
|
||||
"activate": true
|
||||
}
|
||||
}
|
||||
@ -2,7 +2,7 @@
|
||||
"momentum_dept": {
|
||||
"name": "动量研究部门模板",
|
||||
"description": "多层级动量评估版本",
|
||||
"template": "部门:动量研究部门\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【角色定位】\n- 追踪价格与成交量动量的共振与切换。\n- 识别趋势衰减与阶段性反转信号。\n\n【分层动量视角】\n1. 超短线(1-3 日)动量:\n{features}\n2. 短线(5-10 日)趋势斜率:\n{market_snapshot}\n3. 中线(20+ 日)位置与乖离:\n{data_scope}\n\n【执行指引】\n- 对每个时间层给出强度评级(strong/weak/neutral)。\n- 若评级存在冲突,需在 `risks` 说明优先采信的层级。\n- 必须评估量价背离与成交密集区。\n\n【输出要求】\n仅输出 JSON:\n{\n \"action\": \"BUY|BUY_S|BUY_M|BUY_L|SELL|HOLD\",\n \"confidence\": 小数,\n \"summary\": \"一句话\",\n \"signals\": [\"层级+观察\", \"...\"],\n \"risks\": [\"层级+风险\", \"...\"]\n}\n若需进一步数据,请在 `risks` 中注明具体字段。",
|
||||
"template": "部门:动量研究部门\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【角色定位】\n- 追踪价格与成交量动量的共振与切换。\n- 识别趋势衰减与阶段性反转信号。\n\n【分层动量视角】\n1. 超短线(1-3 日)动量:\n{features}\n2. 短线(5-10 日)趋势斜率:\n{market_snapshot}\n3. 中线(20+ 日)位置与乖离:\n{data_scope}\n\n【执行指引】\n- 对每个时间层给出强度评级(strong/weak/neutral)。\n- 若评级存在冲突,需在 `risks` 说明优先采信的层级。\n- 必须评估量价背离与成交密集区。\n\n【追加数据】\n{supplements}\n\n【输出要求】\n仅输出 JSON:\n{{\n \"action\": \"BUY|BUY_S|BUY_M|BUY_L|SELL|HOLD\",\n \"confidence\": 小数,\n \"summary\": \"一句话\",\n \"signals\": [\"层级+观察\", \"...\"],\n \"risks\": [\"层级+风险\", \"...\"]\n}}\n若需进一步数据,请在 `risks` 中注明具体字段。",
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
|
||||
27
app/data/prompt_templates/news_dept@1.0.0.json
Normal file
27
app/data/prompt_templates/news_dept@1.0.0.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"news_dept": {
|
||||
"name": "新闻情绪部门模板",
|
||||
"description": "针对舆情热度与事件影响的提示词",
|
||||
"template": "\n部门:新闻情绪部门\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【角色定位】\n- 监控舆情热度、事件驱动与短期情绪。\n- 评估新闻对价格波动的正负面影响。\n\n【研究重点】\n1. 新闻情绪是否集中且持续?\n2. 主题与行情是否匹配?\n3. 情绪驱动的风险敞口。\n\n【数据边界】\n- 可用字段:\n{data_scope}\n- 舆情特征:\n{features}\n- 市场背景:\n{market_snapshot}\n- 追加数据:\n{supplements}\n\n请遵循【部门基础模板】的分析步骤,突出情绪驱动的力度与时效性。\n",
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
"data_scope",
|
||||
"features",
|
||||
"market_snapshot",
|
||||
"supplements"
|
||||
],
|
||||
"required_context": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
"features",
|
||||
"market_snapshot"
|
||||
],
|
||||
"metadata": {
|
||||
"category": "department",
|
||||
"preset": "news"
|
||||
},
|
||||
"version": "1.0.0",
|
||||
"activate": true
|
||||
}
|
||||
}
|
||||
@ -2,7 +2,7 @@
|
||||
"news_dept": {
|
||||
"name": "新闻情绪部门模板",
|
||||
"description": "情绪脉冲量化版",
|
||||
"template": "部门:新闻情绪部门\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【情绪脉冲拆解】\n- 舆情亮点:\n{features}\n- 市场反馈:\n{market_snapshot}\n- 数据补充:\n{supplements}\n\n【分析步骤】\n1. 将新闻分为“正面/负面/中性”并评估强度(0-1)。\n2. 识别是否存在事件驱动催化,给出时间窗口与触发条件。\n3. 检查情绪与价格表现是否一致,如不一致需给出交易策略提示。\n\n【输出格式】\n仅输出 JSON:\n{\n \"action\": \"BUY|BUY_S|BUY_M|BUY_L|SELL|HOLD\",\n \"confidence\": 小数,\n \"summary\": \"一句话\",\n \"signals\": [\n {\n \"headline\": \"事件/主题\",\n \"sentiment\": \"positive|negative|neutral\",\n \"intensity\": 小数,\n \"impact_window\": \"时间窗口\"\n }\n ],\n \"risks\": [\n {\n \"threat\": \"潜在风险\",\n \"monitor\": \"监控指标\",\n \"mitigation\": \"对冲或等待条件\"\n }\n ]\n}\n如需更多数据,请在 `risks` 中新增条目并说明来源。",
|
||||
"template": "部门:新闻情绪部门\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【情绪脉冲拆解】\n- 舆情亮点:\n{features}\n- 市场反馈:\n{market_snapshot}\n- 数据补充:\n{supplements}\n- 数据范围:\n{data_scope}\n\n【分析步骤】\n1. 将新闻分为“正面/负面/中性”并评估强度(0-1)。\n2. 识别是否存在事件驱动催化,给出时间窗口与触发条件。\n3. 检查情绪与价格表现是否一致,如不一致需给出交易策略提示。\n\n【输出格式】\n仅输出 JSON:\n{{\n \"action\": \"BUY|BUY_S|BUY_M|BUY_L|SELL|HOLD\",\n \"confidence\": 小数,\n \"summary\": \"一句话\",\n \"signals\": [\n {{\n \"headline\": \"事件/主题\",\n \"sentiment\": \"positive|negative|neutral\",\n \"intensity\": 小数,\n \"impact_window\": \"时间窗口\"\n }}\n ],\n \"risks\": [\n {{\n \"threat\": \"潜在风险\",\n \"monitor\": \"监控指标\",\n \"mitigation\": \"对冲或等待条件\"\n }}\n ]\n}}\n如需更多数据,请在 `risks` 中新增条目并说明来源。",
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
|
||||
27
app/data/prompt_templates/risk_dept@1.0.0.json
Normal file
27
app/data/prompt_templates/risk_dept@1.0.0.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"risk_dept": {
|
||||
"name": "风险控制部门模板",
|
||||
"description": "识别极端风险与限制条件的提示词",
|
||||
"template": "\n部门:风险控制部门\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【角色定位】\n- 防范停牌、涨跌停、仓位与合规限制。\n- 必要时对高风险决策行使否决权。\n\n【研究重点】\n1. 交易限制或异常波动情况。\n2. 仓位、集中度或风险指标是否触顶。\n3. 潜在的黑天鹅或执行障碍。\n\n【数据边界】\n- 可用字段:\n{data_scope}\n- 风险特征:\n{features}\n- 市场背景:\n{market_snapshot}\n- 追加数据:\n{supplements}\n\n请按照【部门基础模板】的分析步骤,必要时明确阻止交易的理由。\n",
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
"data_scope",
|
||||
"features",
|
||||
"market_snapshot",
|
||||
"supplements"
|
||||
],
|
||||
"required_context": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
"features",
|
||||
"market_snapshot"
|
||||
],
|
||||
"metadata": {
|
||||
"category": "department",
|
||||
"preset": "risk"
|
||||
},
|
||||
"version": "1.0.0",
|
||||
"activate": true
|
||||
}
|
||||
}
|
||||
@ -2,7 +2,7 @@
|
||||
"risk_dept": {
|
||||
"name": "风险控制部门模板",
|
||||
"description": "风险矩阵强化版",
|
||||
"template": "部门:风险控制部门\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【风险总览】\n- 风险指标:\n{features}\n- 市场约束:\n{market_snapshot}\n- 其他观察:\n{supplements}\n\n【动作指引】\n1. 按“市场风险、流动性风险、合规风险”逐项给出评级(low/medium/high)。\n2. 如存在硬性限制(停牌、禁买名单等),需在 `signals` 中明确阻断原因。\n3. 给出减仓或对冲建议,注明建议比例与触发条件。\n\n【输出格式】\n仅输出 JSON:\n{\n \"action\": \"BUY|BUY_S|BUY_M|BUY_L|SELL|HOLD\",\n \"confidence\": 小数,\n \"summary\": \"一句话\",\n \"signals\": [\n {\n \"category\": \"风险类别\",\n \"level\": \"low|medium|high\",\n \"detail\": \"情况说明\"\n }\n ],\n \"risks\": [\n {\n \"threat\": \"潜在事件\",\n \"trigger\": \"触发阈值\",\n \"hedge\": \"建议对冲措施\"\n }\n ]\n}\n若需停止交易,请在 `signals` 中输出 `category` 为 `block_trade` 的条目。",
|
||||
"template": "部门:风险控制部门\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【风险总览】\n- 数据范围:\n{data_scope}\n- 风险指标:\n{features}\n- 市场约束:\n{market_snapshot}\n- 其他观察:\n{supplements}\n\n【动作指引】\n1. 按“市场风险、流动性风险、合规风险”逐项给出评级(low/medium/high)。\n2. 如存在硬性限制(停牌、禁买名单等),需在 `signals` 中明确阻断原因。\n3. 给出减仓或对冲建议,注明建议比例与触发条件。\n\n【输出格式】\n仅输出 JSON:\n{{\n \"action\": \"BUY|BUY_S|BUY_M|BUY_L|SELL|HOLD\",\n \"confidence\": 小数,\n \"summary\": \"一句话\",\n \"signals\": [\n {{\n \"category\": \"风险类别\",\n \"level\": \"low|medium|high\",\n \"detail\": \"情况说明\"\n }}\n ],\n \"risks\": [\n {{\n \"threat\": \"潜在事件\",\n \"trigger\": \"触发阈值\",\n \"hedge\": \"建议对冲措施\"\n }}\n ]\n}}\n若需停止交易,请在 `signals` 中输出 `category` 为 `block_trade` 的条目。",
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
|
||||
27
app/data/prompt_templates/value_dept@1.0.0.json
Normal file
27
app/data/prompt_templates/value_dept@1.0.0.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"value_dept": {
|
||||
"name": "价值评估部门模板",
|
||||
"description": "衡量估值与盈利质量的提示词",
|
||||
"template": "\n部门:价值评估部门\n股票代码:{ts_code}\n交易日:{trade_date}\n\n【角色定位】\n- 关注估值分位、盈利质量与安全边际。\n- 从中期配置角度评价当前价格的性价比。\n\n【研究重点】\n1. 历史及同业视角的估值位置。\n2. 盈利与分红的可持续性。\n3. 潜在的估值修复催化或压制因素。\n\n【数据边界】\n- 可用字段:\n{data_scope}\n- 估值与质量特征:\n{features}\n- 市场背景:\n{market_snapshot}\n- 追加数据:\n{supplements}\n\n请按照【部门基础模板】的分析步骤输出结论,并明确估值安全边际来源。\n",
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
"data_scope",
|
||||
"features",
|
||||
"market_snapshot",
|
||||
"supplements"
|
||||
],
|
||||
"required_context": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
"features",
|
||||
"market_snapshot"
|
||||
],
|
||||
"metadata": {
|
||||
"category": "department",
|
||||
"preset": "value"
|
||||
},
|
||||
"version": "1.0.0",
|
||||
"activate": true
|
||||
}
|
||||
}
|
||||
@ -249,46 +249,27 @@ class TemplateRegistry:
|
||||
register_default_templates()
|
||||
|
||||
|
||||
# Default template definitions
|
||||
DEFAULT_TEMPLATES = {
|
||||
DEFAULT_TEMPLATES: Dict[str, Dict[str, Any]] = {}
|
||||
|
||||
_FALLBACK_TEMPLATE = (
|
||||
"部门:{title}\n"
|
||||
"股票代码:{ts_code}\n"
|
||||
"交易日:{trade_date}\n\n"
|
||||
"【职责与说明】\n"
|
||||
"- 描述:{description}\n"
|
||||
"- 指令:{instruction}\n\n"
|
||||
"【数据概览】\n"
|
||||
"- 数据范围:{data_scope}\n"
|
||||
"- 核心特征:{features}\n"
|
||||
"- 市场背景:{market_snapshot}\n"
|
||||
"- 追加数据:{supplements}\n"
|
||||
)
|
||||
|
||||
_INLINE_FALLBACK_TEMPLATES: Dict[str, Dict[str, Any]] = {
|
||||
"department_base": {
|
||||
"name": "部门基础模板",
|
||||
"description": "所有部门通用的审慎分析提示词骨架",
|
||||
"template": """
|
||||
部门:{title}
|
||||
股票代码:{ts_code}
|
||||
交易日:{trade_date}
|
||||
|
||||
【角色定位】
|
||||
- 角色说明:{description}
|
||||
- 行动守则:{instruction}
|
||||
|
||||
【数据边界】
|
||||
- 可用字段:
|
||||
{data_scope}
|
||||
- 核心特征:
|
||||
{features}
|
||||
- 市场背景:
|
||||
{market_snapshot}
|
||||
- 追加数据:
|
||||
{supplements}
|
||||
|
||||
【分析步骤】
|
||||
1. 判断信息是否充分,如不充分,请说明缺口并优先调用工具 `fetch_data`(仅限 `daily`、`daily_basic`)。
|
||||
2. 梳理 2-3 个关键支撑信号与潜在风险,确保基于提供的数据。
|
||||
3. 结合量化证据与限制条件,给出操作建议和信心来源,避免主观臆测。
|
||||
|
||||
【输出要求】
|
||||
仅返回一个 JSON 对象,不要添加额外文本:
|
||||
{{
|
||||
"action": "BUY|BUY_S|BUY_M|BUY_L|SELL|HOLD",
|
||||
"confidence": 0-1 之间的小数,
|
||||
"summary": "一句话结论",
|
||||
"signals": ["关键支撑要点", "..."],
|
||||
"risks": ["关键风险要点", "..."]
|
||||
}}
|
||||
如需说明未完成的数据请求,请在 `risks` 或 `signals` 中明确。
|
||||
""",
|
||||
"name": "部门基础模板(Fallback)",
|
||||
"description": "提示模板目录缺失时加载的简易版本。",
|
||||
"template": _FALLBACK_TEMPLATE,
|
||||
"variables": [
|
||||
"title",
|
||||
"ts_code",
|
||||
@ -306,40 +287,12 @@ DEFAULT_TEMPLATES = {
|
||||
"features",
|
||||
"market_snapshot",
|
||||
],
|
||||
"metadata": {
|
||||
"category": "department",
|
||||
"preset": "base",
|
||||
},
|
||||
"metadata": {"source": "inline_fallback"},
|
||||
},
|
||||
"momentum_dept": {
|
||||
"name": "动量研究部门模板",
|
||||
"description": "围绕价格与量能动量的决策提示",
|
||||
"template": """
|
||||
部门:动量研究部门
|
||||
股票代码:{ts_code}
|
||||
交易日:{trade_date}
|
||||
|
||||
【角色定位】
|
||||
- 专注价格动量、成交量共振与技术指标背离。
|
||||
- 保持纪律,识别趋势延续与反转风险。
|
||||
|
||||
【研究重点】
|
||||
1. 多时间窗口动量是否同向?
|
||||
2. 成交量是否验证价格走势?
|
||||
3. 是否出现过热或背离信号?
|
||||
|
||||
【数据边界】
|
||||
- 可用字段:
|
||||
{data_scope}
|
||||
- 动量特征:
|
||||
{features}
|
||||
- 市场背景:
|
||||
{market_snapshot}
|
||||
- 追加数据:
|
||||
{supplements}
|
||||
|
||||
请沿用【部门基础模板】的分析步骤与输出要求,重点量化趋势动能和量价配合度。
|
||||
""",
|
||||
"name": "动量研究部门模板(Fallback)",
|
||||
"description": "用于缺省情况下的动量提示。",
|
||||
"template": _FALLBACK_TEMPLATE,
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
@ -354,40 +307,12 @@ DEFAULT_TEMPLATES = {
|
||||
"features",
|
||||
"market_snapshot",
|
||||
],
|
||||
"metadata": {
|
||||
"category": "department",
|
||||
"preset": "momentum",
|
||||
},
|
||||
"metadata": {"source": "inline_fallback"},
|
||||
},
|
||||
"value_dept": {
|
||||
"name": "价值评估部门模板",
|
||||
"description": "衡量估值与盈利质量的提示词",
|
||||
"template": """
|
||||
部门:价值评估部门
|
||||
股票代码:{ts_code}
|
||||
交易日:{trade_date}
|
||||
|
||||
【角色定位】
|
||||
- 关注估值分位、盈利质量与安全边际。
|
||||
- 从中期配置角度评价当前价格的性价比。
|
||||
|
||||
【研究重点】
|
||||
1. 历史及同业视角的估值位置。
|
||||
2. 盈利与分红的可持续性。
|
||||
3. 潜在的估值修复催化或压制因素。
|
||||
|
||||
【数据边界】
|
||||
- 可用字段:
|
||||
{data_scope}
|
||||
- 估值与质量特征:
|
||||
{features}
|
||||
- 市场背景:
|
||||
{market_snapshot}
|
||||
- 追加数据:
|
||||
{supplements}
|
||||
|
||||
请按照【部门基础模板】的分析步骤输出结论,并明确估值安全边际来源。
|
||||
""",
|
||||
"name": "价值评估部门模板(Fallback)",
|
||||
"description": "用于缺省情况下的价值提示。",
|
||||
"template": _FALLBACK_TEMPLATE,
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
@ -402,40 +327,12 @@ DEFAULT_TEMPLATES = {
|
||||
"features",
|
||||
"market_snapshot",
|
||||
],
|
||||
"metadata": {
|
||||
"category": "department",
|
||||
"preset": "value",
|
||||
},
|
||||
"metadata": {"source": "inline_fallback"},
|
||||
},
|
||||
"news_dept": {
|
||||
"name": "新闻情绪部门模板",
|
||||
"description": "针对舆情热度与事件影响的提示词",
|
||||
"template": """
|
||||
部门:新闻情绪部门
|
||||
股票代码:{ts_code}
|
||||
交易日:{trade_date}
|
||||
|
||||
【角色定位】
|
||||
- 监控舆情热度、事件驱动与短期情绪。
|
||||
- 评估新闻对价格波动的正负面影响。
|
||||
|
||||
【研究重点】
|
||||
1. 新闻情绪是否集中且持续?
|
||||
2. 主题与行情是否匹配?
|
||||
3. 情绪驱动的风险敞口。
|
||||
|
||||
【数据边界】
|
||||
- 可用字段:
|
||||
{data_scope}
|
||||
- 舆情特征:
|
||||
{features}
|
||||
- 市场背景:
|
||||
{market_snapshot}
|
||||
- 追加数据:
|
||||
{supplements}
|
||||
|
||||
请遵循【部门基础模板】的分析步骤,突出情绪驱动的力度与时效性。
|
||||
""",
|
||||
"name": "新闻情绪部门模板(Fallback)",
|
||||
"description": "用于缺省情况下的新闻提示。",
|
||||
"template": _FALLBACK_TEMPLATE,
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
@ -450,40 +347,12 @@ DEFAULT_TEMPLATES = {
|
||||
"features",
|
||||
"market_snapshot",
|
||||
],
|
||||
"metadata": {
|
||||
"category": "department",
|
||||
"preset": "news",
|
||||
},
|
||||
"metadata": {"source": "inline_fallback"},
|
||||
},
|
||||
"liquidity_dept": {
|
||||
"name": "流动性评估部门模板",
|
||||
"description": "衡量成交活跃度与执行成本的提示词",
|
||||
"template": """
|
||||
部门:流动性评估部门
|
||||
股票代码:{ts_code}
|
||||
交易日:{trade_date}
|
||||
|
||||
【角色定位】
|
||||
- 评估成交活跃度、交易成本与可执行性。
|
||||
- 提醒潜在的流动性风险与仓位限制。
|
||||
|
||||
【研究重点】
|
||||
1. 当前成交量与历史均值的对比。
|
||||
2. 价量限制(涨跌停、停牌等)对执行的影响。
|
||||
3. 预估滑点与转手难度。
|
||||
|
||||
【数据边界】
|
||||
- 可用字段:
|
||||
{data_scope}
|
||||
- 流动性特征:
|
||||
{features}
|
||||
- 市场背景:
|
||||
{market_snapshot}
|
||||
- 追加数据:
|
||||
{supplements}
|
||||
|
||||
请遵循【部门基础模板】的分析步骤,重点描述执行可行性与仓位建议。
|
||||
""",
|
||||
"name": "流动性评估部门模板(Fallback)",
|
||||
"description": "用于缺省情况下的流动性提示。",
|
||||
"template": _FALLBACK_TEMPLATE,
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
@ -498,40 +367,12 @@ DEFAULT_TEMPLATES = {
|
||||
"features",
|
||||
"market_snapshot",
|
||||
],
|
||||
"metadata": {
|
||||
"category": "department",
|
||||
"preset": "liquidity",
|
||||
},
|
||||
"metadata": {"source": "inline_fallback"},
|
||||
},
|
||||
"macro_dept": {
|
||||
"name": "宏观研究部门模板",
|
||||
"description": "宏观与行业景气度分析提示词",
|
||||
"template": """
|
||||
部门:宏观研究部门
|
||||
股票代码:{ts_code}
|
||||
交易日:{trade_date}
|
||||
|
||||
【角色定位】
|
||||
- 追踪宏观周期、行业景气与相对强弱。
|
||||
- 评估宏观事件对该标的的方向性影响。
|
||||
|
||||
【研究重点】
|
||||
1. 行业相对大盘的表现与热点程度。
|
||||
2. 宏观/政策事件对行业或标的的指引。
|
||||
3. 需警惕的宏观风险与流动性环境。
|
||||
|
||||
【数据边界】
|
||||
- 可用字段:
|
||||
{data_scope}
|
||||
- 宏观特征:
|
||||
{features}
|
||||
- 市场背景:
|
||||
{market_snapshot}
|
||||
- 追加数据:
|
||||
{supplements}
|
||||
|
||||
请执行【部门基础模板】的分析步骤,并输出宏观驱动的信号与风险。
|
||||
""",
|
||||
"name": "宏观研究部门模板(Fallback)",
|
||||
"description": "用于缺省情况下的宏观提示。",
|
||||
"template": _FALLBACK_TEMPLATE,
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
@ -546,40 +387,12 @@ DEFAULT_TEMPLATES = {
|
||||
"features",
|
||||
"market_snapshot",
|
||||
],
|
||||
"metadata": {
|
||||
"category": "department",
|
||||
"preset": "macro",
|
||||
},
|
||||
"metadata": {"source": "inline_fallback"},
|
||||
},
|
||||
"risk_dept": {
|
||||
"name": "风险控制部门模板",
|
||||
"description": "识别极端风险与限制条件的提示词",
|
||||
"template": """
|
||||
部门:风险控制部门
|
||||
股票代码:{ts_code}
|
||||
交易日:{trade_date}
|
||||
|
||||
【角色定位】
|
||||
- 防范停牌、涨跌停、仓位与合规限制。
|
||||
- 必要时对高风险决策行使否决权。
|
||||
|
||||
【研究重点】
|
||||
1. 交易限制或异常波动情况。
|
||||
2. 仓位、集中度或风险指标是否触顶。
|
||||
3. 潜在的黑天鹅或执行障碍。
|
||||
|
||||
【数据边界】
|
||||
- 可用字段:
|
||||
{data_scope}
|
||||
- 风险特征:
|
||||
{features}
|
||||
- 市场背景:
|
||||
{market_snapshot}
|
||||
- 追加数据:
|
||||
{supplements}
|
||||
|
||||
请按照【部门基础模板】的分析步骤,必要时明确阻止交易的理由。
|
||||
""",
|
||||
"name": "风险控制部门模板(Fallback)",
|
||||
"description": "用于缺省情况下的风险提示。",
|
||||
"template": _FALLBACK_TEMPLATE,
|
||||
"variables": [
|
||||
"ts_code",
|
||||
"trade_date",
|
||||
@ -594,56 +407,21 @@ DEFAULT_TEMPLATES = {
|
||||
"features",
|
||||
"market_snapshot",
|
||||
],
|
||||
"metadata": {
|
||||
"category": "department",
|
||||
"preset": "risk",
|
||||
},
|
||||
"metadata": {"source": "inline_fallback"},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def register_default_templates() -> None:
|
||||
"""Register all default templates from DEFAULT_TEMPLATES."""
|
||||
for template_id, cfg in DEFAULT_TEMPLATES.items():
|
||||
template_config = {
|
||||
"id": template_id,
|
||||
"name": cfg.get("name", template_id),
|
||||
"description": cfg.get("description", ""),
|
||||
"template": cfg.get("template", ""),
|
||||
"variables": cfg.get("variables", []),
|
||||
"max_length": cfg.get("max_length", 4000),
|
||||
"required_context": cfg.get("required_context", []),
|
||||
"validation_rules": cfg.get("validation_rules", [])
|
||||
}
|
||||
try:
|
||||
template = PromptTemplate(**template_config)
|
||||
version_label = str(
|
||||
cfg.get("version") or TemplateRegistry._default_version_label
|
||||
)
|
||||
metadata_raw = cfg.get("metadata")
|
||||
metadata = dict(metadata_raw) if isinstance(metadata_raw, dict) else {}
|
||||
metadata.setdefault("source", "defaults")
|
||||
TemplateRegistry.register(
|
||||
template,
|
||||
version=version_label,
|
||||
metadata=metadata,
|
||||
activate=cfg.get("activate", True),
|
||||
)
|
||||
except ValueError as e:
|
||||
logging.warning(f"Failed to register template {template_id}: {e}")
|
||||
|
||||
|
||||
# Auto-register default templates on module import
|
||||
EXTERNAL_TEMPLATE_DIR = Path(__file__).resolve().parents[1] / "data" / "prompt_templates"
|
||||
|
||||
|
||||
def load_external_template_configs(directory: Path | str = EXTERNAL_TEMPLATE_DIR) -> None:
|
||||
def load_external_template_configs(directory: Path | str = EXTERNAL_TEMPLATE_DIR) -> int:
|
||||
"""Load additional template versions from JSON files in the given directory."""
|
||||
|
||||
directory_path = Path(directory)
|
||||
if not directory_path.exists() or not directory_path.is_dir():
|
||||
return
|
||||
return 0
|
||||
|
||||
loaded = 0
|
||||
for file_path in sorted(directory_path.glob("*.json")):
|
||||
try:
|
||||
raw_data = file_path.read_text(encoding="utf-8")
|
||||
@ -680,13 +458,51 @@ def load_external_template_configs(directory: Path | str = EXTERNAL_TEMPLATE_DIR
|
||||
|
||||
try:
|
||||
TemplateRegistry.load_from_json(json.dumps(enriched_payload, ensure_ascii=False))
|
||||
loaded += len(enriched_payload)
|
||||
except Exception as exc: # noqa: BLE001
|
||||
logging.warning(
|
||||
"注册提示模板配置 %s 失败:%s",
|
||||
file_path,
|
||||
exc,
|
||||
)
|
||||
return loaded
|
||||
|
||||
|
||||
def _register_inline_fallbacks() -> None:
|
||||
"""Register minimal inline templates when file-based templates are unavailable."""
|
||||
|
||||
for template_id, cfg in _INLINE_FALLBACK_TEMPLATES.items():
|
||||
try:
|
||||
template = PromptTemplate(
|
||||
id=template_id,
|
||||
name=cfg.get("name", template_id),
|
||||
description=cfg.get("description", ""),
|
||||
template=cfg.get("template", ""),
|
||||
variables=cfg.get("variables", []),
|
||||
max_length=cfg.get("max_length", 4000),
|
||||
required_context=cfg.get("required_context", []),
|
||||
validation_rules=cfg.get("validation_rules", []),
|
||||
)
|
||||
TemplateRegistry.register(
|
||||
template,
|
||||
version="0.0.1",
|
||||
metadata=cfg.get("metadata"),
|
||||
activate=True,
|
||||
)
|
||||
except ValueError as exc: # noqa: BLE001
|
||||
logging.warning("Fallback template %s 注册失败:%s", template_id, exc)
|
||||
|
||||
|
||||
def register_default_templates() -> None:
|
||||
"""Load templates from configuration files, falling back to inline defaults if needed."""
|
||||
|
||||
loaded = load_external_template_configs()
|
||||
if loaded == 0:
|
||||
logging.warning(
|
||||
"未在 %s 中找到提示模板配置,使用内置 fallback。",
|
||||
EXTERNAL_TEMPLATE_DIR,
|
||||
)
|
||||
_register_inline_fallbacks()
|
||||
|
||||
|
||||
register_default_templates()
|
||||
load_external_template_configs()
|
||||
|
||||
@ -155,7 +155,6 @@ def test_template_registry():
|
||||
def test_default_templates():
|
||||
"""Test default template registration."""
|
||||
TemplateRegistry.clear(reload_defaults=True)
|
||||
from app.llm.templates import DEFAULT_TEMPLATES
|
||||
|
||||
# Verify default templates are loaded
|
||||
assert len(TemplateRegistry.list()) > 0
|
||||
|
||||
Loading…
Reference in New Issue
Block a user