国投证券-智能选股
下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-0q3x1etg--sdicsc-smart-stock-selection.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-0q3x1etg/sdicsc-smart-stock-selection。国投证券智能选股,通过自然语言描述选股条件,调用智能选股API查询符合条件的股票列表。当用户需要单指标或多指标选股时,可使用此Skill。
阅读全文 (展开查看完整说明)
概述
国投证券智能选股
概述
通过自然语言描述选股条件,调用国投证券智能选股查询API,返回符合条件的股票列表。
API 信息
- 接口地址:
https://skills.sdicsc.com.cn/skill/condition-select-stock/api/stockSelectSkill - 请求方式: GET
- 参数:
query(必填): 自然语言选股条件,需URL编码
使用流程
Step 0: 前置配置(必须首先执行)
重要:在解析用户选股意图之前,必须先完成API Key配置检查。
0.1 检查API Key配置
AI 必须首先检查是否存在 sdicsc-smart-stock-selection/memory.md 文件,并验证其中是否已配置API Key。
检查流程:
1. 检查 sdicsc-smart-stock-selection/memory.md 文件是否存在
2. 读取文件内容,查找 API Key 配置
3. 如果不存在或未配置API Key,提示用户先配置如果API Key未配置:
AI:您好!使用智能选股skill需要先配置API Key。
如未配置API Key,请先前往以下地址获取:
https://www.sdicsc.com.cn/skills
配置步骤:
1. 从管理员获取API Key
2. 在技能凭证中配置
配置完成后,请告诉我您的API Key,我将为您保存。0.2 设置环境变量
当API Key已配置在 sdicsc-smart-stock-selection/memory.md 中时,AI 必须:
- 从 sdicsc-smart-stock-selection/memory.md 读取API Key
- 设置环境变量
GT_ZNXG_KEY - 后续调用API时使用该环境变量
import os
# 从 sdicsc-smart-stock-selection/memory.md 读取API Key
def get_api_key_from_memory():
with open('./sdicsc-smart-stock-selection/memory.md', 'r', encoding='utf-8') as f:
content = f.read()
# 解析API Key
# 格式:- API Key: [用户提供的API Key]
...
# 设置环境变量
api_key = get_api_key_from_memory()
os.environ["GT_ZNXG_KEY"] = api_key0.3 API Key持久化存储
当用户提供API Key并完成凭证配置后,智能体必须执行以下操作:
1. 立即写入 sdicsc-smart-stock-selection/memory.md:
## 智能选股配置
- API Key: [用户提供的API Key]
- 环境变量名: GT_ZNXG_KEY
- 配置时间: [当前时间]2. 后续调用脚本时设置环境变量:
- 从 sdicsc-smart-stock-selection/memory.md 读取API Key
- 在调用脚本前设置环境变量
GT_ZNXG_KEY - 然后调用API执行查询
3. 确认存储成功:告知用户API Key已保存,后续使用无需重复配置。
注意事项:
- sdicsc-smart-stock-selection/memory.md 用于智能体长期记忆,确保API Key在会话间保持有效
- 环境变量
GT_ZNXG_KEY是脚本读取API Key的唯一途径 - 每次调用API前必须设置该环境变量
- 如用户更换API Key,需同步更新 sdicsc-smart-stock-selection/memory.md 中的配置
0.4 前置配置流程图
用户发起请求
↓
检查 sdicsc-smart-stock-selection/memory.md 是否存在 API Key
↓
┌─────┴─────┐
↓ ↓
不存在 存在
↓ ↓
提示用户 读取API Key
配置API Key ↓
↓ 设置环境变量
↓ GT_ZNXG_KEY
↓ ↓
↓ 继续Step 1解析选股意图
用户配置完成
↓
写入 sdicsc-smart-stock-selection/memory.md
↓
设置环境变量
↓
继续Step 1Step 1: 解析用户选股意图
将用户的自然语言描述转换为选股条件。支持的条件类型包括但不限于:
- 价格条件:股价大于100、股价低于10元
- 涨跌幅:今日涨幅大于5%、连续3天上涨
- 市值条件:市值大于1000亿
- 行业条件:半导体行业、新能源板块
- 技术指标:MACD金叉、KDJ超卖、RSI低于30、股价站上60日均线
- 财务指标:市盈率低于20、净利润增长超50%、市净率(PB)低于1、ROE大于15%、营收增长率超50%
- 资金指标:主力资金净流入、北向资金持续增仓
- 行情指标:换手率超10%、成交量放大2倍以上、振幅超过5%
- 组合条件:股价大于50且市盈率低于30
- 时间限定:支持按季度/月度/年度限定,如"最近一季度净利润增长超30%"
1.1 提取关键要素
从用户输入中提取以下关键要素:
- 数值:如 100、20%、50亿
- 指标:如 股价、市值、市盈率、ROE、净利润
- 比较符:如 大于、小于、超过、低于、增长
1.2 模糊条件识别(新增)
当用户输入包含数值但未明确指标时,需要追问确认,避免API理解歧义。
需要追问的场景:
| 用户输入 | 识别结果 | 追问话术 |
|---|---|---|
| "大于100的股票" | 数值100,指标不明确 | "您提到的'大于100'是指?①股价(元)②市值(亿)③股本(亿股)④市盈率 ⑤其他" |
| "小于50的股票" | 数值50,指标不明确 | "您提到的'小于50'是指?①股价(元)②市值(亿)③股本(亿股)④市盈率 ⑤其他" |
| "增长30%的股票" | 数值30%,指标不明确 | "您说的'增长30%'是指?①净利润增长 ②营收增长 ③毛利率增长" |
| "超过5的股票" | 数值5,指标不明确 | "您说的'超过5'是指?①涨幅(%)②换手率(%)③其他" |
判断规则:
如果用户输入包含数值(数字或百分比)
且不包含任何明确指标(股价、市值、市盈率、PE、PB、ROE、净利润、营收、涨幅、换手率等)
则判定为模糊条件,需要追问已明确的指标示例(无需追问):
- "股价大于100" → 指标明确
- "市值超过1000亿" → 指标明确
- "市盈率低于20" → 指标明确
- "换手率超5%" → 指标明确
追问交互示例:
用户:大于100的股票
AI:您提到的"大于100"是指?
① 股价(元)
② 市值(亿)
③ 股本(亿股)
④ 市盈率
⑤ 其他,请说明
用户:股价
AI:好的,查询"股价大于100的股票"...
→ 调用API
用户:增长30%的股票
AI:您说的"增长30%"是指?
① 净利润增长
② 营收增长
③ 毛利率增长
用户:净利润增长
AI:好的,查询"净利润增长超30%的股票"...
→ 调用API1.3 条件标准化
将用户确认后的条件标准化为API可理解的格式:
- 股价大于100
- 市值大于1000亿
- 市盈率低于20
- 净利润增长超30%
Step 2: 条件合理性校验(必须在调用API前执行)
重要:AI 必须在解析用户意图后、调用API前完成校验,不可跳过此步骤。
校验规则
| 校验类型 | 判断规则 | 示例 | 处理方式 |
|---|---|---|---|
| 数值范围异常 | 条件值明显超出合理范围 | "市盈率大于10000" | 提示用户确认是否输入有误 |
| 逻辑矛盾 | 多个条件之间存在逻辑冲突 | "市盈率低于10且大于50" | 指出矛盾并请用户修正 |
| 条件过于宽泛 | 条件几乎无筛选效果 | "股价大于0的股票" | 提醒条件过于宽泛,建议收窄 |
| 条件过于严苛 | 多条件组合后可能无结果 | "PE<5且ROE>50%且营收增长>200%" | 提醒条件可能过严,建议放宽 |
| 指标理解歧义 | 用户表述有多种理解 | "增长30%"(哪个指标?哪个周期?) | 参照Step 1.2模糊条件识别,追问明确具体指标 |
| 非选股条件 | 输入与选股无关 | "今天天气怎么样" | 提示此为选股工具,请输入选股条件 |
2.1 校验实现方法
AI 通过分析用户输入的文本进行校验,无需调用外部API:
| 校验类型 | 检测方法 | 示例输入 | 触发条件 |
|---|---|---|---|
| 数值范围异常 | 检测数值是否超出合理范围 | "市盈率大于10000" | 数值 > 1000 |
| 逻辑矛盾 | 检测同一指标的正反矛盾条件 | "市盈率低于10且大于50" | 同一指标同时出现"低于X"和"大于Y" |
| 条件过于宽泛 | 检测筛选效果极弱的条件 | "股价大于0" | 条件几乎无筛选效果 |
| 条件过于严苛 | 检测多条件组合 | "PE<5且ROE>50%且营收增长>200%" | 3个及以上严格条件组合 |
2.2 校验伪代码
function 校验条件(用户输入):
1. 解析用户输入,提取所有条件
2. 检查每个条件的数值是否在合理范围
3. 检查是否存在逻辑矛盾(如:同一指标同时存在"低于"和"大于")
4. 检查条件组合是否过于宽泛或严苛
if 存在任何问题:
返回 {通过: false, 问题描述, 建议}
else:
返回 {通过: true}2.3 校验不通过的处理
当校验不通过时,AI 必须:
- 向用户说明问题
- 提供修正建议
- 等待用户确认后,再决定是否调用API
禁止:在用户未确认的情况下直接调用API。
校验流程
用户输入 → 解析意图 → 合理性校验
├── 通过 → 调用API
└── 不通过 → 说明问题并请求确认
├── 用户确认执行 → 调用API
└── 用户修改条件 → 重新解析交互示例
数值异常:
用户:市盈率大于10000的股票
AI:您输入的"市盈率大于10000"数值偏高,A股市场绝大多数股票市盈率在0-1000之间。请确认:1) 确实查找该条件 2) 修改为其他数值
逻辑矛盾:
用户:市盈率低于10且市盈率大于50的股票
AI:条件存在矛盾——"低于10"和"大于50"无法同时满足,请修正。
指标歧义:
用户:增长超过30%的股票
AI:请明确:增长指标是净利润还是营收?时间周期是最近一季度还是一年?
Step 3: 调用API查询
前置要求:必须先完成Step 0的前置配置,确保已从 sdicsc-smart-stock-selection/memory.md 读取API Key并设置环境变量 GT_ZNXG_KEY。
curl -s -H "X-API-Key: $GT_ZNXG_KEY" "https://skills.sdicsc.com.cn/skill/condition-select-stock/api/stockSelectSkill?query=<URL编码的查询条件>"说明:
-H "X-API-Key: $GT_ZNXG_KEY":使用环境变量中的API Key进行认证- 环境变量
GT_ZNXG_KEY在Step 0.2中已从 sdicsc-smart-stock-selection/memory.md 读取并设置
3.1 异常处理
根据HTTP状态码和错误类型决定重试策略:
| 错误类型 | 状态码/错误 | 处理方式 |
|---|---|---|
| 可重试 | 500(服务器错误) | 自动重试,最多3次,间隔≥2秒 |
| 可重试 | 超时(Timeout) | 自动重试,最多3次,间隔≥2秒 |
| 不可重试 | 401(未授权) | 提示"未携带 API Key",引导配置 |
| 不可重试 | 403(禁止访问) | 提示"API Key 无效",引导更新 sdicsc-smart-stock-selection/memory.md |
| 不可重试 | 503(Service Unavailable qps超限) | 提示"服务器繁忙,请等待空闲时间再试" |
| 不可重试 | 429(Too Many Requests 24小时内超过接口请求次数限制) | 提示"24小时内请求过多,请等待空闲时间再试" |
重试实现伪代码:
function 调用API(查询条件, 重试次数=0):
try:
响应 = curl -H "X-API-Key: $GT_ZNXG_KEY" "API地址?query=<查询条件>"
if 响应状态码 == 200:
return 响应数据
elif 响应状态码 == 401:
提示用户"未携带 API Key,请先配置"
return None
elif 响应状态码 == 403:
提示用户"API Key 无效,请更新 sdicsc-smart-stock-selection/memory.md 中的配置"
return None
elif 响应状态码 == 500 or 超时:
if 重试次数 < 3:
等待2秒
return 调用API(查询条件, 重试次数+1)
else:
提示用户"API服务异常,请稍后重试"
return None
except Exception as e:
if 超时异常 and 重试次数 < 3:
等待2秒
return 调用API(查询条件, 重试次数+1)
else:
提示用户"网络异常,请检查网络连接"
return None错误提示示例:
- 401错误:
您好!API调用失败,错误原因:未携带 API Key。请先配置您的 API Key,配置方法请参考 Step 0。 - 403错误:
您好!API调用失败,错误原因:API Key 无效。请更新 sdicsc-smart-stock-selection/memory.md 中的 API Key 配置后重试。配置方法请参考 Step 0。 - 500错误/超时:
API服务暂时不可用,正在重试...(已尝试{次数}/3)或API服务异常,请稍后重试。
Step 4: 解析并展示结果
API返回JSON数组,每个元素包含股票信息。注意:只需调用一次API,通过 len(data) 即可获取股票数量,无需额外调用API统计。
| 字段 | 说明 | 示例 |
|---|---|---|
| 股票市场 | 市场代码 | 4353(沪主板), 4359(科创板), 4619(创业板), 4614(深主板), 4609(中小板), 5121(北交所) |
| 股票简称 | 股票名称 | 贵州茅台 |
| 股票代码 | 证券代码 | 600519 |
数量获取方式:
- 直接使用
len(data)获取返回数组长度,即为符合条件股票数量 - 无需额外调用API统计数量
解析示例:
curl -s -H "X-API-Key: $GT_ZNXG_KEY" "https://skills.sdicsc.com.cn/skill/condition-select-stock/api/stockSelectSkill?query=<URL编码条件>" | python3 -c "
import sys, json
data = json.load(sys.stdin)
count = len(data) # 股票数量
stocks = data[:10] # 取前10条展示
print(f'符合条件股票数量:{count}')
"Step 5: 格式化输出
输出要求:
- 必须展示数据截止日期,明确告知用户数据的实际日期
- 数据截止日期格式:
数据截止日期:YYYY-MM-DD(从 API 返回数据中提取实际日期) - 在结果开头清晰标注数据截止日期,避免纠纷
标准输出模板:
## 选股结果
**查询条件**:{用户输入的条件}
**数据截止日期**:{API 返回数据的实际日期,格式:YYYY-MM-DD}
**符合条件股票数量**:{数量}
| 序号 | 股票代码 | 股票简称 | 所属市场 |
|------|----------|----------|----------|
| 1 | 600519 | 贵州茅台 | 沪主板 |
| ... | ... | ... | ... |
---
**风险提示及免责声明**:国投证券Skills为AI辅助工具,所有输出内容均基于公开信息和算法模型生成,仅供学习参考,不构成任何投资建议或投资决策依据。国投证券Skills不对因使用本工具产生的任何直接或间接投资损失承担责任。市场有风险,投资需谨慎。
**注意事项**:
- 不要展示 API 调用命令、curl 示例、代码片段等技术细节
- 不要展示分析过程、中间步骤
- 直接呈现最终结果表格
- 如结果为空,简单提示"未找到符合条件的股票,建议调整查询条件"
- **数据截止日期必须展示**,告知用户数据的实际日期
- 数据截止日期应从 API 返回数据中提取(如龙虎榜交易日期、财务数据报告期等),而非当前系统时间
## 市场代码对照表
| 代码 | 市场 |
|------|------|
| 4353 | 沪主板 |
| 4359 | 科创板 |
| 4614 | 深主板 |
| 4619 | 创业板 |
| 4609 | 中小板 |
| 5121 | 北交所 |
## 使用示例
**用户**: 帮我找股价大于100的股票
**执行**:
```bash
curl -s -H "X-API-Key: $GT_ZNXG_KEY" "https://skills.sdicsc.com.cn/skill/condition-select-stock/api/stockSelectSkill?query=%E8%82%A1%E4%BB%B7%E5%A4%A7%E4%BA%8E100%E7%9A%84%E8%82%A1%E7%A5%A8"用户: 市盈率低于20的半导体股票
执行:
curl -s -H "X-API-Key: $GT_ZNXG_KEY" "https://skills.sdicsc.com.cn/skill/condition-select-stock/api/stockSelectSkill?query=%E5%B8%82%E7%9B%88%E7%8E%87%E4%BD%8E%E4%BA%8E20%E7%9A%84%E5%8D%8A%E5%AF%BC%E4%BD%93%E8%82%A1%E7%A5%A8"用户: 主力资金净流入的股票
执行:
curl -s -H "X-API-Key: $GT_ZNXG_KEY" "https://skills.sdicsc.com.cn/skill/condition-select-stock/api/stockSelectSkill?query=%E4%B8%BB%E5%8A%9B%E8%B5%84%E9%87%91%E5%87%80%E6%B5%81%E5%85%A5%E7%9A%84%E8%82%A1%E7%A5%A8"用户: 换手率超10%且ROE大于15%的股票
执行:
curl -s -H "X-API-Key: $GT_ZNXG_KEY" "https://skills.sdicsc.com.cn/skill/condition-select-stock/api/stockSelectSkill?query=%E6%8D%A2%E6%89%8B%E7%8E%87%E8%B6%8510%25%E4%B8%94ROE%E5%A4%A7%E4%BA%8E15%25%E7%9A%84%E8%82%A1%E7%A5%A8"用户: 最近一季度净利润增长超30%的股票
执行:
curl -s -H "X-API-Key: $GT_ZNXG_KEY" "https://skills.sdicsc.com.cn/skill/condition-select-stock/api/stockSelectSkill?query=%E6%9C%80%E8%BF%91%E4%B8%80%E5%AD%A3%E5%BA%A6%E5%87%80%E5%88%A9%E6%B6%A6%E5%A2%9E%E9%95%BF%E8%B6%8530%25%E7%9A%84%E8%82%A1%E7%A5%A8"连续追问与条件修正
支持在已有查询基础上进行条件追加或修正,无需重新描述全部条件:
- 追加条件:用户可在前次查询后继续补充,如"再增加一个条件,要求ROE大于15%"
- 修正条件:用户可修改已有条件,如"把市盈率改为低于30"
- 实现方式:将历史条件与新增/修改条件合并,拼接为新的完整查询语句调用API
- 示例对话流程:
- 用户:"市盈率低于20的股票" → 查询"市盈率低于20的股票"
- 用户:"再增加ROE大于15%" → 查询"市盈率低于20且ROE大于15%的股票"
- 用户:"把市盈率改为低于30" → 查询"市盈率低于30且ROE大于15%的股票"
注意事项
- 查询条件使用中文自然语言描述,API会自动理解语义
- query参数需要进行URL编码(encodeURIComponent)
- 如果返回结果为空数组,提示用户调整查询条件
- 如果API调用失败,提示用户检查网络连接或稍后重试
- 结果默认不排序,如需排序可在查询条件中指定(如"按市值从大到小排列")
- 数据输出需明确数据时点(如"截至2024Q3"),避免误导投资者决策
重要声明
风险提示及免责声明:国投证券Skills为AI辅助工具,所有输出内容均基于公开信息和算法模型生成,仅供学习参考,不构成任何投资建议或投资决策依据。国投证券Skills不对因使用本工具产生的任何直接或间接投资损失承担责任。市场有风险,投资需谨慎。数据说明:股票信息来源于公开数据源,我们不对数据的准确性、完整性做任何保证。过往业绩不代表未来表现。投资风险:股票投资有风险,入市需谨慎。投资者应自主决策,充分了解股票风险特征后理性投资。