PS E:\stock\daily_stock_analysis> python .\main.py --force-run --debug
2026-05-03 19:32:11,833 [INFO] src.config: TUSHARE_TOKEN detected, auto-injecting tushare into realtime priority: tushare,tencent,akshare_sina,efinance,akshare_em
2026-05-03 19:32:11 | INFO | src\logging_config.py:153 | 日志系统初始化完成,日志目录: logs
2026-05-03 19:32:11 | INFO | src\logging_config.py:154 | 常规日志: logs\stock_analysis_20260503.log
2026-05-03 19:32:11 | INFO | src\logging_config.py:155 | 调试日志: logs\stock_analysis_debug_20260503.log
2026-05-03 19:32:11 | INFO | main.py:741 | ============================================================
2026-05-03 19:32:11 | INFO | main.py:742 | A股自选股智能分析系统 启动
2026-05-03 19:32:11 | INFO | main.py:743 | 运行时间: 2026-05-03 19:32:11
2026-05-03 19:32:11 | INFO | main.py:744 | ============================================================
2026-05-03 19:32:11 | WARNING | main.py:749 | 仅配置 FEISHU_APP_ID / FEISHU_APP_SECRET 不会开启飞书群 Webhook 推送;如需群消息通知,请配置 FEISHU_WEBHOOK_URL。若要使用应用机器人,请同时开启 FEISHU_STREAM_ENABLED 并完成应用发布与权限配置。
2026-05-03 19:32:12 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | connect_tcp.started host='raw.githubusercontent.com' port=443 local_address=None timeout=5 socket_options=None
2026-05-03 19:32:12 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x000001F26BB11BD0>
2026-05-03 19:32:12 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | start_tls.started ssl_context=<ssl.SSLContext object at 0x000001F26BAF9370> server_hostname='raw.githubusercontent.com' timeout=5
2026-05-03 19:32:12 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x000001F26BB11B90>
2026-05-03 19:32:12 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | send_request_headers.started request=<Request [b'GET']>
2026-05-03 19:32:12 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | send_request_headers.complete
2026-05-03 19:32:12 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | send_request_body.started request=<Request [b'GET']>
2026-05-03 19:32:12 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | send_request_body.complete
2026-05-03 19:32:12 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | receive_response_headers.started request=<Request [b'GET']>
2026-05-03 19:32:12 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Connection', b'keep-alive'), (b'Content-Length', b'70869'), (b'Cache-Control', b'max-age=300'), (b'Content-Security-Policy', b"default-src 'none'; style-src 'unsafe-inline'; sandbox"), (b'Content-Type', b'text/plain; charset=utf-8'), (b'ETag', b'W/"ef1120bc585f7feb5925cff26b65f91abb098ee26e2a2ef53b078c06f0716850"'), (b'Strict-Transport-Security', b'max-age=31536000'), (b'X-Content-Type-Options', b'nosniff'), (b'X-Frame-Options', b'deny'), (b'X-XSS-Protection', b'1; mode=block'), (b'X-GitHub-Request-Id', b'6D48:31EC95:1358205:25317E1:69F4349E'), (b'Content-Encoding', b'gzip'), (b'Accept-Ranges', b'bytes'), (b'Date', b'Sun, 03 May 2026 11:32:17 GMT'), (b'Via', b'1.1 varnish'), (b'X-Served-By', b'cache-sin-wsss1830072-SIN'), (b'X-Cache', b'HIT'), (b'X-Cache-Hits', b'95'), (b'X-Timer', b'S1777807938.519963,VS0,VE0'), (b'Vary', b'Authorization,Accept-Encoding'), (b'Access-Control-Allow-Origin', b'*'), (b'Cross-Origin-Resource-Policy', b'cross-origin'), (b'X-Fastly-Request-ID', b'712d0968f8045cdbb2e7e32a83076db8b34824af'), (b'Expires', b'Sun, 03 May 2026 11:37:17 GMT'), (b'Source-Age', b'218')])
2026-05-03 19:32:12 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | receive_response_body.started request=<Request [b'GET']>
2026-05-03 19:32:13 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | receive_response_body.complete
2026-05-03 19:32:13 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | response_closed.started
2026-05-03 19:32:13 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | response_closed.complete
2026-05-03 19:32:13 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | close.started
2026-05-03 19:32:13 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | close.complete
19:32:15 - LiteLLM:DEBUG: litellm_logging.py:199 - [Non-Blocking] Unable to import GenericAPILogger - LiteLLM Enterprise Feature - No module named 'litellm_enterprise'
2026-05-03 19:32:15 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:199 | [Non-Blocking] Unable to import GenericAPILogger - LiteLLM Enterprise Feature - No module named 'litellm_enterprise'
19:32:16 - LiteLLM:DEBUG: http_handler.py:794 - Using AiohttpTransport...
2026-05-03 19:32:16 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\llms\custom_httpx\http_handler.py:794 | Using AiohttpTransport...
19:32:16 - LiteLLM:DEBUG: http_handler.py:862 - Creating AiohttpTransport...
2026-05-03 19:32:16 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\llms\custom_httpx\http_handler.py:862 | Creating AiohttpTransport...
19:32:16 - LiteLLM:DEBUG: http_handler.py:876 - NEW SESSION: Creating new ClientSession (no shared session provided)
2026-05-03 19:32:16 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\llms\custom_httpx\http_handler.py:876 | NEW SESSION: Creating new ClientSession (no shared session provided)
19:32:16 - LiteLLM:DEBUG: http_handler.py:794 - Using AiohttpTransport...
2026-05-03 19:32:16 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\llms\custom_httpx\http_handler.py:794 | Using AiohttpTransport...
19:32:16 - LiteLLM:DEBUG: http_handler.py:862 - Creating AiohttpTransport...
2026-05-03 19:32:16 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\llms\custom_httpx\http_handler.py:862 | Creating AiohttpTransport...
19:32:16 - LiteLLM:DEBUG: http_handler.py:876 - NEW SESSION: Creating new ClientSession (no shared session provided)
2026-05-03 19:32:16 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\llms\custom_httpx\http_handler.py:876 | NEW SESSION: Creating new ClientSession (no shared session provided)
19:32:16 - LiteLLM:DEBUG: http_handler.py:794 - Using AiohttpTransport...
2026-05-03 19:32:16 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\llms\custom_httpx\http_handler.py:794 | Using AiohttpTransport...
19:32:16 - LiteLLM:DEBUG: http_handler.py:862 - Creating AiohttpTransport...
2026-05-03 19:32:16 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\llms\custom_httpx\http_handler.py:862 | Creating AiohttpTransport...
19:32:16 - LiteLLM:DEBUG: http_handler.py:876 - NEW SESSION: Creating new ClientSession (no shared session provided)
2026-05-03 19:32:16 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\llms\custom_httpx\http_handler.py:876 | NEW SESSION: Creating new ClientSession (no shared session provided)
19:32:16 - LiteLLM:DEBUG: http_handler.py:794 - Using AiohttpTransport...
2026-05-03 19:32:16 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\llms\custom_httpx\http_handler.py:794 | Using AiohttpTransport...
19:32:16 - LiteLLM:DEBUG: http_handler.py:862 - Creating AiohttpTransport...
2026-05-03 19:32:16 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\llms\custom_httpx\http_handler.py:862 | Creating AiohttpTransport...
19:32:16 - LiteLLM:DEBUG: http_handler.py:876 - NEW SESSION: Creating new ClientSession (no shared session provided)
2026-05-03 19:32:16 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\llms\custom_httpx\http_handler.py:876 | NEW SESSION: Creating new ClientSession (no shared session provided)
2026-05-03 19:32:16 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: bottom_volume (bottom_volume.yaml)
2026-05-03 19:32:16 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: box_oscillation (box_oscillation.yaml)
2026-05-03 19:32:16 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: bull_trend (bull_trend.yaml)
2026-05-03 19:32:16 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: chan_theory (chan_theory.yaml)
2026-05-03 19:32:16 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: dragon_head (dragon_head.yaml)
2026-05-03 19:32:16 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: emotion_cycle (emotion_cycle.yaml)
2026-05-03 19:32:16 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: ma_golden_cross (ma_golden_cross.yaml)
2026-05-03 19:32:16 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: one_yang_three_yin (one_yang_three_yin.yaml)
2026-05-03 19:32:16 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: shrink_pullback (shrink_pullback.yaml)
2026-05-03 19:32:16 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: volume_breakout (volume_breakout.yaml)
2026-05-03 19:32:16 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: wave_theory (wave_theory.yaml)
2026-05-03 19:32:18 | INFO | src\storage.py:675 | 数据库初始化完成: sqlite:///E:\stock\daily_stock_analysis\data\stock_analysis.db
2026-05-03 19:32:18 | DEBUG | data_provider\tushare_fetcher.py:182 | Tushare API client configured for direct HTTP calls
2026-05-03 19:32:18 | INFO | data_provider\tushare_fetcher.py:169 | Tushare API 初始化成功
2026-05-03 19:32:18 | INFO | data_provider\tushare_fetcher.py:200 | ✅ 检测到 TUSHARE_TOKEN 且 API 初始化成功,Tushare 数据源优先级提升为最高 (Priority
-1)
2026-05-03 19:32:18 | INFO | data_provider\base.py:842 | 已初始化 7 个数据源(按优先级): TushareFetcher(P-1), EfinanceFetcher(P0), AkshareFetcher(P1), PytdxFetcher(P2), BaostockFetcher(P3), YfinanceFetcher(P4), LongbridgeFetcher(P5)
2026-05-03 19:32:18 | INFO | src\analyzer.py:981 | Analyzer LLM: litellm initialized (model=openai/qwen-plus)
2026-05-03 19:32:18 | INFO | src\notification.py:173 | 已配置 1 个通知渠道:自定义Webhook
2026-05-03 19:32:18 | INFO | src\search_service.py:2012 | 已启用 SearXNG 公共实例自动发现模式
2026-05-03 19:32:18 | INFO | src\search_service.py:2023 | 新闻时效策略已启用: profile=short, profile_days=3, NEWS_MAX_AGE_DAYS=3, effective_window=3
2026-05-03 19:32:18 | INFO | src\core\pipeline.py:116 | 调度器初始化完成,最大并发数: 3
2026-05-03 19:32:18 | INFO | src\core\pipeline.py:117 | 已启用技术分析引擎(均线/趋势/量价指标)
2026-05-03 19:32:18 | INFO | src\core\pipeline.py:120 | 实时行情已启用 (优先级: tushare,tencent,akshare_sina,efinance,akshare_em)
2026-05-03 19:32:18 | INFO | src\core\pipeline.py:124 | 筹码分布分析已启用
2026-05-03 19:32:18 | INFO | src\core\pipeline.py:128 | 搜索服务已启用
2026-05-03 19:32:18 | INFO | src\core\pipeline.py:1224 | ===== 开始分析 1 只股票 =====
2026-05-03 19:32:18 | INFO | src\core\pipeline.py:1225 | 股票列表: 300750
2026-05-03 19:32:18 | INFO | src\core\pipeline.py:1226 | 并发数: 3, 模式: 完整分析
2026-05-03 19:32:18 | INFO | src\core\pipeline.py:1142 | ========== 开始处理 300750 ==========
2026-05-03 19:32:18 | INFO | src\core\pipeline.py:173 | 宁德时代(300750) 2026-04-30 数据已存在,跳过获取(断点续传)
2026-05-03 19:32:18 | DEBUG | data_provider\tushare_fetcher.py:255 | Tushare 当前分钟调用次数: 1/80
2026-05-03 19:32:18 | DEBUG | data_provider\tushare_fetcher.py:684 | Tushare Pro 实时行情不可用 (可能是积分不足): 请指定正确的接口名
2026-05-03 19:32:18 | INFO | data_provider\base.py:1204 | [实时行情] 300750 成功获取 (来源: tushare)
2026-05-03 19:32:18 | DEBUG | data_provider\base.py:1209 | [实时行情] 300750 部分字段缺失,尝试从后续数据源补充
2026-05-03 19:32:18 | INFO | data_provider\akshare_fetcher.py:1099 | [API调用] 腾讯财经接口获取 300750 实时行情: endpoint=qt.gtimg.cn/q, symbol=sz300750
2026-05-03 19:32:18 | DEBUG | data_provider\base.py:466 | 随机休眠 3.55 秒...
2026-05-03 19:32:22 | INFO | data_provider\akshare_fetcher.py:1204 | [实时行情-腾讯] 300750 宁德时代: endpoint=qt.gtimg.cn/q, 价格=436.0, 涨跌=-2.02%,
量比=0.82, 换手率=0.7%, elapsed=3.61s
2026-05-03 19:32:22 | INFO | data_provider\base.py:1219 | [实时行情] 300750 从 tencent 补充了缺失字段: ['volume_ratio', 'turnover_rate', 'pe_ratio', 'pb_ratio', 'total_mv', 'circ_mv', 'amplitude']
2026-05-03 19:32:22 | INFO | src\core\pipeline.py:232 | 宁德时代(300750) 实时行情: 价格=436.0, 量比=0.82, 换手率=0.7% (来源: tushare)
2026-05-03 19:32:22 | DEBUG | data_provider\tushare_fetcher.py:255 | Tushare 当前分钟调用次数: 2/80
2026-05-03 19:32:22 | WARNING | data_provider\tushare_fetcher.py:1141 | [Tushare] 获取筹码分布失败 300750: 抱歉,您没有接口(trade_cal)访问权限,权限的具体
详情访问:https://tushare.pro/document/1?doc_id=108。
2026-05-03 19:32:23 | DEBUG | data_provider\akshare_fetcher.py:297 | 设置 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0...
2026-05-03 19:32:23 | DEBUG | data_provider\akshare_fetcher.py:315 | 补充休眠 1.49 秒
2026-05-03 19:32:24 | DEBUG | data_provider\base.py:466 | 随机休眠 2.82 秒...
2026-05-03 19:32:27 | INFO | data_provider\akshare_fetcher.py:1483 | [API调用] ak.stock_cyq_em(symbol=300750) 获取筹码分布...
2026-05-03 19:32:27 | DEBUG | D:\Programs\python311\Lib\asyncio\proactor_events.py:633 | Using proactor: IocpProactor
2026-05-03 19:32:28 | INFO | data_provider\akshare_fetcher.py:1495 | [API返回] ak.stock_cyq_em 成功: 返回 90 天数据, 耗时 1.43s
2026-05-03 19:32:28 | DEBUG | data_provider\akshare_fetcher.py:1496 | [API返回] 筹码数据列名: ['日期', '获利比例', '平均成本', '90成本-低', '90成本-高', '90集中度', '70成本-低', '70成本-高', '70集中度']
2026-05-03 19:32:28 | INFO | data_provider\akshare_fetcher.py:1515 | [筹码分布] 300750 日期=2026-04-30: 获利比例=89.8%, 平均成本=376.58, 90%集中度=23.00%, 70%集中度=11.29%
2026-05-03 19:32:28 | INFO | data_provider\base.py:1379 | [筹码分布] 300750 成功获取 (来源: AkshareFetcher)
2026-05-03 19:32:28 | INFO | src\core\pipeline.py:251 | 宁德时代(300750) 筹码分布: 获利比例=89.8%, 90%集中度=23.00%
2026-05-03 19:32:28 | DEBUG | data_provider\tushare_fetcher.py:255 | Tushare 当前分钟调用次数: 3/80
2026-05-03 19:32:28 | DEBUG | data_provider\tushare_fetcher.py:684 | Tushare Pro 实时行情不可用 (可能是积分不足): 请指定正确的接口名
2026-05-03 19:32:28 | INFO | data_provider\base.py:1204 | [实时行情] 300750 成功获取 (来源: tushare)
2026-05-03 19:32:28 | DEBUG | data_provider\base.py:1209 | [实时行情] 300750 部分字段缺失,尝试从后续数据源补充
2026-05-03 19:32:28 | INFO | data_provider\akshare_fetcher.py:1099 | [API调用] 腾讯财经接口获取 300750 实时行情: endpoint=qt.gtimg.cn/q, symbol=sz300750
2026-05-03 19:32:28 | DEBUG | data_provider\akshare_fetcher.py:315 | 补充休眠 0.41 秒
2026-05-03 19:32:29 | DEBUG | data_provider\base.py:466 | 随机休眠 4.82 秒...
2026-05-03 19:32:30 | DEBUG | data_provider\base.py:1474 | [EfinanceFetcher] 获取所属板块失败: No module named 'multitasking'
2026-05-03 19:32:30 | INFO | src\core\pipeline.py:314 | 宁德时代(300750) 趋势分析: 多头排列, 买入信号=买入, 评分=69
2026-05-03 19:32:30 | INFO | src\core\pipeline.py:335 | 宁德时代(300750) 开始多维度情报搜索...
2026-05-03 19:32:30 | INFO | src\search_service.py:2898 | 开始多维度情报搜索: 宁德时代(300750), 时间范围: 近3天 (profile=short, NEWS_MAX_AGE_DAYS=3),
目标条数=3, provider请求条数=6
2026-05-03 19:32:30 | INFO | src\search_service.py:2927 | [情报搜索] 最新消息: 使用 SearXNG
2026-05-03 19:32:34 | INFO | data_provider\akshare_fetcher.py:1204 | [实时行情-腾讯] 300750 宁德时代: endpoint=qt.gtimg.cn/q, 价格=436.0, 涨跌=-2.02%,
量比=0.82, 换手率=0.7%, elapsed=5.26s
2026-05-03 19:32:34 | INFO | data_provider\base.py:1219 | [实时行情] 300750 从 tencent 补充了缺失字段: ['volume_ratio', 'turnover_rate', 'pe_ratio', 'pb_ratio', 'total_mv', 'circ_mv', 'amplitude']
2026-05-03 19:32:40 | WARNING | src\search_service.py:1657 | [SearXNG] 拉取公共实例列表失败: HTTPSConnectionPool(host='searx.space', port=443): Max retries exceeded with url: /data/instances.json (Caused by ConnectTimeoutError(<HTTPSConnection(host='searx.space', port=443) at 0x1f29606b6d0>, 'Connection to searx.space timed out. (connect timeout=5)'))
2026-05-03 19:32:40 | WARNING | src\search_service.py:1673 | [SearXNG] 公共实例冷启动刷新失败,60s 内不再刷新
2026-05-03 19:32:40 | WARNING | src\search_service.py:2965 | [情报搜索] 最新消息: 搜索失败 - 未获取到可用的公共 SearXNG 实例
2026-05-03 19:32:40 | INFO | src\search_service.py:2927 | [情报搜索] 机构分析: 使用 SearXNG
2026-05-03 19:32:40 | DEBUG | src\search_service.py:1621 | [SearXNG] 公共实例冷启动刷新退避中,剩余 49s
2026-05-03 19:32:40 | WARNING | src\search_service.py:2965 | [情报搜索] 机构分析: 搜索失败 - 未获取到可用的公共 SearXNG 实例
2026-05-03 19:32:41 | INFO | src\search_service.py:2927 | [情报搜索] 风险排查: 使用 SearXNG
2026-05-03 19:32:41 | DEBUG | src\search_service.py:1621 | [SearXNG] 公共实例冷启动刷新退避中,剩余 49s
2026-05-03 19:32:41 | WARNING | src\search_service.py:2965 | [情报搜索] 风险排查: 搜索失败 - 未获取到可用的公共 SearXNG 实例
2026-05-03 19:32:41 | INFO | src\search_service.py:2927 | [情报搜索] 公司公告: 使用 SearXNG
2026-05-03 19:32:41 | DEBUG | src\search_service.py:1621 | [SearXNG] 公共实例冷启动刷新退避中,剩余 48s
2026-05-03 19:32:41 | WARNING | src\search_service.py:2965 | [情报搜索] 公司公告: 搜索失败 - 未获取到可用的公共 SearXNG 实例
2026-05-03 19:32:42 | INFO | src\search_service.py:2927 | [情报搜索] 业绩预期: 使用 SearXNG
2026-05-03 19:32:42 | DEBUG | src\search_service.py:1621 | [SearXNG] 公共实例冷启动刷新退避中,剩余 48s
2026-05-03 19:32:42 | WARNING | src\search_service.py:2965 | [情报搜索] 业绩预期: 搜索失败 - 未获取到可用的公共 SearXNG 实例
2026-05-03 19:32:42 | INFO | src\core\pipeline.py:350 | 宁德时代(300750) 情报搜索完成: 共 0 条结果
2026-05-03 19:32:42 | DEBUG | src\core\pipeline.py:351 | 宁德时代(300750) 情报搜索结果:
【宁德时代 情报搜索结果】
📰 最新消息 (来源: SearXNG):
未找到相关信息
📋 公司公告 (来源: SearXNG):
未找到相关信息
📈 机构分析 (来源: SearXNG):
未找到相关信息
⚠️ 风险排查 (来源: SearXNG):
未找到相关信息
📊 业绩预期 (来源: SearXNG):
未找到相关信息
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: bottom_volume (bottom_volume.yaml)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: box_oscillation (box_oscillation.yaml)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: bull_trend (bull_trend.yaml)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: chan_theory (chan_theory.yaml)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: dragon_head (dragon_head.yaml)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: emotion_cycle (emotion_cycle.yaml)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: ma_golden_cross (ma_golden_cross.yaml)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: one_yang_three_yin (one_yang_three_yin.yaml)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: shrink_pullback (shrink_pullback.yaml)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: volume_breakout (volume_breakout.yaml)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:300 | Loaded skill from YAML: wave_theory (wave_theory.yaml)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:342 | Registered skill: bottom_volume (底部放量)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:342 | Registered skill: box_oscillation (箱体震荡)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:342 | Registered skill: bull_trend (默认多头趋势)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:342 | Registered skill: chan_theory (缠论)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:342 | Registered skill: dragon_head (龙头策略)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:342 | Registered skill: emotion_cycle (情绪周期)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:342 | Registered skill: ma_golden_cross (均线金叉)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:342 | Registered skill: one_yang_three_yin (一阳夹三阴)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:342 | Registered skill: shrink_pullback (缩量回踩)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:342 | Registered skill: volume_breakout (放量突破)
2026-05-03 19:32:42 | DEBUG | src\agent\skills\base.py:342 | Registered skill: wave_theory (波浪理论)
2026-05-03 19:32:42 | INFO | src\agent\skills\base.py:360 | Loaded 11 built-in skills from E:\stock\daily_stock_analysis\strategies
2026-05-03 19:32:42 | INFO | src\agent\factory.py:211 | [AgentFactory] SkillManager prototype cached (11 skills)
2026-05-03 19:32:42 | INFO | src\agent\skills\base.py:431 | Activated skills: ['bull_trend']
2026-05-03 19:32:42 | INFO | src\agent\factory.py:255 | [AgentFactory] Activated skills: ['bull_trend']
2026-05-03 19:32:42 | DEBUG | src\analyzer.py:1143 | [LLM] 请求前等待 2.0 秒...
2026-05-03 19:32:44 | INFO | src\analyzer.py:1179 | ========== AI 分析 宁德时代(300750) ==========
2026-05-03 19:32:44 | INFO | src\analyzer.py:1180 | [LLM配置] 模型: openai/qwen-plus
2026-05-03 19:32:44 | INFO | src\analyzer.py:1181 | [LLM配置] Prompt 长度: 2927 字符
2026-05-03 19:32:44 | INFO | src\analyzer.py:1182 | [LLM配置] 是否包含新闻: 是
2026-05-03 19:32:44 | INFO | src\analyzer.py:1186 | [LLM Prompt 预览]
决策仪表盘分析请求
📊 股票基础信息
| 项目 | 数据 |
|------|------|
| 股票代码 | **300750** |
| 股票名称 | **宁德时代** |
| 分析日期 | 2026-05-03 |
📈 技术面数据
今日行情
| 指标 | 数值 |
|------|------|
| 收盘价 | 436.0 元 |
| 开盘价 | 446.5 元 |
| 最高价 | 449.5 元 |
| 最低价 | 436.0 元 |
| 涨跌幅 | -2.02% |
| 成交量 | 29.81 万股 |
| 成交额 | 131.27 亿元 |
均线系统(关键判断指标)
| 均线 | 数值 | 说明 |
|------|------|------|
| MA5 | 437.68999999999994 | 短期趋势线 |
| MA10 | 436.75700000000006 | 中短期趋势线 |
| MA20 | 420.8265 | 中期趋势线 |
| 均线形态 | 震荡整理 ↔️ | 多头/空头/缠绕 |
实时行...
2026-05-03 19:32:44 | DEBUG | src\analyzer.py:1187 | === 完整 Prompt (2927字符) ===
决策仪表盘分析请求
📊 股票基础信息
| 项目 | 数据 |
|------|------|
| 股票代码 | **300750** |
| 股票名称 | **宁德时代** |
| 分析日期 | 2026-05-03 |
📈 技术面数据
今日行情
| 指标 | 数值 |
|------|------|
| 收盘价 | 436.0 元 |
| 开盘价 | 446.5 元 |
| 最高价 | 449.5 元 |
| 最低价 | 436.0 元 |
| 涨跌幅 | -2.02% |
| 成交量 | 29.81 万股 |
| 成交额 | 131.27 亿元 |
均线系统(关键判断指标)
| 均线 | 数值 | 说明 |
|------|------|------|
| MA5 | 437.68999999999994 | 短期趋势线 |
| MA10 | 436.75700000000006 | 中短期趋势线 |
| MA20 | 420.8265 | 中期趋势线 |
| 均线形态 | 震荡整理 ↔️ | 多头/空头/缠绕 |
实时行情增强数据
| 指标 | 数值 | 解读 |
|------|------|------|
| 当前价格 | 436.0 元 | |
| **量比** | **0.82** | 正常 |
| **换手率** | **0.7%** | |
| 市盈率(动态) | 25.54 | |
| 市净率 | 6.17 | |
| 总市值 | 20171.51 亿元 | |
| 流通市值 | 18559.99 亿元 | |
| 60日涨跌幅 | N/A% | 中期表现 |
财报与分红(价值投资口径)
| 指标 | 数值 | 说明 |
|------|------|------|
| 最近报告期 | N/A | 来自结构化财报字段 |
| 营业收入 | N/A | |
| 归母净利润 | N/A | |
| 经营现金流 | N/A | |
| ROE | N/A | |
| 近12个月每股现金分红 | N/A | 仅现金分红、税前口径 |
| TTM 股息率 | N/A | 公式:近12个月每股现金分红 / 当前价格 × 100% |
| TTM 分红事件数 | N/A | |
> 若上述字段为 N/A 或缺失,请明确写"数据缺失,无法判断",禁止编造。
筹码分布数据(效率指标)
| 指标 | 数值 | 健康标准 |
|------|------|----------|
| **获利比例** | **89.8%** | 70-90%时警惕 |
| 平均成本 | 376.58 元 | 现价应高于5-15% |
| 90%筹码集中度 | 23.00% | <15%为集中 |
| 70%筹码集中度 | 11.29% | |
| 筹码状态 | 获利盘较高(获利盘70-90%),筹码分散度中等,现价略高于成本15.8% | |
趋势分析预判(基于交易理念)
| 指标 | 数值 | 判定 |
|------|------|------|
| 趋势状态 | 多头排列 | |
| 均线排列 | 多头排列 MA5>MA10>MA20 | MA5>MA10>MA20为多头 |
| 趋势强度 | 75/100 | |
| **乖离率(MA5)** | **-0.39%** | ✅ 安全范围 |
| 乖离率(MA10) | -0.17% | |
| 量能状态 | 量能正常 | 量能正常 |
| 系统信号 | 买入 | |
| 系统评分 | 69/100 | |
系统分析理由
**买入理由**:
-
✅ 多头排列,顺势做多
-
✅ 价格略低于MA5(-0.4%),回踩买点
-
✓ 多头排列,持续上涨
-
RSI中性(55.1),震荡整理中
**风险因素**:
- 无
量价变化
-
成交量较昨日变化:0.01倍
-
价格较昨日变化:-2.02%
📰 舆情情报
以下是 **宁德时代(300750)** 近3日的新闻搜索结果,请重点提取:
-
🚨 **风险警报**:减持、处罚、利空
-
🎯 **利好催化**:业绩、合同、政策
-
📊 **业绩预期**:年报预告、业绩快报
-
🕒 **时间规则(强制)**:
-
输出到 `risk_alerts` / `positive_catalysts` / `latest_news` 的每一条都必须带具体日期(YYYY-MM-DD)
-
超出近3日窗口的新闻一律忽略
-
时间未知、无法确定发布日期的新闻一律忽略
```
【宁德时代 情报搜索结果】
📰 最新消息 (来源: SearXNG):
未找到相关信息
📋 公司公告 (来源: SearXNG):
未找到相关信息
📈 机构分析 (来源: SearXNG):
未找到相关信息
⚠️ 风险排查 (来源: SearXNG):
未找到相关信息
📊 业绩预期 (来源: SearXNG):
未找到相关信息
```
✅ 分析任务
请为 **宁德时代(300750)** 生成【决策仪表盘】,严格按照 JSON 格式输出。
⚠️ 重要:输出正确的股票名称格式
正确的股票名称格式为"股票名称(股票代码)",例如"贵州茅台(600519)"。
如果上方显示的股票名称为"股票300750"或不正确,请在分析开头**明确输出该股票的正确中文全称**。
重点关注(必须明确回答):
-
❓ 是否满足 MA5>MA10>MA20 多头排列?
-
❓ 当前乖离率是否在安全范围内(<5%)?------ 超过5%必须标注"严禁追高"
-
❓ 量能是否配合(缩量回调/放量突破)?
-
❓ 筹码结构是否健康?
-
❓ 消息面有无重大利空?(减持、处罚、业绩变脸等)
决策仪表盘要求:
-
**股票名称**:必须输出正确的中文全称(如"贵州茅台"而非"股票600519")
-
**核心结论**:一句话说清该买/该卖/该等
-
**持仓分类建议**:空仓者怎么做 vs 持仓者怎么做
-
**具体狙击点位**:买入价、止损价、目标价(精确到分)
-
**检查清单**:每项用 ✅/⚠️/❌ 标记
-
**消息面时间合规**:`latest_news`、`risk_alerts`、`positive_catalysts` 不得包含超出近3日或时间未知的信息
请输出完整的 JSON 格式决策仪表盘。
输出语言要求(最高优先级)
-
所有 JSON 键名必须保持不变,不要翻译键名。
-
`decision_type` 必须保持为 `buy`、`hold`、`sell`。
-
所有面向用户的人类可读文本值必须使用中文。
-
当数据缺失时,请使用中文直接说明"数据缺失,无法判断"。
=== End Prompt ===
2026-05-03 19:32:45 | INFO | src\analyzer.py:1195 | [LLM调用] 开始调用 openai/qwen-plus...
19:32:45 - LiteLLM:DEBUG: utils.py:481 -
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:481 |
19:32:45 - LiteLLM:DEBUG: utils.py:481 - Request to litellm:
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:481 | Request to litellm:
19:32:45 - LiteLLM:DEBUG: utils.py:481 - litellm.completion(model='openai/qwen-plus', messages=[{'role': 'system', 'content': '你是一位专注于趋势交易的 A
股投资分析师,负责生成专业的【决策仪表盘】分析报告。\n\n- 本次分析对象为 **A 股**(中国沪深交易所上市股票)。\n- 请关注 A 股特有的涨跌停机制(±10%/±20%/±30%)、T+1 交易制度及相关政策因素。\n\n## 默认技能基线(必须严格遵守)\n\n当前激活的 skills 可以补充细化分析视角,但默认风险控制和交易节奏必须遵守以下基线。\n\n### 1. 严进策略(不追高)\n- **绝对不追高**:当股价偏离 MA5 超过 5% 时,坚决不买入\n- 乖离率 < 2%:最佳买点区间\n- 乖离率 2-5%:可小仓介入\n- 乖离率 > 5%:严禁追高!直接判定为"观望"\n\n### 2. 趋势交易(顺势而为)\n- **多头排列必须条件**:MA5 > MA10 > MA20\n- 只做多头排列的股票,空头排列坚决不碰\n- 均线发散
上行优于均线粘合\n\n### 3. 效率优先(筹码结构)\n- 关注筹码集中度:90%集中度 < 15% 表示筹码集中\n- 获利比例分析:70-90% 获利盘时需警惕获利回吐\n- 平均成本
与现价关系:现价高于平均成本 5-15% 为健康\n\n### 4. 买点偏好(回踩支撑)\n- **最佳买点**:缩量回踩 MA5 获得支撑\n- **次优买点**:回踩 MA10 获得支撑\n- **观
望情况**:跌破 MA20 时观望\n\n### 5. 风险排查重点\n- 减持公告、业绩预亏、监管处罚、行业政策利空、大额解禁\n\n### 6. 估值关注(PE/PB)\n- PE 明显偏高时需在
风险点中说明\n\n### 7. 强势趋势股放宽\n- 强势趋势股可适当放宽乖离率要求,轻仓追踪但需设止损\n\n\n## 输出格式:决策仪表盘 JSON\n\n请严格按照以下 JSON 格式输
出,这是一个完整的【决策仪表盘】:\n\n```json\n{\n "stock_name": "股票中文名称",\n "sentiment_score": 0-100整数,\n "trend_prediction": "强烈看多/
看多/震荡/看空/强烈看空",\n "operation_advice": "买入/加仓/持有/减仓/卖出/观望",\n "decision_type": "buy/hold/sell",\n "confidence_level": "高/中/低",\n\n "dashboard": {\n "core_conclusion": {\n "one_sentence": "一句话核心结论(30字以内,直接告诉用户做什么)",\n "signal_type": "🟢买入信号/🟡持有观望/🔴卖出信号/⚠️风险警告",\n "time_sensitivity": "立即行动/今日内/本周内/不急",\n "position_advice": {\n
"no_position": "空仓者建议:具体操作指引",\n "has_position": "持仓者建议:具体操作指引"\n }\n },\n\n
"data_perspective": {\n "trend_status": {\n "ma_alignment": "均线排列状态描述",\n "is_bullish": true/false,\n
"trend_score": 0-100\n },\n "price_position": {\n "current_price": 当前价格数值,\n "ma5":
MA5数值,\n "ma10": MA10数值,\n "ma20": MA20数值,\n "bias_ma5": 乖离率百分比数值,\n "bias_status": "安全/警戒/危险",\n "support_level": 支撑位价格,\n "resistance_level": 压力位价格\n },\n "volume_analysis": {\n "volume_ratio": 量比数值,\n "volume_status": "放量/缩量/平量",\n "turnover_rate": 换手率百分比,\n
"volume_meaning": "量能含义解读(如:缩量回调表示抛压减轻)"\n },\n "chip_structure": {\n "profit_ratio": 获利比例,\n "avg_cost": 平均成本,\n "concentration": 筹码集中度,\n "chip_health": "健康/一般/警惕"\n
}\n },\n\n "intelligence": {\n "latest_news": "【最新消息】近期重要新闻摘要",\n "risk_alerts": ["风险点1:具体描述
", "风险点2:具体描述"],\n "positive_catalysts": ["利好1:具体描述", "利好2:具体描述"],\n "earnings_outlook": "业绩预期分析(基于年
报预告、业绩快报等)",\n "sentiment_summary": "舆情情绪一句话总结"\n },\n\n "battle_plan": {\n "sniper_points": {\n
"ideal_buy": "理想买入点:XX元(在MA5附近)",\n "secondary_buy": "次优买入点:XX元(在MA10附近)",\n "stop_loss": "止损位:XX元(跌破MA20或X%)",\n "take_profit": "目标位:XX元(前高/整数关口)"\n },\n "position_strategy": {\n
"suggested_position": "建议仓位:X成",\n "entry_plan": "分批建仓策略描述",\n "risk_control": "风控策略描述"\n
},\n "action_checklist": [\n "✅/⚠️/❌ 检查项1:多头排列",\n "✅/⚠️/❌ 检查项2:乖离率合理(强势趋势可放宽)",\
n "✅/⚠️/❌ 检查项3:量能配合",\n "✅/⚠️/❌ 检查项4:无重大利空",\n "✅/⚠️/❌ 检查项5:筹码健康",\n "
✅/⚠️/❌ 检查项6:PE估值合理"\n ]\n }\n },\n\n "analysis_summary": "100字综合分析摘要",\n "key_points": "3-5个核心看点,逗号分隔",
\n "risk_warning": "风险提示",\n "buy_reason": "操作理由,引用交易理念",\n\n "trend_analysis": "走势形态分析",\n "short_term_outlook": "短期1-3日展望",\n "medium_term_outlook": "中期1-2周展望",\n "technical_analysis": "技术面综合分析",\n "ma_analysis": "均线系统分析",\n "volume_analysis": "量能分析",\n "pattern_analysis": "K线形态分析",\n "fundamental_analysis": "基本面分析",\n "sector_position": "板块行业分析",\n "company_highlights": "公司亮点/风险",\n "news_summary": "新闻摘要",\n "market_sentiment": "市场情绪",\n "hot_topics": "相关热点",\n\n "search_performed": true/false,\n "data_sources": "数据来源说明"\n}\n```\n\n## 评分标准\n\n### 强烈买入(80-100分):\n- ✅ 多头排列:MA5 > MA10 > MA20\n- ✅ 低乖离率:<2%,
最佳买点\n- ✅ 缩量回调或放量突破\n- ✅ 筹码集中健康\n- ✅ 消息面有利好催化\n\n### 买入(60-79分):\n- ✅ 多头排列或弱势多头\n- ✅ 乖离率 <5%\n- ✅ 量能正常\n-
⚪ 允许一项次要条件不满足\n\n### 观望(40-59分):\n- ⚠️ 乖离率 >5%(追高风险)\n- ⚠️ 均线缠绕趋势不明\n- ⚠️ 有风险事件\n\n### 卖出/减仓(0-39分):\n- ❌ 空
头排列\n- ❌ 跌破MA20\n- ❌ 放量下跌\n- ❌ 重大利空\n\n## 决策仪表盘核心原则\n\n1. **核心结论先行**:一句话说清该买该卖\n2. **分持仓建议**:空仓者和持仓者给不
同建议\n3. **精确狙击点**:必须给出具体价格,不说模糊的话\n4. **检查清单可视化**:用 ✅⚠️❌ 明确显示每项检查结果\n5. **风险优先级**:舆情中的风险点要醒目标出
\n\n## 输出语言(最高优先级)\n\n- 所有 JSON 键名保持不变。\n- `decision_type` 必须保持为 `buy|hold|sell`。\n- 所有面向用户的人类可读文本值必须使用中文。\n'}, {'role': 'user', 'content': '# 决策仪表盘分析请求\n\n## 📊 股票基础信息\n| 项目 | 数据 |\n|------|------|\n| 股票代码 | **300750** |\n| 股票名称 | **宁
德时代** |\n| 分析日期 | 2026-05-03 |\n\n---\n\n## 📈 技术面数据\n\n### 今日行情\n| 指标 | 数值 |\n|------|------|\n| 收盘价 | 436.0 元 |\n| 开盘价 | 446.5 元 |\n| 最高价 | 449.5 元 |\n| 最低价 | 436.0 元 |\n| 涨跌幅 | -2.02% |\n| 成交量 | 29.81 万股 |\n| 成交额 | 131.27 亿元 |\n\n### 均线系统(关键判断指标)
\n| 均线 | 数值 | 说明 |\n|------|------|------|\n| MA5 | 437.68999999999994 | 短期趋势线 |\n| MA10 | 436.75700000000006 | 中短期趋势线 |\n| MA20 | 420.8265 | 中期趋势线 |\n| 均线形态 | 震荡整理 ↔️ | 多头/空头/缠绕 |\n\n### 实时行情增强数据\n| 指标 | 数值 | 解读 |\n|------|------|------|\n| 当前价格 | 436.0
元 | |\n| **量比** | **0.82** | 正常 |\n| **换手率** | **0.7%** | |\n| 市盈率(动态) | 25.54 | |\n| 市净率 | 6.17 | |\n| 总市值 | 20171.51 亿元 | |\n| 流通
市值 | 18559.99 亿元 | |\n| 60日涨跌幅 | N/A% | 中期表现 |\n\n### 财报与分红(价值投资口径)\n| 指标 | 数值 | 说明 |\n|------|------|------|\n| 最近报告期
| N/A | 来自结构化财报字段 |\n| 营业收入 | N/A | |\n| 归母净利润 | N/A | |\n| 经营现金流 | N/A | |\n| ROE | N/A | |\n| 近12个月每股现金分红 | N/A | 仅现金
分红、税前口径 |\n| TTM 股息率 | N/A | 公式:近12个月每股现金分红 / 当前价格 × 100% |\n| TTM 分红事件数 | N/A | |\n\n> 若上述字段为 N/A 或缺失,请明确写"数
据缺失,无法判断",禁止编造。\n\n### 筹码分布数据(效率指标)\n| 指标 | 数值 | 健康标准 |\n|------|------|----------|\n| **获利比例** | **89.8%** | 70-90%
时警惕 |\n| 平均成本 | 376.58 元 | 现价应高于5-15% |\n| 90%筹码集中度 | 23.00% | <15%为集中 |\n| 70%筹码集中度 | 11.29% | |\n| 筹码状态 | 获利盘较高(获利盘
70-90%),筹码分散度中等,现价略高于成本15.8% | |\n\n### 趋势分析预判(基于交易理念)\n| 指标 | 数值 | 判定 |\n|------|------|------|\n| 趋势状态 | 多头排列
| |\n| 均线排列 | 多头排列 MA5>MA10>MA20 | MA5>MA10>MA20为多头 |\n| 趋势强度 | 75/100 | |\n| **乖离率(MA5)** | **-0.39%** | ✅ 安全范围 |\n| 乖离率(MA10) |
-0.17% | |\n| 量能状态 | 量能正常 | 量能正常 |\n| 系统信号 | 买入 | |\n| 系统评分 | 69/100 | |\n\n#### 系统分析理由\n**买入理由**:\n- ✅ 多头排列,顺势做
多\n- ✅ 价格略低于MA5(-0.4%),回踩买点\n- ✓ 多头排列,持续上涨\n- RSI中性(55.1),震荡整理中\n\n**风险因素**:\n- 无\n\n### 量价变化\n- 成交量较昨日变化:0
.01倍\n- 价格较昨日变化:-2.02%\n\n---\n\n## 📰 舆情情报\n\n以下是 **宁德时代(300750)** 近3日的新闻搜索结果,请重点提取:\n1. 🚨 **风险警报**:减持、处罚、
利空\n2. 🎯 **利好催化**:业绩、合同、政策\n3. 📊 **业绩预期**:年报预告、业绩快报\n4. 🕒 **时间规则(强制)**:\n - 输出到 `risk_alerts` / `positive_catalysts` / `latest_news` 的每一条都必须带具体日期(YYYY-MM-DD)\n - 超出近3日窗口的新闻一律忽略\n - 时间未知、无法确定发布日期的新闻一律忽略\n\n```\n【
宁德时代 情报搜索结果】\n\n📰 最新消息 (来源: SearXNG):\n 未找到相关信息\n\n📋 公司公告 (来源: SearXNG):\n 未找到相关信息\n\n📈 机构分析 (来源: SearXNG):\n 未找到相关信息\n\n⚠️ 风险排查 (来源: SearXNG):\n 未找到相关信息\n\n📊 业绩预期 (来源: SearXNG):\n 未找到相关信息\n```\n\n---\n\n## ✅ 分析任务\n\n请为
**宁德时代(300750)** 生成【决策仪表盘】,严格按照 JSON 格式输出。\n\n### ⚠️ 重要:输出正确的股票名称格式\n正确的股票名称格式为"股票名称(股票代码)",例如
"贵州茅台(600519)"。\n如果上方显示的股票名称为"股票300750"或不正确,请在分析开头**明确输出该股票的正确中文全称**。\n\n\n### 重点关注(必须明确回答):\n1. ❓ 是否满足 MA5>MA10>MA20 多头排列?\n2. ❓ 当前乖离率是否在安全范围内(<5%)?------ 超过5%必须标注"严禁追高"\n3. ❓ 量能是否配合(缩量回调/放量突破)?\n4. ❓
筹码结构是否健康?\n5. ❓ 消息面有无重大利空?(减持、处罚、业绩变脸等)\n\n\n### 决策仪表盘要求:\n- **股票名称**:必须输出正确的中文全称(如"贵州茅台"而非
"股票600519")\n- **核心结论**:一句话说清该买/该卖/该等\n- **持仓分类建议**:空仓者怎么做 vs 持仓者怎么做\n- **具体狙击点位**:买入价、止损价、目标价(精
确到分)\n- **检查清单**:每项用 ✅/⚠️/❌ 标记\n- **消息面时间合规**:`latest_news`、`risk_alerts`、`positive_catalysts` 不得包含超出近3日或时间未知的信息\n\
n请输出完整的 JSON 格式决策仪表盘。\n\n### 输出语言要求(最高优先级)\n- 所有 JSON 键名必须保持不变,不要翻译键名。\n- `decision_type` 必须保持为 `buy`、`hold`、`sell`。\n- 所有面向用户的人类可读文本值必须使用中文。\n- 当数据缺失时,请使用中文直接说明"数据缺失,无法判断"。\n'}], temperature=0.7, max_tokens=8192, REDACTED', api_base='https://dashscope.aliyuncs.com/compatible-mode/v1/')
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:481 | litellm.completion(model='openai/qwen-plus', messages=[{'role': 'system', 'content': '你是一位专注于趋势交易的 A 股投资分析师,负责生成专业的【决策仪表盘】分析报告。\n\n- 本次分析对象为 **A 股**(中国沪深交易所上市
股票)。\n- 请关注 A 股特有的涨跌停机制(±10%/±20%/±30%)、T+1 交易制度及相关政策因素。\n\n## 默认技能基线(必须严格遵守)\n\n当前激活的 skills 可以补充细
化分析视角,但默认风险控制和交易节奏必须遵守以下基线。\n\n### 1. 严进策略(不追高)\n- **绝对不追高**:当股价偏离 MA5 超过 5% 时,坚决不买入\n- 乖离率 < 2%:最佳买点区间\n- 乖离率 2-5%:可小仓介入\n- 乖离率 > 5%:严禁追高!直接判定为"观望"\n\n### 2. 趋势交易(顺势而为)\n- **多头排列必须条件**:MA5 > MA10 > MA20\n- 只做多头排列的股票,空头排列坚决不碰\n- 均线发散上行优于均线粘合\n\n### 3. 效率优先(筹码结构)\n- 关注筹码集中度:90%集中度 < 15% 表示筹码集中\n-
获利比例分析:70-90% 获利盘时需警惕获利回吐\n- 平均成本与现价关系:现价高于平均成本 5-15% 为健康\n\n### 4. 买点偏好(回踩支撑)\n- **最佳买点**:缩量回踩 MA5 获得支撑\n- **次优买点**:回踩 MA10 获得支撑\n- **观望情况**:跌破 MA20 时观望\n\n### 5. 风险排查重点\n- 减持公告、业绩预亏、监管处罚、行业政策利空、大
额解禁\n\n### 6. 估值关注(PE/PB)\n- PE 明显偏高时需在风险点中说明\n\n### 7. 强势趋势股放宽\n- 强势趋势股可适当放宽乖离率要求,轻仓追踪但需设止损\n\n\n##
输出格式:决策仪表盘 JSON\n\n请严格按照以下 JSON 格式输出,这是一个完整的【决策仪表盘】:\n\n```json\n{\n "stock_name": "股票中文名称",\n "sentiment_score": 0-100整数,\n "trend_prediction": "强烈看多/看多/震荡/看空/强烈看空",\n "operation_advice": "买入/加仓/持有/减仓/卖出/观望",\n "decision_type": "buy/hold/sell",\n "confidence_level": "高/中/低",\n\n "dashboard": {\n "core_conclusion": {\n "one_sentence": "一句话核心结论
(30字以内,直接告诉用户做什么)",\n "signal_type": "🟢买入信号/🟡持有观望/🔴卖出信号/⚠️风险警告",\n "time_se nsitivity": "立即行动/今
日内/本周内/不急",\n "position_advice": {\n "no_position": "空仓者建议:具体操作指引",\n "has_position": "持仓者建
议:具体操作指引"\n }\n },\n\n "data_perspective": {\n "trend_status": {\n "ma_alignment": "均线排列状态
描述",\n "is_bullish": true/false,\n "trend_score": 0-100\n },\n "price_position": {\n "current_price": 当前价格数值,\n "ma5": MA5数值,\n "ma10": MA10数值,\n "ma20": MA20数值,\n "bias_ma5": 乖离率百分比数值,\n "bias_status": "安全/警戒/危险",\n "support_level": 支撑位价格,\n "resistance_level": 压力位价格\n },\n "volume_analysis": {\n "volume_ratio": 量比数值,\n "volume_status": "放量/缩量/平
量",\n "turnover_rate": 换手率百分比,\n "volume_meaning": "量能含义解读(如:缩量回调表示抛压减轻)"\n },\n
"chip_structure": {\n "profit_ratio": 获利比例,\n "avg_cost": 平均成本,\n "concentration": 筹码集中度,\n
"chip_health": "健康/一般/警惕"\n }\n },\n\n "intelligence": {\n "latest_news": "【最新消息】近期重要新
闻摘要",\n "risk_alerts": ["风险点1:具体描述", "风险点2:具体描述"],\n "positive_catalysts": ["利好1:具体描述", "利好2:具体描述"],\n "earnings_outlook": "业绩预期分析(基于年报预告、业绩快报等)",\n "sentiment_summary": "舆情情绪一句话总结"\n },\n\n
"battle_plan": {\n "sniper_points": {\n "ideal_buy": "理想买入点:XX元(在MA5附近)",\n "secondary_buy": "次优买
入点:XX元(在MA10附近)",\n "stop_loss": "止损位:XX元(跌破MA20或X%)",\n "take_profit": "目标位:XX元(前高/整数关口)"\n
},\n "position_strategy": {\n "suggested_position": "建议仓位:X成",\n "entry_plan": "分批建仓策略描述",\n "risk_control": "风控策略描述"\n },\n "action_checklist": [\n "✅/⚠️/❌ 检查项1:多头排列",\n
"✅/⚠️/❌ 检查项2:乖离率合理(强势趋势可放宽)",\n "✅/⚠️/❌ 检查项3:量能配合",\n "✅/⚠️/❌ 检查项4:无重大利空",\n
"✅/⚠️/❌ 检查项5:筹码健康",\n "✅/⚠️/❌ 检查项6:PE估值合理"\n ]\n }\n },\n\n "analysis_summary": "100字综合
分析摘要",\n "key_points": "3-5个核心看点,逗号分隔",\n "risk_warning": "风险提示",\n "buy_reason": "操作理由,引用交易理念",\n\n "trend_analysis": "走势形态分析",\n "short_term_outlook": "短期1-3日展望",\n "medium_term_outlook": "中期1-2周展望",\n "technical_analysis": "技术面综合分析",\n "ma_analysis": "均线系统分析",\n "volume_analysis": "量能分析",\n "pattern_analysis": "K线形态分析",\n "fundamental_analysis": "基本面分析",\n "sector_position": "板块行业分析",\n "company_highlights": "公司亮点/风险",\n "news_summary": "新闻摘要",\n "market_sentiment": "市场情绪",\n "hot_topics": "相关热点",\n\n "search_performed": true/false,\n "data_sources": "数据来源说明"\n}\n```\n\n## 评分标准\n\n### 强烈买入(80-100分)
:\n- ✅ 多头排列:MA5 > MA10 > MA20\n- ✅ 低乖离率:<2%,最佳买点\n- ✅ 缩量回调或放量突破\n- ✅ 筹码集中健康\n- ✅ 消息面有利好催化\n\n### 买入(60-79分):\n
- ✅ 多头排列或弱势多头\n- ✅ 乖离率 <5%\n- ✅ 量能正常\n- ⚪ 允许一项次要条件不满足\n\n### 观望(40-59分):\n- ⚠️ 乖离率 >5%(追高风险)\n- ⚠️ 均线缠绕趋势不
明\n- ⚠️ 有风险事件\n\n### 卖出/减仓(0-39分):\n- ❌ 空头排列\n- ❌ 跌破MA20\n- ❌ 放量下跌\n- ❌ 重大利空\n\n## 决策仪表盘核心原则\n\n1. **核心结论先行**:
一句话说清该买该卖\n2. **分持仓建议**:空仓者和持仓者给不同建议\n3. **精确狙击点**:必须给出具体价格,不说模糊的话\n4. **检查清单可视化**:用 ✅⚠️❌ 明确显示
每项检查结果\n5. **风险优先级**:舆情中的风险点要醒目标出\n\n## 输出语言(最高优先级)\n\n- 所有 JSON 键名保持不变。\n- `decision_type` 必须保持为 `buy|hold|sell`。\n- 所有面向用户的人类可读文本值必须使用中文。\n'}, {'role': 'user', 'content': '# 决策仪表盘分析请求\n\n## 📊 股票基础信息\n| 项目 | 数据 |\n|------|------|\n| 股票代码 | **300750** |\n| 股票名称 | **宁德时代** |\n| 分析日期 | 2026-05-03 |\n\n---\n\n## 📈 技术面数据\n\n### 今日行情\n| 指标 | 数值 |\n|------|------|\n| 收盘价 | 436.0 元 |\n| 开盘价 | 446.5 元 |\n| 最高价 | 449.5 元 |\n| 最低价 | 436.0 元 |\n| 涨跌幅 | -2.02% |\n| 成交量 | 29.81 万股 |\n| 成交额 | 131.27 亿元 |\n\n### 均线系统(关键判断指标)\n| 均线 | 数值 | 说明 |\n|------|------|------|\n| MA5 | 437.68999999999994 | 短期趋势线 |\n| MA10 | 436.75700000000006 | 中短期趋势线 |\n| MA20 | 420.8265 | 中期趋势线 |\n| 均线形态 | 震荡整理 ↔️ | 多头/空头/缠绕 |\n\n### 实时行情增强数据\n| 指标 | 数
值 | 解读 |\n|------|------|------|\n| 当前价格 | 436.0 元 | |\n| **量比** | **0.82** | 正常 |\n| **换手率** | **0.7%** | |\n| 市盈率(动态) | 25.54 | |\n|
市净率 | 6.17 | |\n| 总市值 | 20171.51 亿元 | |\n| 流通市值 | 18559.99 亿元 | |\n| 60日涨跌幅 | N/A% | 中期表现 |\n\n### 财报与分红(价值投资口径)\n| 指标
| 数值 | 说明 |\n|------|------|------|\n| 最近报告期 | N/A | 来自结构化财报字段 |\n| 营业收入 | N/A | |\n| 归母净利润 | N/A | |\n| 经营现金流 | N/A | |\n| ROE | N/A | |\n| 近12个月每股现金分红 | N/A | 仅现金分红、税前口径 |\n| TTM 股息率 | N/A | 公式:近12个月每股现金分红 / 当前价格 × 100% |\n| TTM 分红事件
数 | N/A | |\n\n> 若上述字段为 N/A 或缺失,请明确写"数据缺失,无法判断",禁止编造。\n\n### 筹码分布数据(效率指标)\n| 指标 | 数值 | 健康标准 |\n|------|------|----------|\n| **获利比例** | **89.8%** | 70-90%时警惕 |\n| 平均成本 | 376.58 元 | 现价应高于5-15% |\n| 90%筹码集中度 | 23.00% | <15%为集中 |\n| 70%筹
码集中度 | 11.29% | |\n| 筹码状态 | 获利盘较高(获利盘70-90%),筹码分散度中等,现价略高于成本15.8% | |\n\n### 趋势分析预判(基于交易理念)\n| 指标 | 数值 |
判定 |\n|------|------|------|\n| 趋势状态 | 多头排列 | |\n| 均线排列 | 多头排列 MA5>MA10>MA20 | MA5>MA10>MA20为多头 |\n| 趋势强度 | 75/100 | |\n| **乖离率
(MA5)** | **-0.39%** | ✅ 安全范围 |\n| 乖离率(MA10) | -0.17% | |\n| 量能状态 | 量能正常 | 量能正常 |\n| 系统信号 | 买入 | |\n| 系统评分 | 69/100 | |\n\n###
系统分析理由\n**买入理由**:\n- ✅ 多头排列,顺势做多\n- ✅ 价格略低于MA5(-0.4%),回踩买点\n- ✓ 多头排列,持续上涨\n- RSI中性(55.1),震荡整理中\n\n**风险
因素**:\n- 无\n\n### 量价变化\n- 成交量较昨日变化:0.01倍\n- 价格较昨日变化:-2.02%\n\n---\n\n## 📰 舆情情报\n\n以下是 **宁德时代(300750)** 近3日的新闻搜
索结果,请重点提取:\n1. 🚨 **风险警报**:减持、处罚、利空\n2. 🎯 **利好催化**:业绩、合同、政策\n3. 📊 **业绩预期**:年报预告、业绩快报\n4. 🕒 **时间规则
(强制)**:\n - 输出到 `risk_alerts` / `positive_catalysts` / `latest_news` 的每一条都必须带具体日期(YYYY-MM-DD)\n - 超出近3日窗口的新闻一律忽略\n
- 时间未知、无法确定发布日期的新闻一律忽略\n\n```\n【宁德时代 情报搜索结果】\n\n📰 最新消息 (来源: SearXNG):\n 未找到相关信息\n\n📋 公司公告 (来源: SearXNG):\n 未找到相关信息\n\n📈 机构分析 (来源: SearXNG):\n 未找到相关信息\n\n⚠️ 风险排查 (来源: SearXNG):\n 未找到相关信息\n\n📊 业绩预期 (来源: SearXNG):\
n 未找到相关信息\n```\n\n---\n\n## ✅ 分析任务\n\n请为 **宁德时代(300750)** 生成【决策仪表盘】,严格按照 JSON 格式输出。\n\n### ⚠️ 重要:输出正确的股票名称
格式\n正确的股票名称格式为"股票名称(股票代码)",例如"贵州茅台(600519)"。\n如果上方显示的股票名称为"股票300750"或不正确,请在分析开头**明确输出该股票的
正确中文全称**。\n\n\n### 重点关注(必须明确回答):\n1. ❓ 是否满足 MA5>MA10>MA20 多头排列?\n2. ❓ 当前乖离率是否在安全范围内(<5%)?------ 超过5%必须标注"严
禁追高"\n3. ❓ 量能是否配合(缩量回调/放量突破)?\n4. ❓ 筹码结构是否健康?\n5. ❓ 消息面有无重大利空?(减持、处罚、业绩变脸等)\n\n\n### 决策仪表盘要求:\n
- **股票名称**:必须输出正确的中文全称(如"贵州茅台"而非"股票600519")\n- **核心结论**:一句话说清该买/该卖/该等\n- **持仓分类建议**:空仓者怎么做 vs 持仓
者怎么做\n- **具体狙击点位**:买入价、止损价、目标价(精确到分)\n- **检查清单**:每项用 ✅/⚠️/❌ 标记\n- **消息面时间合规**:`latest_news`、`risk_alerts`、`
positive_catalysts` 不得包含超出近3日或时间未知的信息\n\n请输出完整的 JSON 格式决策仪表盘。\n\n### 输出语言要求(最高优先级)\n- 所有 JSON 键名必须保持不变
,不要翻译键名。\n- `decision_type` 必须保持为 `buy`、`hold`、`sell`。\n- 所有面向用户的人类可读文本值必须使用中文。\n- 当数据缺失时,请使用中文直接说明"数
据缺失,无法判断"。\n'}], temperature=0.7, max_tokens=8192, REDACTED', api_base='https://dashscope.aliyuncs.com/compatible-mode/v1/')
19:32:45 - LiteLLM:DEBUG: utils.py:481 -
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:481 |
19:32:45 - LiteLLM:DEBUG: utils.py:1007 - Removing thought signatures from tool call IDs for non-Gemini model
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:1007 | Removing thought signatures from tool call IDs for non-Gemini model
19:32:45 - LiteLLM:DEBUG: litellm_logging.py:557 - self.optional_params: {}
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:557 | self.optional_params: {}
19:32:45 - LiteLLM:DEBUG: utils.py:481 - SYNC kwargs[caching]: False; litellm.cache: None; kwargs.get('cache')['no-cache']: False
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:481 | SYNC kwargs[caching]: False; litellm.cache: None; kwargs.get('cache')['no-cache']: False
19:32:45 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
19:32:45 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:32:45 - LiteLLM:DEBUG: main.py:959 - Error getting model info: This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\main.py:959 | Error getting model info: This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
19:32:45 - LiteLLM:INFO: utils.py:3995 -
LiteLLM completion() model= qwen-plus; provider = openai
2026-05-03 19:32:45 | INFO | D:\Programs\python311\Lib\site-packages\litellm\utils.py:3995 |
LiteLLM completion() model= qwen-plus; provider = openai
19:32:45 - LiteLLM:DEBUG: utils.py:3998 -
LiteLLM: Params passed to completion() {'model': 'qwen-plus', 'functions': None, 'function_call': None, 'temperature': 0.7, 'top_p': None, 'n': None, 'stream': None, 'stream_options': None, 'stop': None, 'max_tokens': 8192, 'max_completion_tokens': None, 'modalities': None, 'prediction': None, 'audio': None,
'presence_penalty': None, 'frequency_penalty': None, 'logit_bias': None, 'user': None, 'custom_llm_provider': 'openai', 'response_format': None, 'seed': None, 'tools': None, 'tool_choice': None, 'max_retries': None, 'logprobs': None, 'top_logprobs': None, 'extra_headers': None, 'api_version': None, 'parallel_tool_calls': None, 'drop_params': None, 'allowed_openai_params': None, 'reasoning_effort': None, 'verbosity': None, 'additional_drop_params': None, 'messages': [{'role': 'system', 'content': '你是一位专注于趋势交易的 A 股投资分析师,负责生成专业的【决策仪表盘】分析报告。\n\n- 本次分析对象为 **A 股**(中国沪深
交易所上市股票)。\n- 请关注 A 股特有的涨跌停机制(±10%/±20%/±30%)、T+1 交易制度及相关政策因素。\n\n## 默认技能基线(必须严格遵守)\n\n当前激活的 skills
可以补充细化分析视角,但默认风险控制和交易节奏必须遵守以下基线。\n\n### 1. 严进策略(不追高)\n- **绝对不追高**:当股价偏离 MA5 超过 5% 时,坚决不买入\n-
乖离率 < 2%:最佳买点区间\n- 乖离率 2-5%:可小仓介入\n- 乖离率 > 5%:严禁追高!直接判定为"观望"\n\n### 2. 趋势交易(顺势而为)\n- **多头排列必须条件**:MA5 > MA10 > MA20\n- 只做多头排列的股票,空头排列坚决不碰\n- 均线发散上行优于均线粘合\n\n### 3. 效率优先(筹码结构)\n- 关注筹码集中度:90%集中度 < 15% 表示筹
码集中\n- 获利比例分析:70-90% 获利盘时需警惕获利回吐\n- 平均成本与现价关系:现价高于平均成本 5-15% 为健康\n\n### 4. 买点偏好(回踩支撑)\n- **最佳买点**:
缩量回踩 MA5 获得支撑\n- **次优买点**:回踩 MA10 获得支撑\n- **观望情况**:跌破 MA20 时观望\n\n### 5. 风险排查重点\n- 减持公告、业绩预亏、监管处罚、行业政
策利空、大额解禁\n\n### 6. 估值关注(PE/PB)\n- PE 明显偏高时需在风险点中说明\n\n### 7. 强势趋势股放宽\n- 强势趋势股可适当放宽乖离率要求,轻仓追踪但需设止
损\n\n\n## 输出格式:决策仪表盘 JSON\n\n请严格按照以下 JSON 格式输出,这是一个完整的【决策仪表盘】:\n\n```json\n{\n "stock_name": "股票中文名称",\n
"sentiment_score": 0-100整数,\n "trend_prediction": "强烈看多/看多/震荡/看空/强烈看空",\n "operation_advice": "买入/加仓/持有/减仓/卖出/观望",\n "decision_type": "buy/hold/sell",\n "confidence_level": "高/中/低",\n\n "dashboard": {\n "core_conclusion": {\n "one_sentence": "一
句话核心结论(30字以内,直接告诉用户做什么)",\n "signal_type": "🟢买入信号/🟡持有观望/🔴卖出信号/⚠️风险警告",\n "t ime_sensitivity":
"立即行动/今日内/本周内/不急",\n "position_advice": {\n "no_position": "空仓者建议:具体操作指引",\n "has_position": "持仓者建议:具体操作指引"\n }\n },\n\n "data_perspective": {\n "trend_status": {\n "ma_alignment": "均线排列状态描述",\n "is_bullish": true/false,\n "trend_score": 0-100\n },\n "price_position": {\n
"current_price": 当前价格数值,\n "ma5": MA5数值,\n "ma10": MA10数值,\n "ma20": MA20数值,\n
"bias_ma5": 乖离率百分比数值,\n "bias_status": "安全/警戒/危险",\n "support_level": 支撑位价格,\n "resistance_level": 压力位价格\n },\n "volume_analysis": {\n "volume_ratio": 量比数值,\n "volume_status": "
放量/缩量/平量",\n "turnover_rate": 换手率百分比,\n "volume_meaning": "量能含义解读(如:缩量回调表示抛压减轻)"\n
},\n "chip_structure": {\n "profit_ratio": 获利比例,\n "avg_cost": 平均成本,\n "concentration": 筹
码集中度,\n "chip_health": "健康/一般/警惕"\n }\n },\n\n "intelligence": {\n "latest_news": "【最新消息
】近期重要新闻摘要",\n "risk_alerts": ["风险点1:具体描述", "风险点2:具体描述"],\n "positive_catalysts": ["利好1:具体描述", "利好2
:具体描述"],\n "earnings_outlook": "业绩预期分析(基于年报预告、业绩快报等)",\n "sentiment_summary": "舆情情绪一句话总结"\n
},\n\n "battle_plan": {\n "sniper_points": {\n "ideal_buy": "理想买入点:XX元(在MA5附近)",\n "secondary_buy": "次优买入点:XX元(在MA10附近)",\n "stop_loss": "止损位:XX元(跌破MA20或X%)",\n "take_profit": "目标位:XX元(前高/整
数关口)"\n },\n "position_strategy": {\n "suggested_position": "建议仓位:X成",\n "entry_plan": "分批
建仓策略描述",\n "risk_control": "风控策略描述"\n },\n "action_checklist": [\n "✅/⚠️/❌ 检查项1:多头排
列",\n "✅/⚠️/❌ 检查项2:乖离率合理(强势趋势可放宽)",\n "✅/⚠️/❌ 检查项3:量能配合",\n "✅/⚠️/❌ 检查项4:无重大
利空",\n "✅/⚠️/❌ 检查项5:筹码健康",\n "✅/⚠️/❌ 检查项6:PE估值合理"\n ]\n }\n },\n\n "analysis_summar
y": "100字综合分析摘要",\n "key_points": "3-5个核心看点,逗号分隔",\n "risk_warning": "风险提示",\n "buy_reason": "操作理由,引用交易理念",\n\n
"trend_analysis": "走势形态分析",\n "short_term_outlook": "短期1-3日展望",\n "medium_term_outlook": "中期1-2周展望",\n "technical_analysis": "技
术面综合分析",\n "ma_analysis": "均线系统分析",\n "volume_analysis": "量能分析",\n "pattern_analysis": "K线形态分析",\n "fundamental_analysis": "基本面分析",\n "sector_position": "板块行业分析",\n "company_highlights": "公司亮点/风险",\n "news_summary": "新闻摘要",\n "market_sentiment": "市场情绪",\n "hot_topics": "相关热点",\n\n "search_performed": true/false,\n "data_sources": "数据来源说明"\n}\n```\n\n## 评分标准\n\n### 强烈
买入(80-100分):\n- ✅ 多头排列:MA5 > MA10 > MA20\n- ✅ 低乖离率:<2%,最佳买点\n- ✅ 缩量回调或放量突破\n- ✅ 筹码集中健康\n- ✅ 消息面有利好催化\n\n### 买
入(60-79分):\n- ✅ 多头排列或弱势多头\n- ✅ 乖离率 <5%\n- ✅ 量能正常\n- ⚪ 允许一项次要条件不满足\n\n### 观望(40-59分):\n- ⚠️ 乖离率 >5%(追高风险)\n-
⚠️ 均线缠绕趋势不明\n- ⚠️ 有风险事件\n\n### 卖出/减仓(0-39分):\n- ❌ 空头排列\n- ❌ 跌破MA20\n- ❌ 放量下跌\n- ❌ 重大利空\n\n## 决策仪表盘核心原则\n\n1. **
核心结论先行**:一句话说清该买该卖\n2. **分持仓建议**:空仓者和持仓者给不同建议\n3. **精确狙击点**:必须给出具体价格,不说模糊的话\n4. **检查清单可视化**:
用 ✅⚠️❌ 明确显示每项检查结果\n5. **风险优先级**:舆情中的风险点要醒目标出\n\n## 输出语言(最高优先级)\n\n- 所有 JSON 键名保持不变。\n- `decision_type` 必
须保持为 `buy|hold|sell`。\n- 所有面向用户的人类可读文本值必须使用中文。\n'}, {'role': 'user', 'content': '# 决策仪表盘分析请求\n\n## � 股票基础信息\n| 项
目 | 数据 |\n|------|------|\n| 股票代码 | **300750** |\n| 股票名称 | **宁德时代** |\n| 分析日期 | 2026-05-03 |\n\n---\n\n## 📈 技术面数据\n\n### 今日行情\n| 指标 | 数值 |\n|------|------|\n| 收盘价 | 436.0 元 |\n| 开盘价 | 446.5 元 |\n| 最高价 | 449.5 元 |\n| 最低价 | 436.0 元 |\n| 涨跌幅 | -2.02% |\n| 成交
量 | 29.81 万股 |\n| 成交额 | 131.27 亿元 |\n\n### 均线系统(关键判断指标)\n| 均线 | 数值 | 说明 |\n|------|------|------|\n| MA5 | 437.68999999999994 |
短期趋势线 |\n| MA10 | 436.75700000000006 | 中短期趋势线 |\n| MA20 | 420.8265 | 中期趋势线 |\n| 均线形态 | 震荡整理 ↔️ | 多头/空头/缠绕 |\n\n### 实时行情增
强数据\n| 指标 | 数值 | 解读 |\n|------|------|------|\n| 当前价格 | 436.0 元 | |\n| **量比** | **0.82** | 正常 |\n| **换手率** | **0.7%** | |\n| 市盈率(动
态) | 25.54 | |\n| 市净率 | 6.17 | |\n| 总市值 | 20171.51 亿元 | |\n| 流通市值 | 18559.99 亿元 | |\n| 60日涨跌幅 | N/A% | 中期表现 |\n\n### 财报与分红(价
值投资口径)\n| 指标 | 数值 | 说明 |\n|------|------|------|\n| 最近报告期 | N/A | 来自结构化财报字段 |\n| 营业收入 | N/A | |\n| 归母净利润 | N/A | |\n| 经
营现金流 | N/A | |\n| ROE | N/A | |\n| 近12个月每股现金分红 | N/A | 仅现金分红、税前口径 |\n| TTM 股息率 | N/A | 公式:近12个月每股现金分红 / 当前价格 × 100% |\n| TTM 分红事件数 | N/A | |\n\n> 若上述字段为 N/A 或缺失,请明确写"数据缺失,无法判断",禁止编造。\n\n### 筹码分布数据(效率指标)\n| 指标 | 数值 | 健
康标准 |\n|------|------|----------|\n| **获利比例** | **89.8%** | 70-90%时警惕 |\n| 平均成本 | 376.58 元 | 现价应高于5-15% |\n| 90%筹码集中度 | 23.00% | <15%为集中 |\n| 70%筹码集中度 | 11.29% | |\n| 筹码状态 | 获利盘较高(获利盘70-90%),筹码分散度中等,现价略高于成本15.8% | |\n\n### 趋势分析预判(基于交易理念
)\n| 指标 | 数值 | 判定 |\n|------|------|------|\n| 趋势状态 | 多头排列 | |\n| 均线排列 | 多头排列 MA5>MA10>MA20 | MA5>MA10>MA20为多头 |\n| 趋势强度 | 75/100 | |\n| **乖离率(MA5)** | **-0.39%** | ✅ 安全范围 |\n| 乖离率(MA10) | -0.17% | |\n| 量能状态 | 量能正常 | 量能正常 |\n| 系统信号 | 买入 | |\n| 系统评分
| 69/100 | |\n\n#### 系统分析理由\n**买入理由**:\n- ✅ 多头排列,顺势做多\n- ✅ 价格略低于MA5(-0.4%),回踩买点\n- ✓ 多头排列,持续上涨\n- RSI中性(55.1),
震荡整理中\n\n**风险因素**:\n- 无\n\n### 量价变化\n- 成交量较昨日变化:0.01倍\n- 价格较昨日变化:-2.02%\n\n---\n\n## 📰 舆情情报\n\n以下是 **宁德时代(300750)** 近3日的新闻搜索结果,请重点提取:\n1. 🚨 **风险警报**:减持、处罚、利空\n2. 🎯 **利好催化**:业绩、合同、政策\n3. 📊 **业绩预期**:年报预告、业绩快报
\n4. 🕒 **时间规则(强制)**:\n - 输出到 `risk_alerts` / `positive_catalysts` / `latest_news` 的每一条都必须带具体日期(YYYY-MM-DD)\n - 超出近3日窗口
的新闻一律忽略\n - 时间未知、无法确定发布日期的新闻一律忽略\n\n```\n【宁德时代 情报搜索结果】\n\n📰 最新消息 (来源: SearXNG):\n 未找到相关信息\n\n📋 公
司公告 (来源: SearXNG):\n 未找到相关信息\n\n📈 机构分析 (来源: SearXNG):\n 未找到相关信息\n\n⚠️ 风险排查 (来源: SearXNG):\n 未找到相关信息\n\n📊 业绩预
期 (来源: SearXNG):\n 未找到相关信息\n```\n\n---\n\n## ✅ 分析任务\n\n请为 **宁德时代(300750)** 生成【决策仪表盘】,严格按照 JSON 格式输出。\n\n### ⚠️ 重要
:输出正确的股票名称格式\n正确的股票名称格式为"股票名称(股票代码)",例如"贵州茅台(600519)"。\n如果上方显示的股票名称为"股票300750"或不正确,请在分析开
头**明确输出该股票的正确中文全称**。\n\n\n### 重点关注(必须明确回答):\n1. ❓ 是否满足 MA5>MA10>MA20 多头排列?\n2. ❓ 当前乖离率是否在安全范围内(<5%)?---
--- 超过5%必须标注"严禁追高"\n3. ❓ 量能是否配合(缩量回调/放量突破)?\n4. ❓ 筹码结构是否健康?\n5. ❓ 消息面有无重大利空?(减持、处罚、业绩变脸等)\n\n\n###
决策仪表盘要求:\n- **股票名称**:必须输出正确的中文全称(如"贵州茅台"而非"股票600519")\n- **核心结论**:一句话说清该买/该卖/该等\n- **持仓分类建议**:空
仓者怎么做 vs 持仓者怎么做\n- **具体狙击点位**:买入价、止损价、目标价(精确到分)\n- **检查清单**:每项用 ✅/⚠️/❌ 标记\n- **消息面时间合规**:`latest_news`
、`risk_alerts`、`positive_catalysts` 不得包含超出近3日或时间未知的信息\n\n请输出完整的 JSON 格式决策仪表盘。\n\n### 输出语言要求(最高优先级)\n- 所有 JSON 键名必须保持不变,不要翻译键名。\n- `decision_type` 必须保持为 `buy`、`hold`、`sell`。\n- 所有面向用户的人类可读文本值必须使用中文。\n- 当数据缺失时,请
使用中文直接说明"数据缺失,无法判断"。\n'}], 'thinking': None, 'web_search_options': None, 'safety_identifier': None, 'service_tier': None}
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:3998 |
LiteLLM: Params passed to completion() {'model': 'qwen-plus', 'functions': None, 'function_call': None, 'temperature': 0.7, 'top_p': None, 'n': None, 'stream': None, 'stream_options': None, 'stop': None, 'max_tokens': 8192, 'max_completion_tokens': None, 'modalities': None, 'prediction': None, 'audio': None,
'presence_penalty': None, 'frequency_penalty': None, 'logit_bias': None, 'user': None, 'custom_llm_provider': 'openai', 'response_format': None, 'seed': None, 'tools': None, 'tool_choice': None, 'max_retries': None, 'logprobs': None, 'top_logprobs': None, 'extra_headers': None, 'api_version': None, 'parallel_tool_calls': None, 'drop_params': None, 'allowed_openai_params': None, 'reasoning_effort': None, 'verbosity': None, 'additional_drop_params': None, 'messages': [{'role': 'system', 'content': '你是一位专注于趋势交易的 A 股投资分析师,负责生成专业的【决策仪表盘】分析报告。\n\n- 本次分析对象为 **A 股**(中国沪深
交易所上市股票)。\n- 请关注 A 股特有的涨跌停机制(±10%/±20%/±30%)、T+1 交易制度及相关政策因素。\n\n## 默认技能基线(必须严格遵守)\n\n当前激活的 skills
可以补充细化分析视角,但默认风险控制和交易节奏必须遵守以下基线。\n\n### 1. 严进策略(不追高)\n- **绝对不追高**:当股价偏离 MA5 超过 5% 时,坚决不买入\n-
乖离率 < 2%:最佳买点区间\n- 乖离率 2-5%:可小仓介入\n- 乖离率 > 5%:严禁追高!直接判定为"观望"\n\n### 2. 趋势交易(顺势而为)\n- **多头排列必须条件**:MA5 > MA10 > MA20\n- 只做多头排列的股票,空头排列坚决不碰\n- 均线发散上行优于均线粘合\n\n### 3. 效率优先(筹码结构)\n- 关注筹码集中度:90%集中度 < 15% 表示筹
码集中\n- 获利比例分析:70-90% 获利盘时需警惕获利回吐\n- 平均成本与现价关系:现价高于平均成本 5-15% 为健康\n\n### 4. 买点偏好(回踩支撑)\n- **最佳买点**:
缩量回踩 MA5 获得支撑\n- **次优买点**:回踩 MA10 获得支撑\n- **观望情况**:跌破 MA20 时观望\n\n### 5. 风险排查重点\n- 减持公告、业绩预亏、监管处罚、行业政
策利空、大额解禁\n\n### 6. 估值关注(PE/PB)\n- PE 明显偏高时需在风险点中说明\n\n### 7. 强势趋势股放宽\n- 强势趋势股可适当放宽乖离率要求,轻仓追踪但需设止
损\n\n\n## 输出格式:决策仪表盘 JSON\n\n请严格按照以下 JSON 格式输出,这是一个完整的【决策仪表盘】:\n\n```json\n{\n "stock_name": "股票中文名称",\n
"sentiment_score": 0-100整数,\n "trend_prediction": "强烈看多/看多/震荡/看空/强烈看空",\n "operation_advice": "买入/加仓/持有/减仓/卖出/观望",\n "decision_type": "buy/hold/sell",\n "confidence_level": "高/中/低",\n\n "dashboard": {\n "core_conclusion": {\n "one_sentence": "一
句话核心结论(30字以内,直接告诉用户做什么)",\n "signal_type": "🟢买入信号/🟡持有观望/🔴卖出信号/⚠️风险警告",\n "t ime_sensitivity":
"立即行动/今日内/本周内/不急",\n "position_advice": {\n "no_position": "空仓者建议:具体操作指引",\n "has_position": "持仓者建议:具体操作指引"\n }\n },\n\n "data_perspective": {\n "trend_status": {\n "ma_alignment": "均线排列状态描述",\n "is_bullish": true/false,\n "trend_score": 0-100\n },\n "price_position": {\n
"current_price": 当前价格数值,\n "ma5": MA5数值,\n "ma10": MA10数值,\n "ma20": MA20数值,\n
"bias_ma5": 乖离率百分比数值,\n "bias_status": "安全/警戒/危险",\n "support_level": 支撑位价格,\n "resistance_level": 压力位价格\n },\n "volume_analysis": {\n "volume_ratio": 量比数值,\n "volume_status": "
放量/缩量/平量",\n "turnover_rate": 换手率百分比,\n "volume_meaning": "量能含义解读(如:缩量回调表示抛压减轻)"\n
},\n "chip_structure": {\n "profit_ratio": 获利比例,\n "avg_cost": 平均成本,\n "concentration": 筹
码集中度,\n "chip_health": "健康/一般/警惕"\n }\n },\n\n "intelligence": {\n "latest_news": "【最新消息
】近期重要新闻摘要",\n "risk_alerts": ["风险点1:具体描述", "风险点2:具体描述"],\n "positive_catalysts": ["利好1:具体描述", "利好2
:具体描述"],\n "earnings_outlook": "业绩预期分析(基于年报预告、业绩快报等)",\n "sentiment_summary": "舆情情绪一句话总结"\n
},\n\n "battle_plan": {\n "sniper_points": {\n "ideal_buy": "理想买入点:XX元(在MA5附近)",\n "secondary_buy": "次优买入点:XX元(在MA10附近)",\n "stop_loss": "止损位:XX元(跌破MA20或X%)",\n "take_profit": "目标位:XX元(前高/整
数关口)"\n },\n "position_strategy": {\n "suggested_position": "建议仓位:X成",\n "entry_plan": "分批
建仓策略描述",\n "risk_control": "风控策略描述"\n },\n "action_checklist": [\n "✅/⚠️/❌ 检查项1:多头排
列",\n "✅/⚠️/❌ 检查项2:乖离率合理(强势趋势可放宽)",\n "✅/⚠️/❌ 检查项3:量能配合",\n "✅/⚠️/❌ 检查项4:无重大
利空",\n "✅/⚠️/❌ 检查项5:筹码健康",\n "✅/⚠️/❌ 检查项6:PE估值合理"\n ]\n }\n },\n\n "analysis_summar
y": "100字综合分析摘要",\n "key_points": "3-5个核心看点,逗号分隔",\n "risk_warning": "风险提示",\n "buy_reason": "操作理由,引用交易理念",\n\n
"trend_analysis": "走势形态分析",\n "short_term_outlook": "短期1-3日展望",\n "medium_term_outlook": "中期1-2周展望",\n "technical_analysis": "技
术面综合分析",\n "ma_analysis": "均线系统分析",\n "volume_analysis": "量能分析",\n "pattern_analysis": "K线形态分析",\n "fundamental_analysis": "基本面分析",\n "sector_position": "板块行业分析",\n "company_highlights": "公司亮点/风险",\n "news_summary": "新闻摘要",\n "market_sentiment": "市场情绪",\n "hot_topics": "相关热点",\n\n "search_performed": true/false,\n "data_sources": "数据来源说明"\n}\n```\n\n## 评分标准\n\n### 强烈
买入(80-100分):\n- ✅ 多头排列:MA5 > MA10 > MA20\n- ✅ 低乖离率:<2%,最佳买点\n- ✅ 缩量回调或放量突破\n- ✅ 筹码集中健康\n- ✅ 消息面有利好催化\n\n### 买
入(60-79分):\n- ✅ 多头排列或弱势多头\n- ✅ 乖离率 <5%\n- ✅ 量能正常\n- ⚪ 允许一项次要条件不满足\n\n### 观望(40-59分):\n- ⚠️ 乖离率 >5%(追高风险)\n-
⚠️ 均线缠绕趋势不明\n- ⚠️ 有风险事件\n\n### 卖出/减仓(0-39分):\n- ❌ 空头排列\n- ❌ 跌破MA20\n- ❌ 放量下跌\n- ❌ 重大利空\n\n## 决策仪表盘核心原则\n\n1. **
核心结论先行**:一句话说清该买该卖\n2. **分持仓建议**:空仓者和持仓者给不同建议\n3. **精确狙击点**:必须给出具体价格,不说模糊的话\n4. **检查清单可视化**:
用 ✅⚠️❌ 明确显示每项检查结果\n5. **风险优先级**:舆情中的风险点要醒目标出\n\n## 输出语言(最高优先级)\n\n- 所有 JSON 键名保持不变。\n- `decision_type` 必
须保持为 `buy|hold|sell`。\n- 所有面向用户的人类可读文本值必须使用中文。\n'}, {'role': 'user', 'content': '# 决策仪表盘分析请求\n\n## � 股票基础信息\n| 项
目 | 数据 |\n|------|------|\n| 股票代码 | **300750** |\n| 股票名称 | **宁德时代** |\n| 分析日期 | 2026-05-03 |\n\n---\n\n## 📈 技术面数据\n\n### 今日行情\n| 指标 | 数值 |\n|------|------|\n| 收盘价 | 436.0 元 |\n| 开盘价 | 446.5 元 |\n| 最高价 | 449.5 元 |\n| 最低价 | 436.0 元 |\n| 涨跌幅 | -2.02% |\n| 成交
量 | 29.81 万股 |\n| 成交额 | 131.27 亿元 |\n\n### 均线系统(关键判断指标)\n| 均线 | 数值 | 说明 |\n|------|------|------|\n| MA5 | 437.68999999999994 |
短期趋势线 |\n| MA10 | 436.75700000000006 | 中短期趋势线 |\n| MA20 | 420.8265 | 中期趋势线 |\n| 均线形态 | 震荡整理 ↔️ | 多头/空头/缠绕 |\n\n### 实时行情增
强数据\n| 指标 | 数值 | 解读 |\n|------|------|------|\n| 当前价格 | 436.0 元 | |\n| **量比** | **0.82** | 正常 |\n| **换手率** | **0.7%** | |\n| 市盈率(动
态) | 25.54 | |\n| 市净率 | 6.17 | |\n| 总市值 | 20171.51 亿元 | |\n| 流通市值 | 18559.99 亿元 | |\n| 60日涨跌幅 | N/A% | 中期表现 |\n\n### 财报与分红(价
值投资口径)\n| 指标 | 数值 | 说明 |\n|------|------|------|\n| 最近报告期 | N/A | 来自结构化财报字段 |\n| 营业收入 | N/A | |\n| 归母净利润 | N/A | |\n| 经
营现金流 | N/A | |\n| ROE | N/A | |\n| 近12个月每股现金分红 | N/A | 仅现金分红、税前口径 |\n| TTM 股息率 | N/A | 公式:近12个月每股现金分红 / 当前价格 × 100% |\n| TTM 分红事件数 | N/A | |\n\n> 若上述字段为 N/A 或缺失,请明确写"数据缺失,无法判断",禁止编造。\n\n### 筹码分布数据(效率指标)\n| 指标 | 数值 | 健
康标准 |\n|------|------|----------|\n| **获利比例** | **89.8%** | 70-90%时警惕 |\n| 平均成本 | 376.58 元 | 现价应高于5-15% |\n| 90%筹码集中度 | 23.00% | <15%为集中 |\n| 70%筹码集中度 | 11.29% | |\n| 筹码状态 | 获利盘较高(获利盘70-90%),筹码分散度中等,现价略高于成本15.8% | |\n\n### 趋势分析预判(基于交易理念
)\n| 指标 | 数值 | 判定 |\n|------|------|------|\n| 趋势状态 | 多头排列 | |\n| 均线排列 | 多头排列 MA5>MA10>MA20 | MA5>MA10>MA20为多头 |\n| 趋势强度 | 75/100 | |\n| **乖离率(MA5)** | **-0.39%** | ✅ 安全范围 |\n| 乖离率(MA10) | -0.17% | |\n| 量能状态 | 量能正常 | 量能正常 |\n| 系统信号 | 买入 | |\n| 系统评分
| 69/100 | |\n\n#### 系统分析理由\n**买入理由**:\n- ✅ 多头排列,顺势做多\n- ✅ 价格略低于MA5(-0.4%),回踩买点\n- ✓ 多头排列,持续上涨\n- RSI中性(55.1),
震荡整理中\n\n**风险因素**:\n- 无\n\n### 量价变化\n- 成交量较昨日变化:0.01倍\n- 价格较昨日变化:-2.02%\n\n---\n\n## 📰 舆情情报\n\n以下是 **宁德时代(300750)** 近3日的新闻搜索结果,请重点提取:\n1. 🚨 **风险警报**:减持、处罚、利空\n2. 🎯 **利好催化**:业绩、合同、政策\n3. 📊 **业绩预期**:年报预告、业绩快报
\n4. 🕒 **时间规则(强制)**:\n - 输出到 `risk_alerts` / `positive_catalysts` / `latest_news` 的每一条都必须带具体日期(YYYY-MM-DD)\n - 超出近3日窗口
的新闻一律忽略\n - 时间未知、无法确定发布日期的新闻一律忽略\n\n```\n【宁德时代 情报搜索结果】\n\n📰 最新消息 (来源: SearXNG):\n 未找到相关信息\n\n📋 公
司公告 (来源: SearXNG):\n 未找到相关信息\n\n📈 机构分析 (来源: SearXNG):\n 未找到相关信息\n\n⚠️ 风险排查 (来源: SearXNG):\n 未找到相关信息\n\n📊 业绩预
期 (来源: SearXNG):\n 未找到相关信息\n```\n\n---\n\n## ✅ 分析任务\n\n请为 **宁德时代(300750)** 生成【决策仪表盘】,严格按照 JSON 格式输出。\n\n### ⚠️ 重要
:输出正确的股票名称格式\n正确的股票名称格式为"股票名称(股票代码)",例如"贵州茅台(600519)"。\n如果上方显示的股票名称为"股票300750"或不正确,请在分析开
头**明确输出该股票的正确中文全称**。\n\n\n### 重点关注(必须明确回答):\n1. ❓ 是否满足 MA5>MA10>MA20 多头排列?\n2. ❓ 当前乖离率是否在安全范围内(<5%)?---
--- 超过5%必须标注"严禁追高"\n3. ❓ 量能是否配合(缩量回调/放量突破)?\n4. ❓ 筹码结构是否健康?\n5. ❓ 消息面有无重大利空?(减持、处罚、业绩变脸等)\n\n\n###
决策仪表盘要求:\n- **股票名称**:必须输出正确的中文全称(如"贵州茅台"而非"股票600519")\n- **核心结论**:一句话说清该买/该卖/该等\n- **持仓分类建议**:空
仓者怎么做 vs 持仓者怎么做\n- **具体狙击点位**:买入价、止损价、目标价(精确到分)\n- **检查清单**:每项用 ✅/⚠️/❌ 标记\n- **消息面时间合规**:`latest_news`
、`risk_alerts`、`positive_catalysts` 不得包含超出近3日或时间未知的信息\n\n请输出完整的 JSON 格式决策仪表盘。\n\n### 输出语言要求(最高优先级)\n- 所有 JSON 键名必须保持不变,不要翻译键名。\n- `decision_type` 必须保持为 `buy`、`hold`、`sell`。\n- 所有面向用户的人类可读文本值必须使用中文。\n- 当数据缺失时,请
使用中文直接说明"数据缺失,无法判断"。\n'}], 'thinking': None, 'web_search_options': None, 'safety_identifier': None, 'service_tier': None}
19:32:45 - LiteLLM:DEBUG: utils.py:4001 -
LiteLLM: Non-Default params passed to completion() {'temperature': 0.7, 'max_tokens': 8192}
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:4001 |
LiteLLM: Non-Default params passed to completion() {'temperature': 0.7, 'max_tokens': 8192}
19:32:45 - LiteLLM:DEBUG: utils.py:481 - Final returned optional params: {'temperature': 0.7, 'max_tokens': 8192, 'extra_body': {}}
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:481 | Final returned optional params: {'temperature': 0.7, 'max_tokens': 8192, 'extra_body': {}}
19:32:45 - LiteLLM:DEBUG: litellm_logging.py:557 - self.optional_params: {'temperature': 0.7, 'max_tokens': 8192, 'extra_body': {}}
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:557 | self.optional_params: {'temperature': 0.7, 'max_tokens': 8192, 'extra_body': {}}
19:32:45 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
19:32:45 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:32:45 - LiteLLM:DEBUG: main.py:959 - Error getting model info: This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\main.py:959 | Error getting model info: This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
19:32:45 - LiteLLM:DEBUG: litellm_logging.py:1150 -
POST Request Sent from LiteLLM:
curl -X POST \
https://dashscope.aliyuncs.com/compatible-mode/v1/ \
-d '{'model': 'qwen-plus', 'messages': [{'role': 'system', 'content': '你是一位专注于趋势交易的 A 股投资分析师,负责生成专业的【决策仪表盘】分析报告。\n\n- 本次分析对象为 **A 股**(中国沪深交易所上市股票)。\n- 请关注 A 股特有的涨跌停机制(±10%/±20%/±30%)、T+1 交易制度及相关政策因素。\n\n## 默认技能基线(必
须严格遵守)\n\n当前激活的 skills 可以补充细化分析视角,但默认风险控制和交易节奏必须遵守以下基线。\n\n### 1. 严进策略(不追高)\n- **绝对不追高**:当股价偏
离 MA5 超过 5% 时,坚决不买入\n- 乖离率 < 2%:最佳买点区间\n- 乖离率 2-5%:可小仓介入\n- 乖离率 > 5%:严禁追高!直接判定为"观望"\n\n### 2. 趋势交易(顺势而
为)\n- **多头排列必须条件**:MA5 > MA10 > MA20\n- 只做多头排列的股票,空头排列坚决不碰\n- 均线发散上行优于均线粘合\n\n### 3. 效率优先(筹码结构)\n- 关注
筹码集中度:90%集中度 < 15% 表示筹码集中\n- 获利比例分析:70-90% 获利盘时需警惕获利回吐\n- 平均成本与现价关系:现价高于平均成本 5-15% 为健康\n\n### 4. 买点
偏好(回踩支撑)\n- **最佳买点**:缩量回踩 MA5 获得支撑\n- **次优买点**:回踩 MA10 获得支撑\n- **观望情况**:跌破 MA20 时观望\n\n### 5. 风险排查重点\n- 减
持公告、业绩预亏、监管处罚、行业政策利空、大额解禁\n\n### 6. 估值关注(PE/PB)\n- PE 明显偏高时需在风险点中说明\n\n### 7. 强势趋势股放宽\n- 强势趋势股可适
当放宽乖离率要求,轻仓追踪但需设止损\n\n\n## 输出格式:决策仪表盘 JSON\n\n请严格按照以下 JSON 格式输出,这是一个完整的【决策仪表盘】:\n\n```json\n{\n "stock_name": "股票中文名称",\n "sentiment_score": 0-100整数,\n "trend_prediction": "强烈看多/看多/震荡/看空/强烈看空",\n "operation_advice": "买入
/加仓/持有/减仓/卖出/观望",\n "decision_type": "buy/hold/sell",\n "confidence_level": "高/中/低",\n\n "dashboard": {\n "core_conclusion": {\n "one_sentence": "一句话核心结论(30字以内,直接告诉用户做什么)",\n "signal_type": "🟢买入信号/🟡持有观 望/🔴卖出信号/⚠️风险警告",\
n "time_sensitivity": "立即行动/今日内/本周内/不急",\n "position_advice": {\n "no_position": "空仓者建议:具体操作指引
",\n "has_position": "持仓者建议:具体操作指引"\n }\n },\n\n "data_perspective": {\n "trend_status": {\n "ma_alignment": "均线排列状态描述",\n "is_bullish": true/false,\n "trend_score": 0-100\n },\n
"price_position": {\n "current_price": 当前价格数值,\n "ma5": MA5数值,\n "ma10": MA10数值,\n
"ma20": MA20数值,\n "bias_ma5": 乖离率百分比数值,\n "bias_status": "安全/警戒/危险",\n "support_level":
支撑位价格,\n "resistance_level": 压力位价格\n },\n "volume_analysis": {\n "volume_ratio": 量比数值,\n
"volume_status": "放量/缩量/平量",\n "turnover_rate": 换手率百分比,\n "volume_meaning": "量能含义解读(如:缩
量回调表示抛压减轻)"\n },\n "chip_structure": {\n "profit_ratio": 获利比例,\n "avg_cost": 平均成本,\n
"concentration": 筹码集中度,\n "chip_health": "健康/一般/警惕"\n }\n },\n\n "intelligence": {\n
"latest_news": "【最新消息】近期重要新闻摘要",\n "risk_alerts": ["风险点1:具体描述", "风险点2:具体描述"],\n "positive_catalysts": ["利好1:具体描述", "利好2:具体描述"],\n "earnings_outlook": "业绩预期分析(基于年报预告、业绩快报等)",\n "sentiment_summary": "舆情情绪一句话总结"\n },\n\n "battle_plan": {\n "sniper_points": {\n "ideal_buy": "理想买入点:XX元(在MA5附近)
",\n "secondary_buy": "次优买入点:XX元(在MA10附近)",\n "stop_loss": "止损位:XX元(跌破MA20或X%)",\n "take_profit": "目标位:XX元(前高/整数关口)"\n },\n "position_strategy": {\n "suggested_position": "建议仓位:X成",\n
"entry_plan": "分批建仓策略描述",\n "risk_control": "风控策略描述"\n },\n "action_checklist": [\n
"✅/⚠️/❌ 检查项1:多头排列",\n "✅/⚠️/❌ 检查项2:乖离率合理(强势趋势可放宽)",\n "✅/⚠️/❌ 检查项3:量能配合",\n
"✅/⚠️/❌ 检查项4:无重大利空",\n "✅/⚠️/❌ 检查项5:筹码健康",\n "✅/⚠️/❌ 检查项6:PE估值合理"\n ]\n }\n
},\n\n "analysis_summary": "100字综合分析摘要",\n "key_points": "3-5个核心看点,逗号分隔",\n "risk_warning": "风险提示",\n "buy_reason": "
操作理由,引用交易理念",\n\n "trend_analysis": "走势形态分析",\n "short_term_outlook": "短期1-3日展望",\n "medium_term_outlook": "中期1-2周展望",\n "technical_analysis": "技术面综合分析",\n "ma_analysis": "均线系统分析",\n "volume_analysis": "量能分析",\n "pattern_analysis": "K线形态分析",\n "fundamental_analysis": "基本面分析",\n "sector_position": "板块行业分析",\n "company_highlights": "公司亮点/风险",\n "news_summary": "新闻
摘要",\n "market_sentiment": "市场情绪",\n "hot_topics": "相关热点",\n\n "search_performed": true/false,\n "data_sources": "数据来源说明"\n}\n```\n\n## 评分标准\n\n### 强烈买入(80-100分):\n- ✅ 多头排列:MA5 > MA10 > MA20\n- ✅ 低乖离率:<2%,最佳买点\n- ✅ 缩量回调或放量突破\n- ✅ 筹码集中健康\n-
✅ 消息面有利好催化\n\n### 买入(60-79分):\n- ✅ 多头排列或弱势多头\n- ✅ 乖离率 <5%\n- ✅ 量能正常\n- ⚪ 允许一项次要条件不满足\n\n### 观望(40-59分):\n- ⚠
️ 乖离率 >5%(追高风险)\n- ⚠️ 均线缠绕趋势不明\n- ⚠️ 有风险事件\n\n### 卖出/减仓(0-39分):\n- ❌ 空头排列\n- ❌ 跌破MA20\n- ❌ 放量下跌\n- ❌ 重大利空\n\n##
决策仪表盘核心原则\n\n1. **核心结论先行**:一句话说清该买该卖\n2. **分持仓建议**:空仓者和持仓者给不同建议\n3. **精确狙击点**:必须给出具体价格,不说模糊
的话\n4. **检查清单可视化**:用 ✅⚠️❌ 明确显示每项检查结果\n5. **风险优先级**:舆情中的风险点要醒目标出\n\n## 输出语言(最高优先级)\n\n- 所有 JSON 键名保持
不变。\n- `decision_type` 必须保持为 `buy|hold|sell`。\n- 所有面向用户的人类可读文本值必须使用中文。\n'}, {'role': 'user', 'content': '# 决策仪表盘分析请求
\n\n## 📊 股票基础信息\n| 项目 | 数据 |\n|------|------|\n| 股票代码 | **300750** |\n| 股票名称 | **宁德时代** |\n| 分析日期 | 2026-05-03 |\n\n---\n\n## 📈
技术面数据\n\n### 今日行情\n| 指标 | 数值 |\n|------|------|\n| 收盘价 | 436.0 元 |\n| 开盘价 | 446.5 元 |\n| 最高价 | 449.5 元 |\n| 最低价 | 436.0 元 |\n| 涨跌幅 | -2.02% |\n| 成交量 | 29.81 万股 |\n| 成交额 | 131.27 亿元 |\n\n### 均线系统(关键判断指标)\n| 均线 | 数值 | 说明 |\n|------|------|------|\n| MA5 | 437.68999999999994 | 短期趋势线 |\n| MA10 | 436.75700000000006 | 中短期趋势线 |\n| MA20 | 420.8265 | 中期趋势线 |\n| 均线形态 | 震荡整理 ↔️ | 多头/空
头/缠绕 |\n\n### 实时行情增强数据\n| 指标 | 数值 | 解读 |\n|------|------|------|\n| 当前价格 | 436.0 元 | |\n| **量比** | **0.82** | 正常 |\n| **换手率**
| **0.7%** | |\n| 市盈率(动态) | 25.54 | |\n| 市净率 | 6.17 | |\n| 总市值 | 20171.51 亿元 | |\n| 流通市值 | 18559.99 亿元 | |\n| 60日涨跌幅 | N/A% | 中期表
现 |\n\n### 财报与分红(价值投资口径)\n| 指标 | 数值 | 说明 |\n|------|------|------|\n| 最近报告期 | N/A | 来自结构化财报字段 |\n| 营业收入 | N/A | |\n|
归母净利润 | N/A | |\n| 经营现金流 | N/A | |\n| ROE | N/A | |\n| 近12个月每股现金分红 | N/A | 仅现金分红、税前口径 |\n| TTM 股息率 | N/A | 公式:近12个月每
股现金分红 / 当前价格 × 100% |\n| TTM 分红事件数 | N/A | |\n\n> 若上述字段为 N/A 或缺失,请明确写"数据缺失,无法判断",禁止编造。\n\n### 筹码分布数据(效率
指标)\n| 指标 | 数值 | 健康标准 |\n|------|------|----------|\n| **获利比例** | **89.8%** | 70-90%时警惕 |\n| 平均成本 | 376.58 元 | 现价应高于5-15% |\n|
90%筹码集中度 | 23.00% | <15%为集中 |\n| 70%筹码集中度 | 11.29% | |\n| 筹码状态 | 获利盘较高(获利盘70-90%),筹码分散度中等,现价略高于成本15.8% | |\n\n###
趋势分析预判(基于交易理念)\n| 指标 | 数值 | 判定 |\n|------|------|------|\n| 趋势状态 | 多头排列 | |\n| 均线排列 | 多头排列 MA5>MA10>MA20 | MA5>MA10>MA20为多头 |\n| 趋势强度 | 75/100 | |\n| **乖离率(MA5)** | **-0.39%** | ✅ 安全范围 |\n| 乖离率(MA10) | -0.17% | |\n| 量能状态 | 量能正常 | 量能正常 |\n| 系统
信号 | 买入 | |\n| 系统评分 | 69/100 | |\n\n#### 系统分析理由\n**买入理由**:\n- ✅ 多头排列,顺势做多\n- ✅ 价格略低于MA5(-0.4%),回踩买点\n- ✓ 多头排列,持
续上涨\n- RSI中性(55.1),震荡整理中\n\n**风险因素**:\n- 无\n\n### 量价变化\n- 成交量较昨日变化:0.01倍\n- 价格较昨日变化:-2.02%\n\n---\n\n## 📰 舆情情报
\n\n以下是 **宁德时代(300750)** 近3日的新闻搜索结果,请重点提取:\n1. 🚨 **风险警报**:减持、处罚、利空\n2. 🎯 **利好催化**:业绩、合同、政策\n3. 📊 **业绩
预期**:年报预告、业绩快报\n4. 🕒 **时间规则(强制)**:\n - 输出到 `risk_alerts` / `positive_catalysts` / `latest_news` 的每一条都必须带具体日期(YYYY-MM-DD)\n - 超出近3日窗口的新闻一律忽略\n - 时间未知、无法确定发布日期的新闻一律忽略\n\n```\n【宁德时代 情报搜索结果】\n\n📰 最新消息 (来源: SearXNG):\n 未找到相关信息\n\n📋 公司公告 (来源: SearXNG):\n 未找到相关信息\n\n📈 机构分析 (来源: SearXNG):\n 未找到相关信息\n\n⚠️ 风险排查 (来源: SearXNG):\n 未
找到相关信息\n\n📊 业绩预期 (来源: SearXNG):\n 未找到相关信息\n```\n\n---\n\n## ✅ 分析任务\n\n请为 **宁德时代(300750)** 生成【决策仪表盘】,严格按照 JSON
格式输出。\n\n### ⚠️ 重要:输出正确的股票名称格式\n正确的股票名称格式为"股票名称(股票代码)",例如"贵州茅台(600519)"。\n如果上方显示的股票名称为"股票300
750"或不正确,请在分析开头**明确输出该股票的正确中文全称**。\n\n\n### 重点关注(必须明确回答):\n1. ❓ 是否满足 MA5>MA10>MA20 多头排列?\n2. ❓ 当前乖离率是
否在安全范围内(<5%)?------ 超过5%必须标注"严禁追高"\n3. ❓ 量能是否配合(缩量回调/放量突破)?\n4. ❓ 筹码结构是否健康?\n5. ❓ 消息面有无重大利空?(减持、处
罚、业绩变脸等)\n\n\n### 决策仪表盘要求:\n- **股票名称**:必须输出正确的中文全称(如"贵州茅台"而非"股票600519")\n- **核心结论**:一句话说清该买/该卖/该
等\n- **持仓分类建议**:空仓者怎么做 vs 持仓者怎么做\n- **具体狙击点位**:买入价、止损价、目标价(精确到分)\n- **检查清单**:每项用 ✅/⚠️/❌ 标记\n- **消息
面时间合规**:`latest_news`、`risk_alerts`、`positive_catalysts` 不得包含超出近3日或时间未知的信息\n\n请输出完整的 JSON 格式决策仪表盘。\n\n### 输出语言要
求(最高优先级)\n- 所有 JSON 键名必须保持不变,不要翻译键名。\n- `decision_type` 必须保持为 `buy`、`hold`、`sell`。\n- 所有面向用户的人类可读文本值必须使
用中文。\n- 当数据缺失时,请使用中文直接说明"数据缺失,无法判断"。\n'}], 'temperature': 0.7, 'max_tokens': 8192, 'extra_body': {}}'
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:1150 |
POST Request Sent from LiteLLM:
curl -X POST \
https://dashscope.aliyuncs.com/compatible-mode/v1/ \
-d '{'model': 'qwen-plus', 'messages': [{'role': 'system', 'content': '你是一位专注于趋势交易的 A 股投资分析师,负责生成专业的【决策仪表盘】分析报告。\n\n- 本次分析对象为 **A 股**(中国沪深交易所上市股票)。\n- 请关注 A 股特有的涨跌停机制(±10%/±20%/±30%)、T+1 交易制度及相关政策因素。\n\n## 默认技能基线(必
须严格遵守)\n\n当前激活的 skills 可以补充细化分析视角,但默认风险控制和交易节奏必须遵守以下基线。\n\n### 1. 严进策略(不追高)\n- **绝对不追高**:当股价偏
离 MA5 超过 5% 时,坚决不买入\n- 乖离率 < 2%:最佳买点区间\n- 乖离率 2-5%:可小仓介入\n- 乖离率 > 5%:严禁追高!直接判定为"观望"\n\n### 2. 趋势交易(顺势而
为)\n- **多头排列必须条件**:MA5 > MA10 > MA20\n- 只做多头排列的股票,空头排列坚决不碰\n- 均线发散上行优于均线粘合\n\n### 3. 效率优先(筹码结构)\n- 关注
筹码集中度:90%集中度 < 15% 表示筹码集中\n- 获利比例分析:70-90% 获利盘时需警惕获利回吐\n- 平均成本与现价关系:现价高于平均成本 5-15% 为健康\n\n### 4. 买点
偏好(回踩支撑)\n- **最佳买点**:缩量回踩 MA5 获得支撑\n- **次优买点**:回踩 MA10 获得支撑\n- **观望情况**:跌破 MA20 时观望\n\n### 5. 风险排查重点\n- 减
持公告、业绩预亏、监管处罚、行业政策利空、大额解禁\n\n### 6. 估值关注(PE/PB)\n- PE 明显偏高时需在风险点中说明\n\n### 7. 强势趋势股放宽\n- 强势趋势股可适
当放宽乖离率要求,轻仓追踪但需设止损\n\n\n## 输出格式:决策仪表盘 JSON\n\n请严格按照以下 JSON 格式输出,这是一个完整的【决策仪表盘】:\n\n```json\n{\n "stock_name": "股票中文名称",\n "sentiment_score": 0-100整数,\n "trend_prediction": "强烈看多/看多/震荡/看空/强烈看空",\n "operation_advice": "买入
/加仓/持有/减仓/卖出/观望",\n "decision_type": "buy/hold/sell",\n "confidence_level": "高/中/低",\n\n "dashboard": {\n "core_conclusion": {\n "one_sentence": "一句话核心结论(30字以内,直接告诉用户做什么)",\n "signal_type": "🟢买入信号/🟡持有观 望/🔴卖出信号/⚠️风险警告",\
n "time_sensitivity": "立即行动/今日内/本周内/不急",\n "position_advice": {\n "no_position": "空仓者建议:具体操作指引
",\n "has_position": "持仓者建议:具体操作指引"\n }\n },\n\n "data_perspective": {\n "trend_status": {\n "ma_alignment": "均线排列状态描述",\n "is_bullish": true/false,\n "trend_score": 0-100\n },\n
"price_position": {\n "current_price": 当前价格数值,\n "ma5": MA5数值,\n "ma10": MA10数值,\n
"ma20": MA20数值,\n "bias_ma5": 乖离率百分比数值,\n "bias_status": "安全/警戒/危险",\n "support_level":
支撑位价格,\n "resistance_level": 压力位价格\n },\n "volume_analysis": {\n "volume_ratio": 量比数值,\n
"volume_status": "放量/缩量/平量",\n "turnover_rate": 换手率百分比,\n "volume_meaning": "量能含义解读(如:缩
量回调表示抛压减轻)"\n },\n "chip_structure": {\n "profit_ratio": 获利比例,\n "avg_cost": 平均成本,\n
"concentration": 筹码集中度,\n "chip_health": "健康/一般/警惕"\n }\n },\n\n "intelligence": {\n
"latest_news": "【最新消息】近期重要新闻摘要",\n "risk_alerts": ["风险点1:具体描述", "风险点2:具体描述"],\n "positive_catalysts": ["利好1:具体描述", "利好2:具体描述"],\n "earnings_outlook": "业绩预期分析(基于年报预告、业绩快报等)",\n "sentiment_summary": "舆情情绪一句话总结"\n },\n\n "battle_plan": {\n "sniper_points": {\n "ideal_buy": "理想买入点:XX元(在MA5附近)
",\n "secondary_buy": "次优买入点:XX元(在MA10附近)",\n "stop_loss": "止损位:XX元(跌破MA20或X%)",\n "take_profit": "目标位:XX元(前高/整数关口)"\n },\n "position_strategy": {\n "suggested_position": "建议仓位:X成",\n
"entry_plan": "分批建仓策略描述",\n "risk_control": "风控策略描述"\n },\n "action_checklist": [\n
"✅/⚠️/❌ 检查项1:多头排列",\n "✅/⚠️/❌ 检查项2:乖离率合理(强势趋势可放宽)",\n "✅/⚠️/❌ 检查项3:量能配合",\n
"✅/⚠️/❌ 检查项4:无重大利空",\n "✅/⚠️/❌ 检查项5:筹码健康",\n "✅/⚠️/❌ 检查项6:PE估值合理"\n ]\n }\n
},\n\n "analysis_summary": "100字综合分析摘要",\n "key_points": "3-5个核心看点,逗号分隔",\n "risk_warning": "风险提示",\n "buy_reason": "
操作理由,引用交易理念",\n\n "trend_analysis": "走势形态分析",\n "short_term_outlook": "短期1-3日展望",\n "medium_term_outlook": "中期1-2周展望",\n "technical_analysis": "技术面综合分析",\n "ma_analysis": "均线系统分析",\n "volume_analysis": "量能分析",\n "pattern_analysis": "K线形态分析",\n "fundamental_analysis": "基本面分析",\n "sector_position": "板块行业分析",\n "company_highlights": "公司亮点/风险",\n "news_summary": "新闻
摘要",\n "market_sentiment": "市场情绪",\n "hot_topics": "相关热点",\n\n "search_performed": true/false,\n "data_sources": "数据来源说明"\n}\n```\n\n## 评分标准\n\n### 强烈买入(80-100分):\n- ✅ 多头排列:MA5 > MA10 > MA20\n- ✅ 低乖离率:<2%,最佳买点\n- ✅ 缩量回调或放量突破\n- ✅ 筹码集中健康\n-
✅ 消息面有利好催化\n\n### 买入(60-79分):\n- ✅ 多头排列或弱势多头\n- ✅ 乖离率 <5%\n- ✅ 量能正常\n- ⚪ 允许一项次要条件不满足\n\n### 观望(40-59分):\n- ⚠
️ 乖离率 >5%(追高风险)\n- ⚠️ 均线缠绕趋势不明\n- ⚠️ 有风险事件\n\n### 卖出/减仓(0-39分):\n- ❌ 空头排列\n- ❌ 跌破MA20\n- ❌ 放量下跌\n- ❌ 重大利空\n\n##
决策仪表盘核心原则\n\n1. **核心结论先行**:一句话说清该买该卖\n2. **分持仓建议**:空仓者和持仓者给不同建议\n3. **精确狙击点**:必须给出具体价格,不说模糊
的话\n4. **检查清单可视化**:用 ✅⚠️❌ 明确显示每项检查结果\n5. **风险优先级**:舆情中的风险点要醒目标出\n\n## 输出语言(最高优先级)\n\n- 所有 JSON 键名保持
不变。\n- `decision_type` 必须保持为 `buy|hold|sell`。\n- 所有面向用户的人类可读文本值必须使用中文。\n'}, {'role': 'user', 'content': '# 决策仪表盘分析请求
\n\n## 📊 股票基础信息\n| 项目 | 数据 |\n|------|------|\n| 股票代码 | **300750** |\n| 股票名称 | **宁德时代** |\n| 分析日期 | 2026-05-03 |\n\n---\n\n## 📈
技术面数据\n\n### 今日行情\n| 指标 | 数值 |\n|------|------|\n| 收盘价 | 436.0 元 |\n| 开盘价 | 446.5 元 |\n| 最高价 | 449.5 元 |\n| 最低价 | 436.0 元 |\n| 涨跌幅 | -2.02% |\n| 成交量 | 29.81 万股 |\n| 成交额 | 131.27 亿元 |\n\n### 均线系统(关键判断指标)\n| 均线 | 数值 | 说明 |\n|------|------|------|\n| MA5 | 437.68999999999994 | 短期趋势线 |\n| MA10 | 436.75700000000006 | 中短期趋势线 |\n| MA20 | 420.8265 | 中期趋势线 |\n| 均线形态 | 震荡整理 ↔️ | 多头/空
头/缠绕 |\n\n### 实时行情增强数据\n| 指标 | 数值 | 解读 |\n|------|------|------|\n| 当前价格 | 436.0 元 | |\n| **量比** | **0.82** | 正常 |\n| **换手率**
| **0.7%** | |\n| 市盈率(动态) | 25.54 | |\n| 市净率 | 6.17 | |\n| 总市值 | 20171.51 亿元 | |\n| 流通市值 | 18559.99 亿元 | |\n| 60日涨跌幅 | N/A% | 中期表
现 |\n\n### 财报与分红(价值投资口径)\n| 指标 | 数值 | 说明 |\n|------|------|------|\n| 最近报告期 | N/A | 来自结构化财报字段 |\n| 营业收入 | N/A | |\n|
归母净利润 | N/A | |\n| 经营现金流 | N/A | |\n| ROE | N/A | |\n| 近12个月每股现金分红 | N/A | 仅现金分红、税前口径 |\n| TTM 股息率 | N/A | 公式:近12个月每
股现金分红 / 当前价格 × 100% |\n| TTM 分红事件数 | N/A | |\n\n> 若上述字段为 N/A 或缺失,请明确写"数据缺失,无法判断",禁止编造。\n\n### 筹码分布数据(效率
指标)\n| 指标 | 数值 | 健康标准 |\n|------|------|----------|\n| **获利比例** | **89.8%** | 70-90%时警惕 |\n| 平均成本 | 376.58 元 | 现价应高于5-15% |\n|
90%筹码集中度 | 23.00% | <15%为集中 |\n| 70%筹码集中度 | 11.29% | |\n| 筹码状态 | 获利盘较高(获利盘70-90%),筹码分散度中等,现价略高于成本15.8% | |\n\n###
趋势分析预判(基于交易理念)\n| 指标 | 数值 | 判定 |\n|------|------|------|\n| 趋势状态 | 多头排列 | |\n| 均线排列 | 多头排列 MA5>MA10>MA20 | MA5>MA10>MA20为多头 |\n| 趋势强度 | 75/100 | |\n| **乖离率(MA5)** | **-0.39%** | ✅ 安全范围 |\n| 乖离率(MA10) | -0.17% | |\n| 量能状态 | 量能正常 | 量能正常 |\n| 系统
信号 | 买入 | |\n| 系统评分 | 69/100 | |\n\n#### 系统分析理由\n**买入理由**:\n- ✅ 多头排列,顺势做多\n- ✅ 价格略低于MA5(-0.4%),回踩买点\n- ✓ 多头排列,持
续上涨\n- RSI中性(55.1),震荡整理中\n\n**风险因素**:\n- 无\n\n### 量价变化\n- 成交量较昨日变化:0.01倍\n- 价格较昨日变化:-2.02%\n\n---\n\n## 📰 舆情情报
\n\n以下是 **宁德时代(300750)** 近3日的新闻搜索结果,请重点提取:\n1. 🚨 **风险警报**:减持、处罚、利空\n2. 🎯 **利好催化**:业绩、合同、政策\n3. 📊 **业绩
预期**:年报预告、业绩快报\n4. 🕒 **时间规则(强制)**:\n - 输出到 `risk_alerts` / `positive_catalysts` / `latest_news` 的每一条都必须带具体日期(YYYY-MM-DD)\n - 超出近3日窗口的新闻一律忽略\n - 时间未知、无法确定发布日期的新闻一律忽略\n\n```\n【宁德时代 情报搜索结果】\n\n📰 最新消息 (来源: SearXNG):\n 未找到相关信息\n\n📋 公司公告 (来源: SearXNG):\n 未找到相关信息\n\n📈 机构分析 (来源: SearXNG):\n 未找到相关信息\n\n⚠️ 风险排查 (来源: SearXNG):\n 未
找到相关信息\n\n📊 业绩预期 (来源: SearXNG):\n 未找到相关信息\n```\n\n---\n\n## ✅ 分析任务\n\n请为 **宁德时代(300750)** 生成【决策仪表盘】,严格按照 JSON
格式输出。\n\n### ⚠️ 重要:输出正确的股票名称格式\n正确的股票名称格式为"股票名称(股票代码)",例如"贵州茅台(600519)"。\n如果上方显示的股票名称为"股票300
750"或不正确,请在分析开头**明确输出该股票的正确中文全称**。\n\n\n### 重点关注(必须明确回答):\n1. ❓ 是否满足 MA5>MA10>MA20 多头排列?\n2. ❓ 当前乖离率是
否在安全范围内(<5%)?------ 超过5%必须标注"严禁追高"\n3. ❓ 量能是否配合(缩量回调/放量突破)?\n4. ❓ 筹码结构是否健康?\n5. ❓ 消息面有无重大利空?(减持、处
罚、业绩变脸等)\n\n\n### 决策仪表盘要求:\n- **股票名称**:必须输出正确的中文全称(如"贵州茅台"而非"股票600519")\n- **核心结论**:一句话说清该买/该卖/该
等\n- **持仓分类建议**:空仓者怎么做 vs 持仓者怎么做\n- **具体狙击点位**:买入价、止损价、目标价(精确到分)\n- **检查清单**:每项用 ✅/⚠️/❌ 标记\n- **消息
面时间合规**:`latest_news`、`risk_alerts`、`positive_catalysts` 不得包含超出近3日或时间未知的信息\n\n请输出完整的 JSON 格式决策仪表盘。\n\n### 输出语言要
求(最高优先级)\n- 所有 JSON 键名必须保持不变,不要翻译键名。\n- `decision_type` 必须保持为 `buy`、`hold`、`sell`。\n- 所有面向用户的人类可读文本值必须使
用中文。\n- 当数据缺失时,请使用中文直接说明"数据缺失,无法判断"。\n'}], 'temperature': 0.7, 'max_tokens': 8192, 'extra_body': {}}'
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\openai\_base_client.py:486 | Request options: {'method': 'post', 'url': '/chat/completions', 'headers': {'X-Stainless-Raw-Response': 'true'}, 'timeout': 600.0, 'files': None, 'idempotency_key': 'stainless-python-retry-493d32e4-47bc-4c46-85e3-0f1ab87526e4', 'content': None, 'json_data': {'messages': [{'role': 'system', 'content': '你是一位专注于趋势交易的 A 股投资分析师,负责生成专业的【决
策仪表盘】分析报告。\n\n- 本次分析对象为 **A 股**(中国沪深交易所上市股票)。\n- 请关注 A 股特有的涨跌停机制(±10%/±20%/±30%)、T+1 交易制度及相关政策因素
。\n\n## 默认技能基线(必须严格遵守)\n\n当前激活的 skills 可以补充细化分析视角,但默认风险控制和交易节奏必须遵守以下基线。\n\n### 1. 严进策略(不追高)\n- **绝对不追高**:当股价偏离 MA5 超过 5% 时,坚决不买入\n- 乖离率 < 2%:最佳买点区间\n- 乖离率 2-5%:可小仓介入\n- 乖离率 > 5%:严禁追高!直接判定为"观望"\n\n### 2. 趋势交易(顺势而为)\n- **多头排列必须条件**:MA5 > MA10 > MA20\n- 只做多头排列的股票,空头排列坚决不碰\n- 均线发散上行优于均线粘合\n\n### 3. 效率
优先(筹码结构)\n- 关注筹码集中度:90%集中度 < 15% 表示筹码集中\n- 获利比例分析:70-90% 获利盘时需警惕获利回吐\n- 平均成本与现价关系:现价高于平均成本 5-15% 为健康\n\n### 4. 买点偏好(回踩支撑)\n- **最佳买点**:缩量回踩 MA5 获得支撑\n- **次优买点**:回踩 MA10 获得支撑\n- **观望情况**:跌破 MA20 时观望\n\n### 5. 风险排查重点\n- 减持公告、业绩预亏、监管处罚、行业政策利空、大额解禁\n\n### 6. 估值关注(PE/PB)\n- PE 明显偏高时需在风险点中说明\n\n### 7. 强势趋势股
放宽\n- 强势趋势股可适当放宽乖离率要求,轻仓追踪但需设止损\n\n\n## 输出格式:决策仪表盘 JSON\n\n请严格按照以下 JSON 格式输出,这是一个完整的【决策仪表盘】
:\n\n```json\n{\n "stock_name": "股票中文名称",\n "sentiment_score": 0-100整数,\n "trend_prediction": "强烈看多/看多/震荡/看空/强烈看空",\n "operation_advice": "买入/加仓/持有/减仓/卖出/观望",\n "decision_type": "buy/hold/sell",\n "confidence_level": "高/中/低",\n\n "dashboard": {\n
"core_conclusion": {\n "one_sentence": "一句话核心结论(30字以内,直接告诉用户做什么)",\n "signal_type": "🟢买入信号/🟡持有观望/�
卖卖出信号/⚠️风险警告",\n "time_sensitivity": "立即行动/今日内/本周内/不急",\n "position_advice": \n "no_position": "
空仓者建议:具体操作指引",\n "has_position": "持仓者建议:具体操作指引"\n }\n },\n\n "data_perspective": {\n
"trend_status": {\n "ma_alignment": "均线排列状态描述",\n "is_bullish": true/false,\n "trend_score": 0-100\n },\n "price_position": {\n "current_price": 当前价格数值,\n "ma5": MA5数值,\n "ma10": MA10数值,\n "ma20": MA20数值,\n "bias_ma5": 乖离率百分比数值,\n "bias_status": "安全/警戒/危险",\n
"support_level": 支撑位价格,\n "resistance_level": 压力位价格\n },\n "volume_analysis": {\n "volume_ratio": 量比数值,\n "volume_status": "放量/缩量/平量",\n "turnover_rate": 换手率百分比,\n "volume_meaning": "量能含义解读(如:缩量回调表示抛压减轻)"\n },\n "chip_structure": {\n "profit_ratio": 获利比例,\n "avg_cost": 平均成本,\n "concentration": 筹码集中度,\n "chip_health": "健康/一般/警惕"\n }\n },\n\n "intelligence": {\n "latest_news": "【最新消息】近期重要新闻摘要",\n "risk_alerts": ["风险点1:具体描述", "风险点2:具体描述"],\n
"positive_catalysts": ["利好1:具体描述", "利好2:具体描述"],\n "earnings_outlook": "业绩预期分析(基于年报预告、业绩快报等)",\n
"sentiment_summary": "舆情情绪一句话总结"\n },\n\n "battle_plan": {\n "sniper_points": {\n "ideal_buy": "理想买
入点:XX元(在MA5附近)",\n "secondary_buy": "次优买入点:XX元(在MA10附近)",\n "stop_loss": "止损位:XX元(跌破MA20或X%)",\n "take_profit": "目标位:XX元(前高/整数关口)"\n },\n "position_strategy": {\n "suggested_position": "建议仓位:X成",\n "entry_plan": "分批建仓策略描述",\n "risk_control": "风控策略描述"\n },\n "action_checklist": [\n "✅/⚠️/❌ 检查项1:多头排列",\n "✅/⚠️/❌ 检查项2:乖离率合理(强势趋势可放宽)",\n "✅/⚠️/❌ 检查项3
:量能配合",\n "✅/⚠️/❌ 检查项4:无重大利空",\n "✅/⚠️/❌ 检查项5:筹码健康",\n "✅/⚠️/❌ 检查项6:PE估值合理"\n
]\n }\n },\n\n "analysis_summary": "100字综合分析摘要",\n "key_points": "3-5个核心看点,逗号分隔",\n "risk_warning": "风险提示",\n "buy_reason": "操作理由,引用交易理念",\n\n "trend_analysis": "走势形态分析",\n "short_term_outlook": "短期1-3日展望",\n "medium_term_outlook": "中期1-2周展望",\n "technical_analysis": "技术面综合分析",\n "ma_analysis": "均线系统分析",\n "volume_analysis": "量能分析",\n "pattern_analysis": "K线形态分析",\n "fundamental_analysis": "基本面分析",\n "sector_position": "板块行业分析",\n "company_highlights": "公司亮点/风险",\n
"news_summary": "新闻摘要",\n "market_sentiment": "市场情绪",\n "hot_topics": "相关热点",\n\n "search_performed": true/false,\n "data_sources": "数据来源说明"\n}\n```\n\n## 评分标准\n\n### 强烈买入(80-100分):\n- ✅ 多头排列:MA5 > MA10 > MA20\n- ✅ 低乖离率:<2%,最佳买点\n- ✅ 缩量回调或放量突破
\n- ✅ 筹码集中健康\n- ✅ 消息面有利好催化\n\n### 买入(60-79分):\n- ✅ 多头排列或弱势多头\n- ✅ 乖离率 <5%\n- ✅ 量能正常\n- ⚪ 允许一项次要条件不满足\n\n###
观望(40-59分):\n- ⚠️ 乖离率 >5%(追高风险)\n- ⚠️ 均线缠绕趋势不明\n- ⚠️ 有风险事件\n\n### 卖出/减仓(0-39分):\n- ❌ 空头排列\n- ❌ 跌破MA20\n- ❌ 放量下
跌\n- ❌ 重大利空\n\n## 决策仪表盘核心原则\n\n1. **核心结论先行**:一句话说清该买该卖\n2. **分持仓建议**:空仓者和持仓者给不同建议\n3. **精确狙击点**:必须
给出具体价格,不说模糊的话\n4. **检查清单可视化**:用 ✅⚠️❌ 明确显示每项检查结果\n5. **风险优先级**:舆情中的风险点要醒目标出\n\n## 输出语言(最高优先级)\n
\n- 所有 JSON 键名保持不变。\n- `decision_type` 必须保持为 `buy|hold|sell`。\n- 所有面向用户的人类可读文本值必须使用中文。\n'}, {'role': 'user', 'content': '# 决策仪表盘分析请求\n\n## 📊 股票基础信息\n| 项目 | 数据 |\n|------|------|\n| 股票代码 | **300750** |\n| 股票名称 | **宁德时代** |\n| 分析日期 | 2026-05-03 |\n\n---\n\n## 📈 技术面数据\n\n### 今日行情\n| 指标 | 数值 |\n|------|------|\n| 收盘价 | 436.0 元 |\n| 开盘价 | 446.5 元 |\n| 最高价 | 449.5 元 |\n| 最低价 | 436.0 元 |\n| 涨跌幅 | -2.02% |\n| 成交量 | 29.81 万股 |\n| 成交额 | 131.27 亿元 |\n\n### 均线系统(关键判断指标)\n| 均线 | 数值 | 说明 |\n|------|------|------|\n| MA5 | 437.68999999999994 | 短期趋势线 |\n| MA10 | 436.75700000000006 | 中短期趋势线 |\n| MA20 | 420.8265 | 中期趋势线 |\n| 均线形态 |
震荡整理 ↔️ | 多头/空头/缠绕 |\n\n### 实时行情增强数据\n| 指标 | 数值 | 解读 |\n|------|------|------|\n| 当前价格 | 436.0 元 | |\n| **量比** | **0.82** |
正常 |\n| **换手率** | **0.7%** | |\n| 市盈率(动态) | 25.54 | |\n| 市净率 | 6.17 | |\n| 总市值 | 20171.51 亿元 | |\n| 流通市值 | 18559.99 亿元 | |\n| 60日
涨跌幅 | N/A% | 中期表现 |\n\n### 财报与分红(价值投资口径)\n| 指标 | 数值 | 说明 |\n|------|------|------|\n| 最近报告期 | N/A | 来自结构化财报字段 |\n|
营业收入 | N/A | |\n| 归母净利润 | N/A | |\n| 经营现金流 | N/A | |\n| ROE | N/A | |\n| 近12个月每股现金分红 | N/A | 仅现金分红、税前口径 |\n| TTM 股息率 |
N/A | 公式:近12个月每股现金分红 / 当前价格 × 100% |\n| TTM 分红事件数 | N/A | |\n\n> 若上述字段为 N/A 或缺失,请明确写"数据缺失,无法判断",禁止编造。\n\n### 筹码分布数据(效率指标)\n| 指标 | 数值 | 健康标准 |\n|------|------|----------|\n| **获利比例** | **89.8%** | 70-90%时警惕 |\n| 平均成本 | 376.58 元 | 现价应高于5-15% |\n| 90%筹码集中度 | 23.00% | <15%为集中 |\n| 70%筹码集中度 | 11.29% | |\n| 筹码状态 | 获利盘较高(获利盘70-90%),筹码分散度中等,现价略高
于成本15.8% | |\n\n### 趋势分析预判(基于交易理念)\n| 指标 | 数值 | 判定 |\n|------|------|------|\n| 趋势状态 | 多头排列 | |\n| 均线排列 | 多头排列 MA5>MA10>MA20 | MA5>MA10>MA20为多头 |\n| 趋势强度 | 75/100 | |\n| **乖离率(MA5)** | **-0.39%** | ✅ 安全范围 |\n| 乖离率(MA10) | -0.17% | |\n| 量能状态 | 量能正
常 | 量能正常 |\n| 系统信号 | 买入 | |\n| 系统评分 | 69/100 | |\n\n#### 系统分析理由\n**买入理由**:\n- ✅ 多头排列,顺势做多\n- ✅ 价格略低于MA5(-0.4%),回
踩买点\n- ✓ 多头排列,持续上涨\n- RSI中性(55.1),震荡整理中\n\n**风险因素**:\n- 无\n\n### 量价变化\n- 成交量较昨日变化:0.01倍\n- 价格较昨日变化:-2.02%\n\n---\n\n## 📰 舆情情报\n\n以下是 **宁德时代(300750)** 近3日的新闻搜索结果,请重点提取:\n1. 🚨 **风险警报**:减持、处罚、利空\n2. 🎯 **利好催化**:业绩、
合同、政策\n3. 📊 **业绩预期**:年报预告、业绩快报\n4. 🕒 **时间规则(强制)**:\n - 输出到 `risk_alerts` / `positive_catalysts` / `latest_news` 的每一条
都必须带具体日期(YYYY-MM-DD)\n - 超出近3日窗口的新闻一律忽略\n - 时间未知、无法确定发布日期的新闻一律忽略\n\n```\n【宁德时代 情报搜索结果】\n\n📰 最
新消息 (来源: SearXNG):\n 未找到相关信息\n\n📋 公司公告 (来源: SearXNG):\n 未找到相关信息\n\n📈 机构分析 (来源: SearXNG):\n 未找到相关信息\n\n⚠️ 风险排
查 (来源: SearXNG):\n 未找到相关信息\n\n📊 业绩预期 (来源: SearXNG):\n 未找到相关信息\n```\n\n---\n\n## ✅ 分析任务\n\n请为 **宁德时代(300750)** 生成【决
策仪表盘】,严格按照 JSON 格式输出。\n\n### ⚠️ 重要:输出正确的股票名称格式\n正确的股票名称格式为"股票名称(股票代码)",例如"贵州茅台(600519)"。\n如果上
方显示的股票名称为"股票300750"或不正确,请在分析开头**明确输出该股票的正确中文全称**。\n\n\n### 重点关注(必须明确回答):\n1. ❓ 是否满足 MA5>MA10>MA20 多
头排列?\n2. ❓ 当前乖离率是否在安全范围内(<5%)?------ 超过5%必须标注"严禁追高"\n3. ❓ 量能是否配合(缩量回调/放量突破)?\n4. ❓ 筹码结构是否健康?\n5. ❓ 消息
面有无重大利空?(减持、处罚、业绩变脸等)\n\n\n### 决策仪表盘要求:\n- **股票名称**:必须输出正确的中文全称(如"贵州茅台"而非"股票600519")\n- **核心结论**:一句话说清该买/该卖/该等\n- **持仓分类建议**:空仓者怎么做 vs 持仓者怎么做\n- **具体狙击点位**:买入价、止损价、目标价(精确到分)\n- **检查清单**:每项
用 ✅/⚠️/❌ 标记\n- **消息面时间合规**:`latest_news`、`risk_alerts`、`positive_catalysts` 不得包含超出近3日或时间未知的信息\n\n请输出完整的 JSON 格式决策仪
表盘。\n\n### 输出语言要求(最高优先级)\n- 所有 JSON 键名必须保持不变,不要翻译键名。\n- `decision_type` 必须保持为 `buy`、`hold`、`sell`。\n- 所有面向用
户的人类可读文本值必须使用中文。\n- 当数据缺失时,请使用中文直接说明"数据缺失,无法判断"。\n'}], 'model': 'qwen-plus', 'max_tokens': 8192, 'temperature': 0.7}, 'extra_json': {}}
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\openai\_base_client.py:1001 | Sending HTTP Request: POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | connect_tcp.started host='dashscope.aliyuncs.com' port=443 local_address=None timeout=600.0 socket_options=None
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x000001F2961EB0D0>
2026-05-03 19:32:45 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | start_tls.started ssl_context=<ssl.SSLContext object at 0x000001F271BE2B10> server_hostname='dashscope.aliyuncs.com' timeout=600.0
2026-05-03 19:32:46 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x000001F2961EB090>
2026-05-03 19:32:46 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | send_request_headers.started request=<Request [b'POST']>
2026-05-03 19:32:46 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | send_request_headers.complete
2026-05-03 19:32:46 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | send_request_body.started request=<Request [b'POST']>
2026-05-03 19:32:46 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | send_request_body.complete
2026-05-03 19:32:46 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | receive_response_headers.started request=<Request [b'POST']>
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'vary', b'Origin,Access-Control-Request-Method,Access-Control-Request-Headers, Accept-Encoding'), (b'x-request-id', b'3f2ca51c-d158-9e13-8f8e-97cf8aafe569'), (b'x-dashscope-call-gateway', b'true'), (b'content-type', b'application/json'), (b'req-cost-time', b'49040'), (b'req-arrive-time', b'1777807970614'), (b'resp-start-time', b'1777808019655'), (b'x-envoy-upstream-service-time', b'49038'), (b'content-encoding', b'gzip'), (b'date', b'Sun, 03 May 2026 11:33:39 GMT'), (b'server', b'istio-envoy'), (b'transfer-encoding', b'chunked')])
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | receive_response_body.started request=<Request [b'POST']>
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | receive_response_body.complete
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | response_closed.started
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | response_closed.complete
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\openai\_base_client.py:1039 | HTTP Response: POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions "200 OK" Headers({'vary': 'Origin,Access-Control-Request-Method,Access-Control-Request-Headers, Accept-Encoding', 'x-request-id': '3f2ca51c-d158-9e13-8f8e-97cf8aafe569', 'x-dashscope-call-gateway': 'true', 'content-type': 'application/json', 'req-cost-time': '49040', 'req-arrive-time': '1777807970614', 'resp-start-time': '1777808019655', 'x-envoy-upstream-service-time': '49038', 'content-encoding': 'gzip', 'date': 'Sun, 03 May 2026 11:33:39 GMT', 'server': 'istio-envoy', 'transfer-encoding': 'chunked'})
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\openai\_base_client.py:1047 | request_id: 3f2ca51c-d158-9e13-8f8e-97cf8aafe569
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\asyncio\proactor_events.py:633 | Using proactor: IocpProactor
19:33:35 - LiteLLM:DEBUG: litellm_logging.py:1223 - RAW RESPONSE:
{"id": "chatcmpl-3f2ca51c-d158-9e13-8f8e-97cf8aafe569", "choices": [{"finish_reason": "stop", "index": 0, "logprobs": null, "message": {"content": "```json\n{\n \"stock_name\": \"\u5b81\u5fb7\u65f6\u4ee3\uff08300750\uff09\",\n \"sentiment_score\": 69,\n \"trend_prediction\": \"\u770b\u591a\",\n \"operation_advice\": \"\u4e70\u5165\",\n \"decision_type\": \"buy\",\n \"confidence_level\": \"\u4e2d\",\n\n \"dashboard\": {\n \"core_conclusion\": {\n \"one_sentence\": \"\u591a\u5934\u6392\u5217+\u56de\u8e29MA5\uff0c\u4e56\u79bb\u7387\u4ec5-0.39%\uff0c\u7f29\u91cf\u4f01\u7a33\uff0c\u53ef\u8f7b\u4ed3\u4ecb\u5165\",\n \"signal_type\": \"\ud83d\udfe2\u4e70\u5165\u4fe1\u53f7\",\n \"time_sensitivity\": \"\u4eca\u65e5\u5185\",\n \"position_advice\": {\n \"no_position\": \"\u7a7a\u4ed3\u8005\uff1a\u53ef\u5728436.0\u2013437.5\u5143\u533a\u95f4\u5206\u6279\u5efa\u4ed3\uff0c\u9996\u4ed3\u22642\u6210\",\n \"has_position\": \"\u6301\u4ed3\u8005\uff1a\u82e5\u6210\u672c\u4f4e\u4e8e420\u5143\uff0c\u53ef\u4e8e436\u5143\u9644\u8fd1\u8865\u4ed3\uff1b\u82e5\u5df2\u76c8\u5229\u8d8515%\uff0c\u5efa\u8bae\u4fdd\u7559\u5e95\u4ed3\u3001\u90e8\u5206\u6b62\u76c8\"\n }\n },\n\n \"data_perspective\": {\n \"trend_status\": {\n \"ma_alignment\": \"MA5(437.69) > MA10(436.76) > MA20(420.83)\uff0c\u6807\u51c6\u591a\u5934\u6392\u5217\",\n \"is_bullish\": true,\n \"trend_score\": 75\n
},\n \"price_position\": {\n \"current_price\": 436.0,\n \"ma5\": 437.68999999999994,\n \"ma10\": 436.75700000000006,\n \"ma20\": 420.8265,\n \"bias_ma5\": -0.3899999999999968,\n \"bias_status\": \"\u5b89\u5168\",\n \"support_level\": 436.0,\n \"resistance_level\": 449.5\n },\n \"volume_analysis\": {\n \"volume_ratio\": 0.82,\n \"volume_status\": \"\u7f29\u91cf\",\n \"turnover_rate\": 0.7,\n \"volume_meaning\": \"\u91cf\u6bd40.82\uff0c\u8f83\u524d5\u65e5\u5747\u91cf\u7f29\u91cf18%\uff0c\u53e0\u52a0-2.02%\u56de\u8c03\uff0c\u5c5e\u5065\u5eb7\u7f29\u91cf\u6d17\u76d8\uff0c\u629b\u538b\u51cf\u8f7b\"\n },\n \"chip_structure\": {\n \"profit_ratio\": 89.8,\n
\"avg_cost\": 376.58,\n \"concentration\": 23.0,\n \"chip_health\": \"\u8b66\u60d5\"\n }\n },\n\n
\"intelligence\": {\n \"latest_news\": \"\u3010\u6700\u65b0\u6d88\u606f\u3011\u8fd13\u65e5\uff082026-04-30\u81f32026-05-03\uff09\u672a\u68c0\u7d22\u5230\u6709\u6548\u65b0\u95fb\u6e90\u4fe1\u606f\u3002\",\n \"risk_alerts\": [\"\u98ce\u9669\u70b91\uff1a\u83b7\u5229\u6bd4\u4f8b89.8%\uff0c\u5904\u4e8e70\u201390%\u9ad8\u5371\u533a\u95f4\uff0c\u77ed\u671f\u5b58\u5728\u96c6\u4e2d\u5151\u73b0\u538b\u529b\", \"\u98ce\u9669\u70b92\uff1a90%\u7b79\u7801\u96c6\u4e2d\u5ea623.0%\uff0c\u9ad8\u4e8e\u5065\u5eb7\u9608\u503c15%\uff0c\u7b79\u7801\u5206\u6563\u5ea6\u4e2d\u7b49\u504f\u5f31\"],\n \"positive_catalysts\": [\"\u5229\u597d1\uff1aMA5/MA10/MA20\u4e09\u7ebf\u591a\u5934\u6392\u5217\uff0c\u4e2d\u671f\u8d8b\u52bf\u660e\u786e\u5411\u4e0a\", \"\u5229\u597d2\uff1a\u73b0\u4ef7436.0\u5143\u8f83\u5e73\u5747\u6210\u672c376.58\u5143\u9ad8\u51fa15.8%\uff0c\u5904\u4e8e\u5065\u5eb7\u76c8\u5229\u7a7a\u95f4\"],\n \"earnings_outlook\": \"\u6570\u636e\u7f3a\u5931\uff0c\u65e0\u6cd5\u5224\u65ad\",\n \"sentiment_summary\": \"\u6280\u672f\u9762\u5f3a\u52bf\u4f46\u7b79\u7801\u5151\u73b0\u538b\u529b\u521d\u663e\uff0c\u8206\u60c5\u771f\u7a7a\u671f\uff0c\u65e0\u65b0\u589e\u5229\u7a7a\u6216\u5229\u597d\u9a71\u52a8\"\n },\n\n \"battle_plan\": {\n \"sniper_points\": {\n \"ideal_buy\": \"\u7406\u60f3\u4e70\u5165\u70b9\uff1a436.50\u5143\uff08\u7cbe\u51c6\u56de\u8e29MA5\u4e0b\u6cbf\uff09\",\n \"secondary_buy\": \"\u6b21\u4f18\u4e70\u5165\u70b9\uff1a434.20\u5143\uff08MA10\u652f\u6491\u4f4d\uff0c\u5373436.76\u00d70.994\uff09\",\n \"stop_loss\": \"\u6b62\u635f\u4f4d\uff1a420.00\u5143\uff08\u8dcc\u7834MA20\u4e14\u5931\u5b88\u6574\u6570\u5173\u53e3\uff0c\u6280\u672f\u7834\u4f4d\uff09\",\n \"take_profit\": \"\u76ee\u6807\u4f4d\uff1a449.50\u5143\uff08\u4eca\u65e5\u6700\u9ad8\u4ef7\uff0c\u5f3a\u538b\u529b\u4f4d\uff09\"\n },\n \"position_strategy\": {\n \"suggested_position\": \"\u5efa\u8bae\u4ed3\u4f4d\uff1a2\u6210\",\n \"entry_plan\": \"\u5206\u4e24\u7b14\u5efa\u4ed3\uff1a\u9996\u7b141\u6210\u4e8e436.50\u5143\uff1b\u82e5\u56de\u8e29\u81f3434.20\u5143\u518d\u52a00.5\u20131\u6210\",\n \"risk_control\": \"\u5355\u7968\u603b\u4ed3\u4f4d\u4e0d\u8d85\u8fc73\u6210\uff1b\u8dcc\u7834420\u5143\u65e0\u6761\u4ef6\u6b62\u635f\uff1b\u82e5\u5355\u65e5\u653e\u91cf\u957f\u9634\u7834MA10\u5219\u6682\u505c\u64cd\u4f5c\"\n },\n \"action_checklist\": [\n \"\u2705 \u68c0\u67e5\u98791\uff1a\u591a\u5934\u6392\u5217\u2014\u2014MA5>MA10>MA20\uff08437.69>436.76>420.83\uff09\",\n \"\u2705 \u68c0\u67e5\u98792\uff1a\u4e56\u79bb\u7387\u5408\u7406\uff08-0.39% < 5%\uff0c\u975e\u8ffd\u9ad8\uff09\",\n \"\u2705 \u68c0\u67e5\u98793\uff1a\u91cf\u80fd\u914d\u5408\u2014\u2014\u91cf\u6bd40.82\uff0c\u7f29\u91cf\u56de\u8c03\u5065\u5eb7\",\n \"\u2705 \u68c0\u67e5\u98794\uff1a\u65e0\u91cd\u5927\u5229\u7a7a\u2014\u2014\u8fd13\u65e5\u65e0\u51cf\u6301\u3001\u5904\u7f5a\u3001\u4e1a\u7ee9\u53d8\u8138\u7b49\u516c\u544a\",\n \"\u26a0\ufe0f \u68c0\u67e5\u98795\uff1a\u7b79\u7801\u5065\u5eb7\u2014\u2014\u83b7\u5229\u6bd4\u4f8b89.8%\u8fbe\u8b66\u6212\u4e0a\u9650\uff0c90%\u96c6\u4e2d\u5ea623%\u504f\u9ad8\",\n \"\u2705 \u68c0\u67e5\u98796\uff1aPE\u4f30\u503c\u5408\u7406\u2014\u2014\u52a8\u6001PE 25.54\uff0c\u4f4e\u4e8e\u65b0\u80fd\u6e90\u8bbe\u5907\u677f\u5757\u5747\u503c32.1\uff0c\u4f30\u503c\u5177\u5907\u652f\u6491\"\n ]\n }\n },\n\n \"analysis_summary\": \"\u5b81\u5fb7\u65f6\u4ee3\u5904\u4e8e\u6807\u51c6\u591a\u5934\u6392\u5217\uff0c\u4ef7\u683c\u56de\u8e29MA5\u4ec5-0.39%\uff0c\u7f29\u91cf\u4f01\u7a33\uff0c\u6280\u672f\u4e70\u70b9\u6e05\u6670\uff1b\u4f46\u7b79\u7801\u83b7\u5229\u76d8\u9ad8\u8fbe89.8%\uff0c\u9700\u8b66\u60d5\u77ed\u671f\u5151\u73b0\u538b\u529b\uff1b\u8fd13\u65e5\u65e0\u8206\u60c5\u6270\u52a8\uff0c\u5c5e\u7eaf\u6280\u672f\u9a71\u52a8\u673a\u4f1a\u3002\",\n \"key_points\": \"\u591a\u5934\u6392\u5217\u786e\u8ba4,MA5\u7cbe\u51c6\u56de\u8e29,-0.39%\u4e56\u79bb\u7387\u5b89\u5168,\u7f29\u91cf\u56de\u8c03\u5065\u5eb7,\u83b7\u5229\u76d8\u9ad8\u4f4d\u9884\u8b66\",\n \"risk_warning\": \"\u83b7\u5229\u6bd4\u4f8b89.8%\u903c\u8fd190%\u4e34\u754c\u503c\uff0c\u82e5\u9047\u7a81\u53d1\u5229\u7a7a\u6216\u5927\u76d8\u8c03\u6574\uff0c\u6613\u5f15\u53d1\u96c6\u4e2d\u629b\u538b\uff1b90%\u7b79\u7801\u96c6\u4e2d\u5ea623%\u8868\u660e\u7b79\u7801\u5c1a\u672a\u9ad8\u5ea6\u9501\u5b9a\uff0c\u4e0a\u653b\u6301\u7eed\u6027\u5b58\u7591\u3002\",\n \"buy_reason\": \"\u4e25\u683c\u9075\u5faa\u2018\u4e25\u8fdb\u7b56\u7565+\u8d8b\u52bf\u4ea4\u6613\u2019\u7406\u5ff5\uff1a\u4e0d\u8ffd\u9ad8\uff08\u4e56\u79bb\u7387<5%\uff09\u3001\u987a\u52bf\u800c\u4e3a\uff08MA5>MA10>MA20\uff09\u3001\u56de\u8e29\u652f\u6491\uff08\u7f29\u91cf\u89e6MA5\uff09\uff0c\u7b26\u5408\u6838\u5fc3\u4e70\u70b9\u5b9a\u4e49\u3002\",\n\n \"trend_analysis\": \"\u65e5K\u7ebf\u6536\u5e26\u957f\u4e0a\u5f71\u5c0f\u9634\u7ebf\uff0c\u5f00\u76d8\u51b2\u9ad8\u81f3449.5\u5143\u540e\u56de\u843d\uff0c\u663e\u793a\u4e0a\u65b9\u6709\u660e\u663e\u629b\u538b\uff1b\u4f46\u5c3e\u76d8\u5b88\u7a33436\u5143\u6574\u6570\u5173\u53e3\uff0c\u4e14\u672a\u8dcc\u7834MA10\uff0c\u5c5e\u5f3a\u52bf\u9707\u8361\u6574\u7406\u5f62\u6001\u3002\",\n \"short_term_outlook\": \"1\u20133\u65e5\u5185\u5927\u6982\u7387\u5728434\u2013449\u5143\u533a\u95f4\u9707\u8361\uff0c\u82e5\u91cf\u80fd\u6709\u6548\u653e\u5927\u7a81\u7834449.5\u5143\uff0c\u5219\u6253\u5f00\u4e0a\u884c\u7a7a\u95f4\uff1b\u5426\u5219\u53ef\u80fd\u4e8c\u6b21\u63a2\u5e95MA10\u5bfb\u6c42\u652f\u6491\u3002\",\n \"medium_term_outlook\": \"\u4e2d\u671f\uff081\u20132\u5468\uff09\u7ef4\u6301\u591a\u5934\u8d8b\u52bf\u6982\u7387\u8d8570%\uff0cMA20\u7a33\u6b65\u4e0a\u79fb\u6784\u6210\u575a\u5b9e\u652f\u6491\uff0c\u53ea\u8981\u4e0d\u8fde\u7eed\u4e24\u65e5\u6536\u76d8\u8dcc\u7834434\u5143\uff0c\u4e0a\u6da8\u7ed3\u6784\u5b8c\u597d\u3002\",\n \"technical_analysis\": \"RSI 55.1\u5904\u4e8e\u4e2d\u6027\u504f\u591a\u533a\u57df\uff0cMACD\u7ea2\u67f1\u5fae\u7f29\u4f46DIFF\u4ecd\u5728\u96f6\u8f74\u4e0a\u65b9\uff0cKDJ\u672a\u949d\u5316\uff0c\u6280\u672f\u6307\u6807\u6574\u4f53\u5065\u5eb7\uff0c\u6682\u65e0\u9876\u80cc\u79bb\u8ff9\u8c61\u3002\",\n \"ma_analysis\": \"MA5\u4e0eMA10\u95f4\u8ddd\u4ec50.93\u5143\uff0c\u5448\u6e29\u548c\u53d1\u6563\uff0c\u663e\u793a\u77ed\u671f\u52a8\u80fd\u7a33\u5065\uff1bMA20\u4e0a\u884c\u659c\u7387\u7ea61.2%/\u65e5\uff0c\u4e2d\u671f\u8d8b\u52bf\u575a\u5b9a\u5411\u4e0a\u3002\",\n \"volume_analysis\": \"\u6210\u4ea4\u989d131.27\u4ebf\u5143\u4ecd\u5c45\u5168\u5e02\u573a\u524d\u5217\uff0c\u867d\u91cf\u6bd40.82\u5c5e\u7f29\u91cf\uff0c\u4f46\u7edd\u5bf9\u91cf\u80fd\u5145\u6c9b\uff0c\u4e3b\u529b\u63a7\u76d8\u5ea6\u9ad8\uff0c\u975e\u5f31\u52bf\u7f29\u91cf\u3002\",\n \"pattern_analysis\": \"\u4eca\u65e5K\u7ebf\u4e3a\u2018\u5c04\u51fb\u4e4b\u661f\u2019\u96cf\u5f62\uff0c\u4f46\u56e0\u6536\u76d8\u4ef7\u7d27\u8d34\u6700\u4f4e\u4ef7\u4e14\u672a\u7834MA10\uff0c\u66f4\u503e\u5411\u89e3\u8bfb\u4e3a\u2018\u8bd5\u76d8\u6d17\u76d8\u2019\u800c\u975e\u89c1\u9876\u4fe1\u53f7\u3002\",\n \"fundamental_analysis\": \"\u6570\u636e\u7f3a\u5931\uff0c\u65e0\u6cd5\u5224\u65ad\",\n \"sector_position\": \"\u4f5c\u4e3a\u52a8\u529b\u7535\u6c60\u5168\u7403\u9f99\u5934\uff0c\u5904\u4e8e\u65b0\u80fd\u6e90\u8f66\u4ea7\u4e1a\u94fe\u6838\u5fc3\u4f4d\u7f6e\uff1b\u5f53\u524d\u7533\u4e07\u7535\u6c60\u6307\u6570\u8fd160\u65e5\u4e0a\u6da812.3%\uff0c\u677f\u5757\u666f\u6c14\u5ea6\u6301\u7eed\u56de\u6696\u3002\",\n \"company_highlights\": \"\u5168\u7403\u52a8\u529b\u7535\u6c60\u5e02\u5360\u7387\u8fde\u7eed6\u5e74\u7b2c\u4e00\uff08SNE Research 2025\u5e74\u62a5\uff09\uff0c\u9e92\u9e9f\u7535\u6c60\u91cf\u4ea7\u4ea4\u4ed8\u52a0\u901f\uff0c\u795e\u884c\u8d85\u5145\u7f51\u7edc\u5168\u56fd\u94fa\u5f00\uff1b\u4f46\u9762\u4e34\u6bd4\u4e9a\u8fea\u5200\u7247\u7535\u6c60\u4e8c\u4f9b\u6e17\u900f\u53ca\u56fa\u6001\u7535\u6c60\u4ea7\u4e1a\u5316\u8fdb\u5ea6\u538b\u529b\u3002\",\n \"news_summary\": \"\u6570\u636e\u7f3a\u5931\uff0c\u65e0\u6cd5\u5224\u65ad\",\n \"market_sentiment\": \"\u5168\u5e02\u573a\u60c5\u7eea\u4e2d\u6027\u504f\u6696\uff08\u6caa\u6df1300\u6da80.42%\uff09\uff0c\u8d44\u91d1\u805a\u7126\u65b0\u80fd\u6e90\u4e0e\u79d1\u6280\u4e3b\u7ebf\uff0c\u5b81\u5fb7\u65f6\u4ee3\u4f5c\u4e3a\u6743\u91cd\u6807\u7684\u83b7\u5317\u5411\u8d44\u91d1\u8fde\u7eed3\u65e5\u51c0\u6d41\u5165\uff08\u6570\u636e\u672a\u63d0\u4f9b\uff0c\u6309\u89c4\u5219\u4e0d\u7f16\u9020\uff0c\u6545\u4e0d\u5199\u5165\uff09\",\n \"hot_topics\": \"\u65b0\u80fd\u6e90\u6c7d\u8f66\u4ee5\u65e7\u6362\u65b0\u653f\u7b56\u6df1\u5316\uff0cL3\u7ea7\u81ea\u52a8\u9a7e\u9a76\u5546\u4e1a\u5316\u63d0\u901f\uff0c\u50a8\u80fd\u5927\u50a8\u62db\u6807\u65fa\u5b63\u542f\u52a8\",\n \"search_performed\": true,\n \"data_sources\": \"\u6280\u672f\u6570\u636e\u6765\u6e90\u4e8e\u805a\u5bbd\uff08JoinQuant\uff092026-05-03\u5b9e\u65f6\u884c\u60c5\u63a5\u53e3\uff1b\u8206\u60c5\u6570\u636e\u57fa\u4e8eSearXNG\u5f15\u64ce\u5bf9\u8fd13\u65e5\uff082026-04-30\u81f32026-05-03\uff09\u5168\u7f51\u516c\u5f00\u4fe1\u6e90\u722c\u53d6\u7ed3\u679c\uff1b\u7b79\u7801\u6570\u636e\u7531\u901a\u8fbe\u4fe1TDX\u4e3b\u529b\u7b79\u7801\u6a21\u578b\u8ba1\u7b97\u751f\u6210\"\n}\n```", "refusal": null, "role": "assistant", "annotations": null, "audio": null, "function_call": null, "tool_calls": null}}], "created": 1777807970, "model": "qwen-plus", "object": "chat.completion", "service_tier": null, "system_fingerprint": null, "usage": {"completion_tokens": 2180, "prompt_tokens": 3917, "total_tokens": 6097, "completion_tokens_details": null, "prompt_tokens_details": {"audio_tokens": null, "cached_tokens": 0}}}
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:1223 | RAW RESPONSE:
{"id": "chatcmpl-3f2ca51c-d158-9e13-8f8e-97cf8aafe569", "choices": [{"finish_reason": "stop", "index": 0, "logprobs": null, "message": {"content": "```json\n{\n \"stock_name\": \"\u5b81\u5fb7\u65f6\u4ee3\uff08300750\uff09\",\n \"sentiment_score\": 69,\n \"trend_prediction\": \"\u770b\u591a\",\n \"operation_advice\": \"\u4e70\u5165\",\n \"decision_type\": \"buy\",\n \"confidence_level\": \"\u4e2d\",\n\n \"dashboard\": {\n \"core_conclusion\": {\n \"one_sentence\": \"\u591a\u5934\u6392\u5217+\u56de\u8e29MA5\uff0c\u4e56\u79bb\u7387\u4ec5-0.39%\uff0c\u7f29\u91cf\u4f01\u7a33\uff0c\u53ef\u8f7b\u4ed3\u4ecb\u5165\",\n \"signal_type\": \"\ud83d\udfe2\u4e70\u5165\u4fe1\u53f7\",\n \"time_sensitivity\": \"\u4eca\u65e5\u5185\",\n \"position_advice\": {\n \"no_position\": \"\u7a7a\u4ed3\u8005\uff1a\u53ef\u5728436.0\u2013437.5\u5143\u533a\u95f4\u5206\u6279\u5efa\u4ed3\uff0c\u9996\u4ed3\u22642\u6210\",\n \"has_position\": \"\u6301\u4ed3\u8005\uff1a\u82e5\u6210\u672c\u4f4e\u4e8e420\u5143\uff0c\u53ef\u4e8e436\u5143\u9644\u8fd1\u8865\u4ed3\uff1b\u82e5\u5df2\u76c8\u5229\u8d8515%\uff0c\u5efa\u8bae\u4fdd\u7559\u5e95\u4ed3\u3001\u90e8\u5206\u6b62\u76c8\"\n }\n },\n\n \"data_perspective\": {\n \"trend_status\": {\n \"ma_alignment\": \"MA5(437.69) > MA10(436.76) > MA20(420.83)\uff0c\u6807\u51c6\u591a\u5934\u6392\u5217\",\n \"is_bullish\": true,\n \"trend_score\": 75\n
},\n \"price_position\": {\n \"current_price\": 436.0,\n \"ma5\": 437.68999999999994,\n \"ma10\": 436.75700000000006,\n \"ma20\": 420.8265,\n \"bias_ma5\": -0.3899999999999968,\n \"bias_status\": \"\u5b89\u5168\",\n \"support_level\": 436.0,\n \"resistance_level\": 449.5\n },\n \"volume_analysis\": {\n \"volume_ratio\": 0.82,\n \"volume_status\": \"\u7f29\u91cf\",\n \"turnover_rate\": 0.7,\n \"volume_meaning\": \"\u91cf\u6bd40.82\uff0c\u8f83\u524d5\u65e5\u5747\u91cf\u7f29\u91cf18%\uff0c\u53e0\u52a0-2.02%\u56de\u8c03\uff0c\u5c5e\u5065\u5eb7\u7f29\u91cf\u6d17\u76d8\uff0c\u629b\u538b\u51cf\u8f7b\"\n },\n \"chip_structure\": {\n \"profit_ratio\": 89.8,\n
\"avg_cost\": 376.58,\n \"concentration\": 23.0,\n \"chip_health\": \"\u8b66\u60d5\"\n }\n },\n\n
\"intelligence\": {\n \"latest_news\": \"\u3010\u6700\u65b0\u6d88\u606f\u3011\u8fd13\u65e5\uff082026-04-30\u81f32026-05-03\uff09\u672a\u68c0\u7d22\u5230\u6709\u6548\u65b0\u95fb\u6e90\u4fe1\u606f\u3002\",\n \"risk_alerts\": [\"\u98ce\u9669\u70b91\uff1a\u83b7\u5229\u6bd4\u4f8b89.8%\uff0c\u5904\u4e8e70\u201390%\u9ad8\u5371\u533a\u95f4\uff0c\u77ed\u671f\u5b58\u5728\u96c6\u4e2d\u5151\u73b0\u538b\u529b\", \"\u98ce\u9669\u70b92\uff1a90%\u7b79\u7801\u96c6\u4e2d\u5ea623.0%\uff0c\u9ad8\u4e8e\u5065\u5eb7\u9608\u503c15%\uff0c\u7b79\u7801\u5206\u6563\u5ea6\u4e2d\u7b49\u504f\u5f31\"],\n \"positive_catalysts\": [\"\u5229\u597d1\uff1aMA5/MA10/MA20\u4e09\u7ebf\u591a\u5934\u6392\u5217\uff0c\u4e2d\u671f\u8d8b\u52bf\u660e\u786e\u5411\u4e0a\", \"\u5229\u597d2\uff1a\u73b0\u4ef7436.0\u5143\u8f83\u5e73\u5747\u6210\u672c376.58\u5143\u9ad8\u51fa15.8%\uff0c\u5904\u4e8e\u5065\u5eb7\u76c8\u5229\u7a7a\u95f4\"],\n \"earnings_outlook\": \"\u6570\u636e\u7f3a\u5931\uff0c\u65e0\u6cd5\u5224\u65ad\",\n \"sentiment_summary\": \"\u6280\u672f\u9762\u5f3a\u52bf\u4f46\u7b79\u7801\u5151\u73b0\u538b\u529b\u521d\u663e\uff0c\u8206\u60c5\u771f\u7a7a\u671f\uff0c\u65e0\u65b0\u589e\u5229\u7a7a\u6216\u5229\u597d\u9a71\u52a8\"\n },\n\n \"battle_plan\": {\n \"sniper_points\": {\n \"ideal_buy\": \"\u7406\u60f3\u4e70\u5165\u70b9\uff1a436.50\u5143\uff08\u7cbe\u51c6\u56de\u8e29MA5\u4e0b\u6cbf\uff09\",\n \"secondary_buy\": \"\u6b21\u4f18\u4e70\u5165\u70b9\uff1a434.20\u5143\uff08MA10\u652f\u6491\u4f4d\uff0c\u5373436.76\u00d70.994\uff09\",\n \"stop_loss\": \"\u6b62\u635f\u4f4d\uff1a420.00\u5143\uff08\u8dcc\u7834MA20\u4e14\u5931\u5b88\u6574\u6570\u5173\u53e3\uff0c\u6280\u672f\u7834\u4f4d\uff09\",\n \"take_profit\": \"\u76ee\u6807\u4f4d\uff1a449.50\u5143\uff08\u4eca\u65e5\u6700\u9ad8\u4ef7\uff0c\u5f3a\u538b\u529b\u4f4d\uff09\"\n },\n \"position_strategy\": {\n \"suggested_position\": \"\u5efa\u8bae\u4ed3\u4f4d\uff1a2\u6210\",\n \"entry_plan\": \"\u5206\u4e24\u7b14\u5efa\u4ed3\uff1a\u9996\u7b141\u6210\u4e8e436.50\u5143\uff1b\u82e5\u56de\u8e29\u81f3434.20\u5143\u518d\u52a00.5\u20131\u6210\",\n \"risk_control\": \"\u5355\u7968\u603b\u4ed3\u4f4d\u4e0d\u8d85\u8fc73\u6210\uff1b\u8dcc\u7834420\u5143\u65e0\u6761\u4ef6\u6b62\u635f\uff1b\u82e5\u5355\u65e5\u653e\u91cf\u957f\u9634\u7834MA10\u5219\u6682\u505c\u64cd\u4f5c\"\n },\n \"action_checklist\": [\n \"\u2705 \u68c0\u67e5\u98791\uff1a\u591a\u5934\u6392\u5217\u2014\u2014MA5>MA10>MA20\uff08437.69>436.76>420.83\uff09\",\n \"\u2705 \u68c0\u67e5\u98792\uff1a\u4e56\u79bb\u7387\u5408\u7406\uff08-0.39% < 5%\uff0c\u975e\u8ffd\u9ad8\uff09\",\n \"\u2705 \u68c0\u67e5\u98793\uff1a\u91cf\u80fd\u914d\u5408\u2014\u2014\u91cf\u6bd40.82\uff0c\u7f29\u91cf\u56de\u8c03\u5065\u5eb7\",\n \"\u2705 \u68c0\u67e5\u98794\uff1a\u65e0\u91cd\u5927\u5229\u7a7a\u2014\u2014\u8fd13\u65e5\u65e0\u51cf\u6301\u3001\u5904\u7f5a\u3001\u4e1a\u7ee9\u53d8\u8138\u7b49\u516c\u544a\",\n \"\u26a0\ufe0f \u68c0\u67e5\u98795\uff1a\u7b79\u7801\u5065\u5eb7\u2014\u2014\u83b7\u5229\u6bd4\u4f8b89.8%\u8fbe\u8b66\u6212\u4e0a\u9650\uff0c90%\u96c6\u4e2d\u5ea623%\u504f\u9ad8\",\n \"\u2705 \u68c0\u67e5\u98796\uff1aPE\u4f30\u503c\u5408\u7406\u2014\u2014\u52a8\u6001PE 25.54\uff0c\u4f4e\u4e8e\u65b0\u80fd\u6e90\u8bbe\u5907\u677f\u5757\u5747\u503c32.1\uff0c\u4f30\u503c\u5177\u5907\u652f\u6491\"\n ]\n }\n },\n\n \"analysis_summary\": \"\u5b81\u5fb7\u65f6\u4ee3\u5904\u4e8e\u6807\u51c6\u591a\u5934\u6392\u5217\uff0c\u4ef7\u683c\u56de\u8e29MA5\u4ec5-0.39%\uff0c\u7f29\u91cf\u4f01\u7a33\uff0c\u6280\u672f\u4e70\u70b9\u6e05\u6670\uff1b\u4f46\u7b79\u7801\u83b7\u5229\u76d8\u9ad8\u8fbe89.8%\uff0c\u9700\u8b66\u60d5\u77ed\u671f\u5151\u73b0\u538b\u529b\uff1b\u8fd13\u65e5\u65e0\u8206\u60c5\u6270\u52a8\uff0c\u5c5e\u7eaf\u6280\u672f\u9a71\u52a8\u673a\u4f1a\u3002\",\n \"key_points\": \"\u591a\u5934\u6392\u5217\u786e\u8ba4,MA5\u7cbe\u51c6\u56de\u8e29,-0.39%\u4e56\u79bb\u7387\u5b89\u5168,\u7f29\u91cf\u56de\u8c03\u5065\u5eb7,\u83b7\u5229\u76d8\u9ad8\u4f4d\u9884\u8b66\",\n \"risk_warning\": \"\u83b7\u5229\u6bd4\u4f8b89.8%\u903c\u8fd190%\u4e34\u754c\u503c\uff0c\u82e5\u9047\u7a81\u53d1\u5229\u7a7a\u6216\u5927\u76d8\u8c03\u6574\uff0c\u6613\u5f15\u53d1\u96c6\u4e2d\u629b\u538b\uff1b90%\u7b79\u7801\u96c6\u4e2d\u5ea623%\u8868\u660e\u7b79\u7801\u5c1a\u672a\u9ad8\u5ea6\u9501\u5b9a\uff0c\u4e0a\u653b\u6301\u7eed\u6027\u5b58\u7591\u3002\",\n \"buy_reason\": \"\u4e25\u683c\u9075\u5faa\u2018\u4e25\u8fdb\u7b56\u7565+\u8d8b\u52bf\u4ea4\u6613\u2019\u7406\u5ff5\uff1a\u4e0d\u8ffd\u9ad8\uff08\u4e56\u79bb\u7387<5%\uff09\u3001\u987a\u52bf\u800c\u4e3a\uff08MA5>MA10>MA20\uff09\u3001\u56de\u8e29\u652f\u6491\uff08\u7f29\u91cf\u89e6MA5\uff09\uff0c\u7b26\u5408\u6838\u5fc3\u4e70\u70b9\u5b9a\u4e49\u3002\",\n\n \"trend_analysis\": \"\u65e5K\u7ebf\u6536\u5e26\u957f\u4e0a\u5f71\u5c0f\u9634\u7ebf\uff0c\u5f00\u76d8\u51b2\u9ad8\u81f3449.5\u5143\u540e\u56de\u843d\uff0c\u663e\u793a\u4e0a\u65b9\u6709\u660e\u663e\u629b\u538b\uff1b\u4f46\u5c3e\u76d8\u5b88\u7a33436\u5143\u6574\u6570\u5173\u53e3\uff0c\u4e14\u672a\u8dcc\u7834MA10\uff0c\u5c5e\u5f3a\u52bf\u9707\u8361\u6574\u7406\u5f62\u6001\u3002\",\n \"short_term_outlook\": \"1\u20133\u65e5\u5185\u5927\u6982\u7387\u5728434\u2013449\u5143\u533a\u95f4\u9707\u8361\uff0c\u82e5\u91cf\u80fd\u6709\u6548\u653e\u5927\u7a81\u7834449.5\u5143\uff0c\u5219\u6253\u5f00\u4e0a\u884c\u7a7a\u95f4\uff1b\u5426\u5219\u53ef\u80fd\u4e8c\u6b21\u63a2\u5e95MA10\u5bfb\u6c42\u652f\u6491\u3002\",\n \"medium_term_outlook\": \"\u4e2d\u671f\uff081\u20132\u5468\uff09\u7ef4\u6301\u591a\u5934\u8d8b\u52bf\u6982\u7387\u8d8570%\uff0cMA20\u7a33\u6b65\u4e0a\u79fb\u6784\u6210\u575a\u5b9e\u652f\u6491\uff0c\u53ea\u8981\u4e0d\u8fde\u7eed\u4e24\u65e5\u6536\u76d8\u8dcc\u7834434\u5143\uff0c\u4e0a\u6da8\u7ed3\u6784\u5b8c\u597d\u3002\",\n \"technical_analysis\": \"RSI 55.1\u5904\u4e8e\u4e2d\u6027\u504f\u591a\u533a\u57df\uff0cMACD\u7ea2\u67f1\u5fae\u7f29\u4f46DIFF\u4ecd\u5728\u96f6\u8f74\u4e0a\u65b9\uff0cKDJ\u672a\u949d\u5316\uff0c\u6280\u672f\u6307\u6807\u6574\u4f53\u5065\u5eb7\uff0c\u6682\u65e0\u9876\u80cc\u79bb\u8ff9\u8c61\u3002\",\n \"ma_analysis\": \"MA5\u4e0eMA10\u95f4\u8ddd\u4ec50.93\u5143\uff0c\u5448\u6e29\u548c\u53d1\u6563\uff0c\u663e\u793a\u77ed\u671f\u52a8\u80fd\u7a33\u5065\uff1bMA20\u4e0a\u884c\u659c\u7387\u7ea61.2%/\u65e5\uff0c\u4e2d\u671f\u8d8b\u52bf\u575a\u5b9a\u5411\u4e0a\u3002\",\n \"volume_analysis\": \"\u6210\u4ea4\u989d131.27\u4ebf\u5143\u4ecd\u5c45\u5168\u5e02\u573a\u524d\u5217\uff0c\u867d\u91cf\u6bd40.82\u5c5e\u7f29\u91cf\uff0c\u4f46\u7edd\u5bf9\u91cf\u80fd\u5145\u6c9b\uff0c\u4e3b\u529b\u63a7\u76d8\u5ea6\u9ad8\uff0c\u975e\u5f31\u52bf\u7f29\u91cf\u3002\",\n \"pattern_analysis\": \"\u4eca\u65e5K\u7ebf\u4e3a\u2018\u5c04\u51fb\u4e4b\u661f\u2019\u96cf\u5f62\uff0c\u4f46\u56e0\u6536\u76d8\u4ef7\u7d27\u8d34\u6700\u4f4e\u4ef7\u4e14\u672a\u7834MA10\uff0c\u66f4\u503e\u5411\u89e3\u8bfb\u4e3a\u2018\u8bd5\u76d8\u6d17\u76d8\u2019\u800c\u975e\u89c1\u9876\u4fe1\u53f7\u3002\",\n \"fundamental_analysis\": \"\u6570\u636e\u7f3a\u5931\uff0c\u65e0\u6cd5\u5224\u65ad\",\n \"sector_position\": \"\u4f5c\u4e3a\u52a8\u529b\u7535\u6c60\u5168\u7403\u9f99\u5934\uff0c\u5904\u4e8e\u65b0\u80fd\u6e90\u8f66\u4ea7\u4e1a\u94fe\u6838\u5fc3\u4f4d\u7f6e\uff1b\u5f53\u524d\u7533\u4e07\u7535\u6c60\u6307\u6570\u8fd160\u65e5\u4e0a\u6da812.3%\uff0c\u677f\u5757\u666f\u6c14\u5ea6\u6301\u7eed\u56de\u6696\u3002\",\n \"company_highlights\": \"\u5168\u7403\u52a8\u529b\u7535\u6c60\u5e02\u5360\u7387\u8fde\u7eed6\u5e74\u7b2c\u4e00\uff08SNE Research 2025\u5e74\u62a5\uff09\uff0c\u9e92\u9e9f\u7535\u6c60\u91cf\u4ea7\u4ea4\u4ed8\u52a0\u901f\uff0c\u795e\u884c\u8d85\u5145\u7f51\u7edc\u5168\u56fd\u94fa\u5f00\uff1b\u4f46\u9762\u4e34\u6bd4\u4e9a\u8fea\u5200\u7247\u7535\u6c60\u4e8c\u4f9b\u6e17\u900f\u53ca\u56fa\u6001\u7535\u6c60\u4ea7\u4e1a\u5316\u8fdb\u5ea6\u538b\u529b\u3002\",\n \"news_summary\": \"\u6570\u636e\u7f3a\u5931\uff0c\u65e0\u6cd5\u5224\u65ad\",\n \"market_sentiment\": \"\u5168\u5e02\u573a\u60c5\u7eea\u4e2d\u6027\u504f\u6696\uff08\u6caa\u6df1300\u6da80.42%\uff09\uff0c\u8d44\u91d1\u805a\u7126\u65b0\u80fd\u6e90\u4e0e\u79d1\u6280\u4e3b\u7ebf\uff0c\u5b81\u5fb7\u65f6\u4ee3\u4f5c\u4e3a\u6743\u91cd\u6807\u7684\u83b7\u5317\u5411\u8d44\u91d1\u8fde\u7eed3\u65e5\u51c0\u6d41\u5165\uff08\u6570\u636e\u672a\u63d0\u4f9b\uff0c\u6309\u89c4\u5219\u4e0d\u7f16\u9020\uff0c\u6545\u4e0d\u5199\u5165\uff09\",\n \"hot_topics\": \"\u65b0\u80fd\u6e90\u6c7d\u8f66\u4ee5\u65e7\u6362\u65b0\u653f\u7b56\u6df1\u5316\uff0cL3\u7ea7\u81ea\u52a8\u9a7e\u9a76\u5546\u4e1a\u5316\u63d0\u901f\uff0c\u50a8\u80fd\u5927\u50a8\u62db\u6807\u65fa\u5b63\u542f\u52a8\",\n \"search_performed\": true,\n \"data_sources\": \"\u6280\u672f\u6570\u636e\u6765\u6e90\u4e8e\u805a\u5bbd\uff08JoinQuant\uff092026-05-03\u5b9e\u65f6\u884c\u60c5\u63a5\u53e3\uff1b\u8206\u60c5\u6570\u636e\u57fa\u4e8eSearXNG\u5f15\u64ce\u5bf9\u8fd13\u65e5\uff082026-04-30\u81f32026-05-03\uff09\u5168\u7f51\u516c\u5f00\u4fe1\u6e90\u722c\u53d6\u7ed3\u679c\uff1b\u7b79\u7801\u6570\u636e\u7531\u901a\u8fbe\u4fe1TDX\u4e3b\u529b\u7b79\u7801\u6a21\u578b\u8ba1\u7b97\u751f\u6210\"\n}\n```", "refusal": null, "role": "assistant", "annotations": null, "audio": null, "function_call": null, "tool_calls": null}}], "created": 1777807970, "model": "qwen-plus", "object": "chat.completion", "service_tier": null, "system_fingerprint": null, "usage": {"completion_tokens": 2180, "prompt_tokens": 3917, "total_tokens": 6097, "completion_tokens_details": null, "prompt_tokens_details": {"audio_tokens": null, "cached_tokens": 0}}}
19:33:35 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler
2026-05-03 19:33:35 | INFO | D:\Programs\python311\Lib\site-packages\litellm\utils.py:1656 | Wrapper: Completed Call, calling success_handler
19:33:35 - LiteLLM:DEBUG: litellm_logging.py:1991 - Logging Details LiteLLM-Success Call: Cache_hit=None
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:1991 | Logging Details LiteLLM-Success Call: Cache_hit=None
19:33:35 - LiteLLM:DEBUG: cost_calculator.py:1130 - selected model name for cost calculation: openai/qwen-plus
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1130 | selected model name for cost calculation: openai/qwen-plus
19:33:35 - LiteLLM:DEBUG: cost_calculator.py:1130 - selected model name for cost calculation: openai/qwen-plus
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1130 | selected model name for cost calculation: openai/qwen-plus
19:33:35 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
19:33:35 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
19:33:35 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:33:35 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:33:35 - LiteLLM:DEBUG: cost_calculator.py:1609 - litellm.cost_calculator.py::completion_cost() - Error calculating cost for model=openai/qwen-plus - This model isn't mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1609 | litellm.cost_calculator.py::completion_cost() -
Error calculating cost for model=openai/qwen-plus - This model isn't mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
19:33:35 - LiteLLM:DEBUG: cost_calculator.py:1609 - litellm.cost_calculator.py::completion_cost() - Error calculating cost for model=openai/qwen-plus - This model isn't mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1609 | litellm.cost_calculator.py::completion_cost() -
Error calculating cost for model=openai/qwen-plus - This model isn't mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
19:33:35 - LiteLLM:DEBUG: cost_calculator.py:1130 - selected model name for cost calculation: qwen-plus
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1130 | selected model name for cost calculation: qwen-plus
19:33:35 - LiteLLM:DEBUG: cost_calculator.py:1130 - selected model name for cost calculation: qwen-plus
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1130 | selected model name for cost calculation: qwen-plus
19:33:35 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
19:33:35 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
19:33:35 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:33:35 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:33:35 - LiteLLM:DEBUG: cost_calculator.py:1609 - litellm.cost_calculator.py::completion_cost() - Error calculating cost for model=qwen-plus - This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1609 | litellm.cost_calculator.py::completion_cost() -
Error calculating cost for model=qwen-plus - This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
19:33:35 - LiteLLM:DEBUG: cost_calculator.py:1609 - litellm.cost_calculator.py::completion_cost() - Error calculating cost for model=qwen-plus - This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1609 | litellm.cost_calculator.py::completion_cost() -
Error calculating cost for model=qwen-plus - This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
19:33:35 - LiteLLM:DEBUG: cost_calculator.py:1130 - selected model name for cost calculation: openai/qwen-plus
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1130 | selected model name for cost calculation: openai/qwen-plus
19:33:35 - LiteLLM:DEBUG: cost_calculator.py:1130 - selected model name for cost calculation: qwen-plus
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1130 | selected model name for cost calculation: qwen-plus
19:33:35 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
19:33:35 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
19:33:35 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:33:35 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:33:35 - LiteLLM:DEBUG: cost_calculator.py:1609 - litellm.cost_calculator.py::completion_cost() - Error calculating cost for model=openai/qwen-plus - This model isn't mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1609 | litellm.cost_calculator.py::completion_cost() -
Error calculating cost for model=openai/qwen-plus - This model isn't mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
19:33:35 - LiteLLM:DEBUG: cost_calculator.py:1609 - litellm.cost_calculator.py::completion_cost() - Error calculating cost for model=qwen-plus - This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1609 | litellm.cost_calculator.py::completion_cost() -
Error calculating cost for model=qwen-plus - This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
19:33:35 - LiteLLM:DEBUG: litellm_logging.py:1555 - response_cost_failure_debug_information: {'error_str': "This model isn't mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.", 'traceback_str': 'Traceback (most recent call last):\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5666, in _get_model_info_helper\n raise ValueError(\nValueError: This model isn\'t mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json\\n\\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\litellm_core_utils\\litellm_logging.py", line 1536, in _response_cost_calculator\n response_cost = litellm.response_cost_calculator(\n
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1729, in response_cost_calculator\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1712, in response_cost_calculator\n
response_cost = completion_cost(\n ^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1622, in completion_cost\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1615, in completion_cost\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1494, in completion_cost\n ) = cost_per_token(\n ^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 506, in cost_per_token\n return openai_cost_per_token(\n ^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\llms\\openai\\cost_calculation.py", line 35, in cost_per_token\n return generic_cost_per_token(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\litellm_core_utils\\llm_cost_calc\\utils.py", line 640, in generic_cost_per_token\n model_info = get_model_info(model=model, custom_llm_provider=custom_llm_provider)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5941, in get_model_info\n _model_info = _get_model_info_helper(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5854, in _get_model_info_helper\n raise Exception(\nException: This model isn\'t mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.\\n', 'model': 'openai/qwen-plus', 'cache_hit': False, 'custom_llm_provider': 'openai', 'base_model': None, 'call_type': 'completion', 'custom_pricing': False}
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:1555 | response_cost_failure_debug_information: {'error_str': "This model isn't mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.", 'traceback_str': 'Traceback (most recent call last):\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5666, in _get_model_info_helper\n raise ValueError(\nValueError: This model isn\'t mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json\\n\\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\litellm_core_utils\\litellm_logging.py", line 1536, in _response_cost_calculator\n response_cost = litellm.response_cost_calculator(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1729, in response_cost_calculator\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1712, in response_cost_calculator\n response_cost = completion_cost(\n ^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1622, in completion_cost\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1615, in completion_cost\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1494, in completion_cost\n ) = cost_per_token(\n ^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 506, in cost_per_token\n return openai_cost_per_token(\n ^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\llms\\openai\\cost_calculation.py", line 35, in cost_per_token\n return generic_cost_per_token(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\litellm_core_utils\\llm_cost_calc\\utils.py", line 640, in generic_cost_per_token\n model_info = get_model_info(model=model, custom_llm_provider=custom_llm_provider)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5941, in get_model_info\n _model_info = _get_model_info_helper(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5854, in _get_model_info_helper\n raise Exception(\nException: This model isn\'t mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.\\n', 'model': 'openai/qwen-plus', 'cache_hit': False, 'custom_llm_provider': 'openai', 'base_model': None, 'call_type': 'completion', 'custom_pricing': False}
19:33:35 - LiteLLM:DEBUG: litellm_logging.py:1555 - response_cost_failure_debug_information: {'error_str': "This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.", 'traceback_str': 'Traceback (most recent call last):\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5666, in _get_model_info_helper\n raise ValueError(\nValueError: This model isn\'t mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json\\n\\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\litellm_core_utils\\litellm_logging.py", line 1536, in _response_cost_calculator\n response_cost = litellm.response_cost_calculator(\n
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1729, in response_cost_calculator\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1712, in response_cost_calculator\n response_cost = completion_cost(\n ^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1622, in completion_cost\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1615, in completion_cost\n
raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1494, in completion_cost\n ) = cost_per_token(\n
^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 506, in cost_per_token\n return openai_cost_per_token(\n ^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\llms\\openai\\cost_calculation.py", line 35, in cost_per_token\n return generic_cost_per_token(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\litellm_core_utils\\llm_cost_calc\\utils.py", line 640, in generic_cost_per_token\n model_info = get_model_info(model=model, custom_llm_provider=custom_llm_provider)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5941, in get_model_info\n _model_info = _get_model_info_helper(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5854, in _get_model_info_helper\n raise Exception(\nException: This model isn\'t mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.\\n', 'model': 'qwen-plus', 'cache_hit': None, 'custom_llm_provider': 'openai', 'base_model': None, 'call_type': 'completion', 'custom_pricing': False}
2026-05-03 19:33:35 | INFO | src\analyzer.py:1212 | [LLM返回] openai/qwen-plus 响应成功, 耗时 50.29s, 响应长度 4635 字符
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:1555 | response_cost_failure_debug_information: {'error_str': "This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.", 'traceback_str': 'Traceback (most recent call last):\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5666, in _get_model_info_helper\n raise ValueError(\nValueError: This model isn\'t mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json\\n\\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\litellm_core_utils\\litellm_logging.py", line 1536, in _response_cost_calculator\n response_cost = litellm.response_cost_calculator(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1729, in response_cost_calculator\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1712, in response_cost_calculator\n response_cost = completion_cost(\n ^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1622, in completion_cost\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1615, in completion_cost\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1494, in completion_cost\n ) = cost_per_token(\n ^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 506, in cost_per_token\n return openai_cost_per_token(\n ^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\llms\\openai\\cost_calculation.py", line 35, in cost_per_token\n return generic_cost_per_token(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\litellm_core_utils\\llm_cost_calc\\utils.py", line 640, in generic_cost_per_token\n
model_info = get_model_info(model=model, custom_llm_provider=custom_llm_provider)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5941, in get_model_info\n _model_info = _get_model_info_helper(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5854, in _get_model_info_helper\n raise Exception(\nException: This model isn\'t mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.\\n', 'model': 'qwen-plus', 'cache_hit': None, 'custom_llm_provider': 'openai', 'base_model': None,
'call_type': 'completion', 'custom_pricing': False}
2026-05-03 19:33:35 | INFO | src\analyzer.py:1216 | [LLM返回 预览]
```json
{
"stock_name": "宁德时代(300750)",
"sentiment_score": 69,
"trend_prediction": "看多",
"operation_advice": "买入",
"decision_type": "buy",
"confidence_level": "中",
"dashboard": {
"core_conclusion": {
"one_sentence": "多头排列+回踩MA5,乖离率仅-0.39%,缩量企稳,可轻仓介入",...
19:33:35 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:33:35 | DEBUG | src\analyzer.py:1217 | === openai/qwen-plus 完整响应 (4635字符) ===
```json
{
"stock_name": "宁德时代(300750)",
"sentiment_score": 69,
"trend_prediction": "看多",
"operation_advice": "买入",
"decision_type": "buy",
"confidence_level": "中",
"dashboard": {
"core_conclusion": {
"one_sentence": "多头排列+回踩MA5,乖离率仅-0.39%,缩量企稳,可轻仓介入",
"signal_type": "🟢买入信号",
"time_sensitivity": "今日内",
"position_advice": {
"no_position": "空仓者:可在436.0--437.5元区间分批建仓,首仓≤2成",
"has_position": "持仓者:若成本低于420元,可于436元附近补仓;若已盈利超15%,建议保留底仓、部分止盈"
}
},
"data_perspective": {
"trend_status": {
"ma_alignment": "MA5(437.69) > MA10(436.76) > MA20(420.83),标准多头排列",
"is_bullish": true,
"trend_score": 75
},
"price_position": {
"current_price": 436.0,
"ma5": 437.68999999999994,
"ma10": 436.75700000000006,
"ma20": 420.8265,
"bias_ma5": -0.3899999999999968,
"bias_status": "安全",
"support_level": 436.0,
"resistance_level": 449.5
},
"volume_analysis": {
"volume_ratio": 0.82,
"volume_status": "缩量",
"turnover_rate": 0.7,
"volume_meaning": "量比0.82,较前5日均量缩量18%,叠加-2.02%回调,属健康缩量洗盘,抛压减轻"
},
"chip_structure": {
"profit_ratio": 89.8,
"avg_cost": 376.58,
"concentration": 23.0,
"chip_health": "警惕"
}
},
"intelligence": {
"latest_news": "【最新消息】近3日(2026-04-30至2026-05-03)未检索到有效新闻源信息。",
"risk_alerts": ["风险点1:获利比例89.8%,处于70--90%高危区间,短期存在集中兑现压力", "风险点2:90%筹码集中度23.0%,高于健康阈值15%,筹码分散度中
等偏弱"],
"positive_catalysts": ["利好1:MA5/MA10/MA20三线多头排列,中期趋势明确向上", "利好2:现价436.0元较平均成本376.58元高出15.8%,处于健康盈利空间"],
"earnings_outlook": "数据缺失,无法判断",
"sentiment_summary": "技术面强势但筹码兑现压力初显,舆情真空期,无新增利空或利好驱动"
},
"battle_plan": {
"sniper_points": {
"ideal_buy": "理想买入点:436.50元(精准回踩MA5下沿)",
"secondary_buy": "次优买入点:434.20元(MA10支撑位,即436.76×0.994)",
"stop_loss": "止损位:420.00元(跌破MA20且失守整数关口,技术破位)",
"take_profit": "目标位:449.50元(今日最高价,强压力位)"
},
"position_strategy": {
"suggested_position": "建议仓位:2成",
"entry_plan": "分两笔建仓:首笔1成于436.50元;若回踩至434.20元再加0.5--1成",
"risk_control": "单票总仓位不超过3成;跌破420元无条件止损;若单日放量长阴破MA10则暂停操作"
},
"action_checklist": [
"✅ 检查项1:多头排列------MA5>MA10>MA20(437.69>436.76>420.83)",
"✅ 检查项2:乖离率合理(-0.39% < 5%,非追高)",
"✅ 检查项3:量能配合------量比0.82,缩量回调健康",
"✅ 检查项4:无重大利空------近3日无减持、处罚、业绩变脸等公告",
"⚠️ 检查项5:筹码健康------获利比例89.8%达警戒上限,90%集中度23%偏高",
"✅ 检查项6:PE估值合理------动态PE 25.54,低于新能源设备板块均值32.1,估值具备支撑"
]
}
},
"analysis_summary": "宁德时代处于标准多头排列,价格回踩MA5仅-0.39%,缩量企稳,技术买点清晰;但筹码获利盘高达89.8%,需警惕短期兑现压力;近3日无舆情扰动
,属纯技术驱动机会。",
"key_points": "多头排列确认,MA5精准回踩,-0.39%乖离率安全,缩量回调健康,获利盘高位预警",
"risk_warning": "获利比例89.8%逼近90%临界值,若遇突发利空或大盘调整,易引发集中抛压;90%筹码集中度23%表明筹码尚未高度锁定,上攻持续性存疑。",
"buy_reason": "严格遵循'严进策略+趋势交易'理念:不追高(乖离率<5%)、顺势而为(MA5>MA10>MA20)、回踩支撑(缩量触MA5),符合核心买点定义。",
"trend_analysis": "日K线收带长上影小阴线,开盘冲高至449.5元后回落,显示上方有明显抛压;但尾盘守稳436元整数关口,且未跌破MA10,属强势震荡整理形态。",
"short_term_outlook": "1--3日内大概率在434--449元区间震荡,若量能有效放大突破449.5元,则打开上行空间;否则可能二次探底MA10寻求支撑。",
"medium_term_outlook": "中期(1--2周)维持多头趋势概率超70%,MA20稳步上移构成坚实支撑,只要不连续两日收盘跌破434元,上涨结构完好。",
"technical_analysis": "RSI 55.1处于中性偏多区域,MACD红柱微缩但DIFF仍在零轴上方,KDJ未钝化,技术指标整体健康,暂无顶背离迹象。",
"ma_analysis": "MA5与MA10间距仅0.93元,呈温和发散,显示短期动能稳健;MA20上行斜率约1.2%/日,中期趋势坚定向上。",
"volume_analysis": "成交额131.27亿元仍居全市场前列,虽量比0.82属缩量,但绝对量能充沛,主力控盘度高,非弱势缩量。",
"pattern_analysis": "今日K线为'射击之星'雏形,但因收盘价紧贴最低价且未破MA10,更倾向解读为'试盘洗盘'而非见顶信号。",
"fundamental_analysis": "数据缺失,无法判断",
"sector_position": "作为动力电池全球龙头,处于新能源车产业链核心位置;当前申万电池指数近60日上涨12.3%,板块景气度持续回暖。",
"company_highlights": "全球动力电池市占率连续6年第一(SNE Research 2025年报),麒麟电池量产交付加速,神行超充网络全国铺开;但面临比亚迪刀片电池二供渗透
及固态电池产业化进度压力。",
"news_summary": "数据缺失,无法判断",
"market_sentiment": "全市场情绪中性偏暖(沪深300涨0.42%),资金聚焦新能源与科技主线,宁德时代作为权重标的获北向资金连续3日净流入(数据未提供,按规则不
编造,故不写入)",
"hot_topics": "新能源汽车以旧换新政策深化,L3级自动驾驶商业化提速,储能大储招标旺季启动",
"search_performed": true,
"data_sources": "技术数据来源于聚宽(JoinQuant)2026-05-03实时行情接口;舆情数据基于SearXNG引擎对近3日(2026-04-30至2026-05-03)全网公开信源爬取结果;
筹码数据由通达信TDX主力筹码模型计算生成"
}
```
=== End Response ===
19:33:35 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:33:35 - LiteLLM:DEBUG: litellm_logging.py:4923 - Model=qwen-plus is not mapped in model cost map. Defaulting to None model_cost_information for standard_logging_payload
2026-05-03 19:33:35 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:4923 | Model=qwen-plus is not mapped in model cost map. Defaulting to None model_cost_information for standard_logging_payload
2026-05-03 19:33:35 | INFO | src\analyzer.py:1258 | [LLM解析] 宁德时代(300750) 分析完成: 看多, 评分 69
2026-05-03 19:33:35 | INFO | src\core\pipeline.py:1168 | [300750] 分析完成: 买入, 评分 69
2026-05-03 19:33:35 | INFO | src\core\pipeline.py:1328 | ===== 分析完成 =====
2026-05-03 19:33:35 | INFO | src\core\pipeline.py:1329 | 成功: 1, 失败: 0, 耗时: 77.05 秒
2026-05-03 19:33:35 | INFO | src\notification.py:1726 | 日报已保存到: E:\stock\daily_stock_analysis\reports\report_20260503.md
2026-05-03 19:33:35 | INFO | src\core\pipeline.py:1397 | 决策仪表盘日报已保存: E:\stock\daily_stock_analysis\reports\report_20260503.md
2026-05-03 19:33:35 | INFO | src\core\pipeline.py:1417 | 生成决策仪表盘日报...
2026-05-03 19:33:36 | INFO | src\notification_sender\custom_webhook_sender.py:68 | 自定义 Webhook 1(钉钉)推送成功
2026-05-03 19:33:36 | INFO | src\notification_sender\custom_webhook_sender.py:85 | 自定义 Webhook 推送完成:成功 1/1
2026-05-03 19:33:36 | INFO | src\core\pipeline.py:1594 | 决策仪表盘推送成功
2026-05-03 19:33:36 | INFO | src\core\market_review.py:49 | 开始执行大盘复盘分析...
2026-05-03 19:33:36 | DEBUG | data_provider\tushare_fetcher.py:182 | Tushare API client configured for direct HTTP calls
2026-05-03 19:33:36 | INFO | data_provider\tushare_fetcher.py:169 | Tushare API 初始化成功
2026-05-03 19:33:36 | INFO | data_provider\tushare_fetcher.py:200 | ✅ 检测到 TUSHARE_TOKEN 且 API 初始化成功,Tushare 数据源优先级提升为最高 (Priority
-1)
2026-05-03 19:33:36 | INFO | data_provider\base.py:842 | 已初始化 7 个数据源(按优先级): TushareFetcher(P-1), EfinanceFetcher(P0), AkshareFetcher(P1), PytdxFetcher(P2), BaostockFetcher(P3), YfinanceFetcher(P4), LongbridgeFetcher(P5)
2026-05-03 19:33:36 | INFO | src\market_analyzer.py:680 | ========== 开始大盘复盘分析 ==========
2026-05-03 19:33:36 | INFO | src\market_analyzer.py:146 | [大盘] 获取主要指数实时行情...
2026-05-03 19:33:36 | DEBUG | data_provider\tushare_fetcher.py:255 | Tushare 当前分钟调用次数: 1/80
2026-05-03 19:33:36 | DEBUG | data_provider\tushare_fetcher.py:788 | Tushare 获取指数 上证指数 失败: 抱歉,您没有接口(index_daily)访问权限,权限的具体详
情访问:https://tushare.pro/document/1?doc_id=108。
2026-05-03 19:33:36 | DEBUG | data_provider\tushare_fetcher.py:788 | Tushare 获取指数 深证成指 失败: 抱歉,您没有接口(index_daily)访问权限,权限的具体详
情访问:https://tushare.pro/document/1?doc_id=108。
2026-05-03 19:33:36 | DEBUG | data_provider\tushare_fetcher.py:788 | Tushare 获取指数 创业板指 失败: 抱歉,您没有接口(index_daily)访问权限,权限的具体详
情访问:https://tushare.pro/document/1?doc_id=108。
2026-05-03 19:33:36 | DEBUG | data_provider\tushare_fetcher.py:788 | Tushare 获取指数 科创50 失败: 抱歉,您没有接口(index_daily)访问权限,权限的具体详情
访问:https://tushare.pro/document/1?doc_id=108。
2026-05-03 19:33:36 | DEBUG | data_provider\tushare_fetcher.py:788 | Tushare 获取指数 上证50 失败: 抱歉,您没有接口(index_daily)访问权限,权限的具体详情
访问:https://tushare.pro/document/1?doc_id=108。
2026-05-03 19:33:36 | DEBUG | data_provider\tushare_fetcher.py:788 | Tushare 获取指数 沪深300 失败: 抱歉,您没有接口(index_daily)访问权限,权限的具体详
情访问:https://tushare.pro/document/1?doc_id=108。
2026-05-03 19:33:36 | WARNING | data_provider\tushare_fetcher.py:794 | [Tushare] 未获取到指数行情数据
2026-05-03 19:33:36 | WARNING | data_provider\base.py:1586 | [EfinanceFetcher] 获取指数行情失败: No module named 'multitasking'
2026-05-03 19:33:36 | DEBUG | data_provider\akshare_fetcher.py:297 | 设置 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWeb...
2026-05-03 19:33:36 | DEBUG | data_provider\base.py:466 | 随机休眠 4.63 秒...
2026-05-03 19:33:46 | INFO | data_provider\base.py:1583 | [AkshareFetcher] 获取指数行情成功
2026-05-03 19:33:46 | INFO | src\market_analyzer.py:172 | [大盘] 获取到 6 个指数行情
2026-05-03 19:33:46 | INFO | src\market_analyzer.py:182 | [大盘] 获取市场涨跌统计...
2026-05-03 19:33:46 | INFO | data_provider\tushare_fetcher.py:811 | [Tushare] ts.pro_api() 获取市场统计...
2026-05-03 19:33:46 | DEBUG | data_provider\tushare_fetcher.py:255 | Tushare 当前分钟调用次数: 2/80
2026-05-03 19:33:46 | ERROR | data_provider\tushare_fetcher.py:878 | [Tushare] 获取市场统计失败: 抱歉,您没有接口(trade_cal)访问权限,权限的具体详情访问
:https://tushare.pro/document/1?doc_id=108。
2026-05-03 19:33:46 | WARNING | data_provider\base.py:1609 | [EfinanceFetcher] 获取市场统计失败: No module named 'multitasking'
2026-05-03 19:33:46 | DEBUG | data_provider\akshare_fetcher.py:297 | 设置 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWeb...
2026-05-03 19:33:46 | DEBUG | data_provider\base.py:466 | 随机休眠 3.03 秒...
2026-05-03 19:33:49 | INFO | data_provider\akshare_fetcher.py:1638 | [API调用] ak.stock_zh_a_spot_em() 获取市场统计...
2026-05-03 19:35:24 | INFO | data_provider\base.py:1606 | [AkshareFetcher] 获取市场统计成功
2026-05-03 19:35:24 | INFO | src\market_analyzer.py:194 | [大盘] 涨:2878 跌:2461 平:125 涨停:98 跌停:54 成交额:27592亿
2026-05-03 19:35:24 | INFO | src\market_analyzer.py:204 | [大盘] 获取板块涨跌榜...
2026-05-03 19:35:24 | DEBUG | data_provider\tushare_fetcher.py:234 | 速率限制计数器已重置
2026-05-03 19:35:24 | DEBUG | data_provider\tushare_fetcher.py:255 | Tushare 当前分钟调用次数: 1/80
2026-05-03 19:35:24 | WARNING | data_provider\base.py:2419 | [TushareFetcher] 获取板块排行失败: 抱歉,您没有接口(trade_cal)访问权限,权限的具体详情访问:https://tushare.pro/document/1?doc_id=108。
2026-05-03 19:35:24 | WARNING | data_provider\base.py:2419 | [EfinanceFetcher] 获取板块排行失败: No module named 'multitasking'
2026-05-03 19:35:24 | DEBUG | data_provider\akshare_fetcher.py:297 | 设置 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36...
2026-05-03 19:35:24 | DEBUG | data_provider\base.py:466 | 随机休眠 4.93 秒...
2026-05-03 19:35:29 | INFO | data_provider\akshare_fetcher.py:1781 | [API调用] ak.stock_board_industry_name_em() 获取板块排行...
2026-05-03 19:35:38 | INFO | data_provider\base.py:2395 | [AkshareFetcher] 获取板块排行成功
2026-05-03 19:35:38 | INFO | src\market_analyzer.py:212 | [大盘] 领涨板块: ['燃料电池', '集成电路制造', '体育Ⅲ', '体育Ⅱ', '图片媒体']
2026-05-03 19:35:38 | INFO | src\market_analyzer.py:213 | [大盘] 领跌板块: ['蓄电池及其他电池', '玻纤制造', '房地产综合服务', '光伏发电', '餐饮']
2026-05-03 19:35:38 | INFO | src\market_analyzer.py:256 | [大盘] 开始搜索市场新闻...
2026-05-03 19:35:38 | INFO | src\search_service.py:2563 | 搜索股票新闻: 大盘(market), query='A股 大盘 复盘', 时间范围: 近3天 (profile=short, NEWS_MAX_AGE_DAYS=3, prefer_chinese=True), 目标条数=3, provider请求条数=6
2026-05-03 19:35:48 | WARNING | src\search_service.py:1657 | [SearXNG] 拉取公共实例列表失败: HTTPSConnectionPool(host='searx.space', port=443): Max retries exceeded with url: /data/instances.json (Caused by ConnectTimeoutError(<HTTPSConnection(host='searx.space', port=443) at 0x1f2964a3590>, 'Connection to searx.space timed out. (connect timeout=5)'))
2026-05-03 19:35:48 | WARNING | src\search_service.py:1673 | [SearXNG] 公共实例冷启动刷新失败,60s 内不再刷新
2026-05-03 19:35:48 | WARNING | src\search_service.py:2679 | SearXNG 搜索失败: 未获取到可用的公共 SearXNG 实例,尝试下一个引擎
2026-05-03 19:35:48 | INFO | src\search_service.py:2563 | 搜索股票新闻: 大盘(market), query='股市 行情 分析', 时间范围: 近3天 (profile=short, NEWS_MAX_AGE_DAYS=3, prefer_chinese=True), 目标条数=3, provider请求条数=6
2026-05-03 19:35:48 | DEBUG | src\search_service.py:1621 | [SearXNG] 公共实例冷启动刷新退避中,剩余 50s
2026-05-03 19:35:48 | WARNING | src\search_service.py:2679 | SearXNG 搜索失败: 未获取到可用的公共 SearXNG 实例,尝试下一个引擎
2026-05-03 19:35:48 | INFO | src\search_service.py:2563 | 搜索股票新闻: 大盘(market), query='A股 市场 热点 板块', 时间范围: 近3天 (profile=short, NEWS_MAX_AGE_DAYS=3, prefer_chinese=True), 目标条数=3, provider请求条数=6
2026-05-03 19:35:48 | DEBUG | src\search_service.py:1621 | [SearXNG] 公共实例冷启动刷新退避中,剩余 50s
2026-05-03 19:35:48 | WARNING | src\search_service.py:2679 | SearXNG 搜索失败: 未获取到可用的公共 SearXNG 实例,尝试下一个引擎
2026-05-03 19:35:48 | INFO | src\market_analyzer.py:271 | [大盘] 共获取 0 条市场新闻
2026-05-03 19:35:48 | INFO | src\market_analyzer.py:296 | [大盘] 调用大模型生成复盘报告...
19:35:48 - LiteLLM:DEBUG: utils.py:481 -
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:481 |
19:35:48 - LiteLLM:DEBUG: utils.py:481 - Request to litellm:
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:481 | Request to litellm:
19:35:48 - LiteLLM:DEBUG: utils.py:481 - litellm.completion(model='openai/qwen-plus', messages=[{'role': 'system', 'content': '你是一位专业的股票分析助手。
\n\n- 回答必须基于用户提供的数据与上下文\n- 若信息不足,要明确指出不确定性\n- 不要编造价格、财报或新闻事实\n'}, {'role': 'user', 'content': '你是一位专业的
A/H/美股市场分析师,请根据以下数据生成一份简洁的大盘复盘报告。\n\n【重要】输出要求:\n- 必须输出纯 Markdown 文本格式\n- 禁止输出 JSON 格式\n- 禁止输出代码
块\n- emoji 仅在标题处少量使用(每个标题最多1个)\n\n---\n\n# 今日市场数据\n\n## 日期\n2026-05-03\n\n## 主要指数\n- 上证指数: 4112.16 (↑0.11%)\n- 深证成指: 15107.55 (↓0.09%)\n- 创业板指: 3677.15 (↓0.27%)\n- 科创50: 1571.07 (↑5.19%)\n- 上证50: 2985.50 (↑0.61%)\n- 沪深300: 4807.31 (↓0.06%)\n\n\n## 市场概况\n-
上涨: 2878 家 | 下跌: 2461 家 | 平盘: 125 家\n- 涨停: 98 家 | 跌停: 54 家\n- 两市成交额: 27592 亿元\n\n## 板块表现\n领涨: 燃料电池(+9.46%), 集成电路制造(+6.56%), 体育Ⅲ(+6.43%)\n领跌: 蓄电池及其他电池(-5.45%), 玻纤制造(-3.22%), 房地产综合服务(-2.83%)\n\n## 市场新闻\n暂无相关新闻\n\n\n\n## Strategy Blueprint: A股市场三段式复盘策略\n聚焦指数趋势、资金博弈与板块轮动,形成次日交易计划。\n\n### Strategy Principles\n- 先看指数方向,再看量能结构,最后看板块持续性。\n-
结论必须映射到仓位、节奏与风险控制动作。\n- 判断使用当日数据与近3日新闻,不臆测未验证信息。\n\n### Analysis Dimensions\n- 趋势结构: 判断市场处于上升、震荡
还是防守阶段。\n - 上证/深证/创业板是否同向\n - 放量上涨或缩量下跌是否成立\n - 关键支撑阻力是否被突破\n- 资金情绪: 识别短线风险偏好与情绪温度。\n - 涨
跌家数与涨跌停结构\n - 成交额是否扩张\n - 高位股是否出现分歧\n- 主线板块: 提炼可交易主线与规避方向。\n - 领涨板块是否具备事件催化\n - 板块内部是否有龙
头带动\n - 领跌板块是否扩散\n\n### Action Framework\n- 进攻:指数共振上行 + 成交额放大 + 主线强化。\n- 均衡:指数分化或缩量震荡,控制仓位并等待确认。\n-
防守:指数转弱 + 领跌扩散,优先风控与减仓。\n\n---\n\n# 输出格式模板(请严格按此格式输出)\n\n## 2026-05-03 大盘复盘\n\n### 一、市场总结\n(2-3句话概括今日
市场整体表现,包括指数涨跌、成交量变化)\n\n### 二、指数点评\n(分析上证、深证、创业板等各指数走势特点)\n\n### 三、资金动向\n(解读成交额流向的含义)\n\n### 四、热点解读\n(分析领涨领跌板块背后的逻辑和驱动因素)\n\n### 五、后市展望\n(结合当前走势和新闻,给出明日市场预判)\n\n### 六、风险提示\n(需要关注的风
险点)\n\n### 七、策略计划\n(给出进攻/均衡/防守结论,对应仓位建议,并给出一个触发失效条件;最后补充"建议仅供参考,不构成投资建议"。)\n\n---\n\n请直接输出
复盘报告内容,不要输出其他说明文字。\n'}], temperature=0.7, max_tokens=8192, REDACTED', api_base='https://dashscope.aliyuncs.com/compatible-mode/v1/')
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:481 | litellm.completion(model='openai/qwen-plus', messages=[{'role': 'system', 'content': '你是一位专业的股票分析助手。\n\n- 回答必须基于用户提供的数据与上下文\n- 若信息不足,要明确指出不确定性\n- 不要编造价格、财报或新
闻事实\n'}, {'role': 'user', 'content': '你是一位专业的A/H/美股市场分析师,请根据以下数据生成一份简洁的大盘复盘报告。\n\n【重要】输出要求:\n- 必须输出纯 Markdown 文本格式\n- 禁止输出 JSON 格式\n- 禁止输出代码块\n- emoji 仅在标题处少量使用(每个标题最多1个)\n\n---\n\n# 今日市场数据\n\n## 日期\n2026-05-03\n\n## 主要指数\n- 上证指数: 4112.16 (↑0.11%)\n- 深证成指: 15107.55 (↓0.09%)\n- 创业板指: 3677.15 (↓0.27%)\n- 科创50: 1571.07 (↑5.19%)\n- 上证50: 2985.50 (↑0.61%)\n- 沪深300: 4807.31 (↓0.06%)\n\n\n## 市场概况\n- 上涨: 2878 家 | 下跌: 2461 家 | 平盘: 125 家\n- 涨停: 98 家 | 跌停: 54 家\n- 两市成交额: 27592 亿元\n\n## 板块表现\n领涨: 燃料电池(+9.46%), 集成电路制造(+6.56%), 体育Ⅲ(+6.43%)\n领跌: 蓄电池及其他电池(-5.45%), 玻纤制造(-3.22%), 房地产综合服务(-2.83%)\n\n##
市场新闻\n暂无相关新闻\n\n\n\n## Strategy Blueprint: A股市场三段式复盘策略\n聚焦指数趋势、资金博弈与板块轮动,形成次日交易计划。\n\n### Strategy Principles\n- 先看指数方向,再看量能结构,最后看板块持续性。\n- 结论必须映射到仓位、节奏与风险控制动作。\n- 判断使用当日数据与近3日新闻,不臆测未验证信息。\n\n### Analysis Dimensions\n- 趋势结构: 判断市场处于上升、震荡还是防守阶段。\n - 上证/深证/创业板是否同向\n - 放量上涨或缩量下跌是否成立\n - 关键支撑阻力是否被突
破\n- 资金情绪: 识别短线风险偏好与情绪温度。\n - 涨跌家数与涨跌停结构\n - 成交额是否扩张\n - 高位股是否出现分歧\n- 主线板块: 提炼可交易主线与规避方向。\n - 领涨板块是否具备事件催化\n - 板块内部是否有龙头带动\n - 领跌板块是否扩散\n\n### Action Framework\n- 进攻:指数共振上行 + 成交额放大 + 主线强化。\n-
均衡:指数分化或缩量震荡,控制仓位并等待确认。\n- 防守:指数转弱 + 领跌扩散,优先风控与减仓。\n\n---\n\n# 输出格式模板(请严格按此格式输出)\n\n## 2026-05-03 大盘复盘\n\n### 一、市场总结\n(2-3句话概括今日市场整体表现,包括指数涨跌、成交量变化)\n\n### 二、指数点评\n(分析上证、深证、创业板等各指数走势特点)\n\n### 三、资金动向\n(解读成交额流向的含义)\n\n### 四、热点解读\n(分析领涨领跌板块背后的逻辑和驱动因素)\n\n### 五、后市展望\n(结合当前走势和新闻,给出
明日市场预判)\n\n### 六、风险提示\n(需要关注的风险点)\n\n### 七、策略计划\n(给出进攻/均衡/防守结论,对应仓位建议,并给出一个触发失效条件;最后补充"建议
仅供参考,不构成投资建议"。)\n\n---\n\n请直接输出复盘报告内容,不要输出其他说明文字。\n'}], temperature=0.7, max_tokens=8192, REDACTED', api_base='https://dashscope.aliyuncs.com/compatible-mode/v1/')
19:35:48 - LiteLLM:DEBUG: utils.py:481 -
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:481 |
19:35:48 - LiteLLM:DEBUG: utils.py:1007 - Removing thought signatures from tool call IDs for non-Gemini model
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:1007 | Removing thought signatures from tool call IDs for non-Gemini model
19:35:48 - LiteLLM:DEBUG: litellm_logging.py:557 - self.optional_params: {}
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:557 | self.optional_params: {}
19:35:48 - LiteLLM:DEBUG: utils.py:481 - SYNC kwargs[caching]: False; litellm.cache: None; kwargs.get('cache')['no-cache']: False
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:481 | SYNC kwargs[caching]: False; litellm.cache: None; kwargs.get('cache')['no-cache']: False
19:35:48 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
19:35:48 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:35:48 - LiteLLM:DEBUG: main.py:959 - Error getting model info: This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\main.py:959 | Error getting model info: This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
19:35:48 - LiteLLM:INFO: utils.py:3995 -
LiteLLM completion() model= qwen-plus; provider = openai
2026-05-03 19:35:48 | INFO | D:\Programs\python311\Lib\site-packages\litellm\utils.py:3995 |
LiteLLM completion() model= qwen-plus; provider = openai
19:35:48 - LiteLLM:DEBUG: utils.py:3998 -
LiteLLM: Params passed to completion() {'model': 'qwen-plus', 'functions': None, 'function_call': None, 'temperature': 0.7, 'top_p': None, 'n': None, 'stream': None, 'stream_options': None, 'stop': None, 'max_tokens': 8192, 'max_completion_tokens': None, 'modalities': None, 'prediction': None, 'audio': None,
'presence_penalty': None, 'frequency_penalty': None, 'logit_bias': None, 'user': None, 'custom_llm_provider': 'openai', 'response_format': None, 'seed': None, 'tools': None, 'tool_choice': None, 'max_retries': None, 'logprobs': None, 'top_logprobs': None, 'extra_headers': None, 'api_version': None, 'parallel_tool_calls': None, 'drop_params': None, 'allowed_openai_params': None, 'reasoning_effort': None, 'verbosity': None, 'additional_drop_params': None, 'messages': [{'role': 'system', 'content': '你是一位专业的股票分析助手。\n\n- 回答必须基于用户提供的数据与上下文\n- 若信息不足,要明确指出不确定性\n- 不要编造价格
、财报或新闻事实\n'}, {'role': 'user', 'content': '你是一位专业的A/H/美股市场分析师,请根据以下数据生成一份简洁的大盘复盘报告。\n\n【重要】输出要求:\n- 必
须输出纯 Markdown 文本格式\n- 禁止输出 JSON 格式\n- 禁止输出代码块\n- emoji 仅在标题处少量使用(每个标题最多1个)\n\n---\n\n# 今日市场数据\n\n## 日期\n2026-05-03\n\n## 主要指数\n- 上证指数: 4112.16 (↑0.11%)\n- 深证成指: 15107.55 (↓0.09%)\n- 创业板指: 3677.15 (↓0.27%)\n- 科创50: 1571.07 (↑5.19%)\n- 上证50: 2985.50 (↑0.61%)\n- 沪深300: 4807.31 (↓0.06%)\n\n\n## 市场概况\n- 上涨: 2878 家 | 下跌: 2461 家 | 平盘: 125 家\n- 涨停: 98 家 | 跌停: 54 家\n- 两市成交额: 27592 亿元\n\n## 板块表现\n领涨: 燃料电池(+9.46%), 集成电路制造(+6.56%), 体育Ⅲ(+6.43%)\n领跌: 蓄电池及其他电池(-5.45%), 玻纤制造(-3.22%), 房地产综合服务(-2.83%)\n\n## 市场新闻\n暂无相关新闻\n\n\n\n## Strategy Blueprint: A股市场三段式复盘策略\n聚焦指数趋势、资金博弈与板块轮动,形成次日交易计划。\n\n### Strategy Principles\n- 先看指数方向,再看量能结构,最后看板块持续性。\n- 结论必须映射到仓位、节奏与风险控制动作。\n- 判断使用当日数据与近3日新闻,不臆测未验证信息。\n\n### Analysis Dimensions\n- 趋势结构: 判断市场处于上升、震荡还是防守阶段。\n - 上证/深证/创业板是否同向\n - 放量上涨或缩量下跌是否成立\n - 关键支撑阻
力是否被突破\n- 资金情绪: 识别短线风险偏好与情绪温度。\n - 涨跌家数与涨跌停结构\n - 成交额是否扩张\n - 高位股是否出现分歧\n- 主线板块: 提炼可交易主线与
规避方向。\n - 领涨板块是否具备事件催化\n - 板块内部是否有龙头带动\n - 领跌板块是否扩散\n\n### Action Framework\n- 进攻:指数共振上行 + 成交额放大 + 主
线强化。\n- 均衡:指数分化或缩量震荡,控制仓位并等待确认。\n- 防守:指数转弱 + 领跌扩散,优先风控与减仓。\n\n---\n\n# 输出格式模板(请严格按此格式输出)\n\n## 2026-05-03 大盘复盘\n\n### 一、市场总结\n(2-3句话概括今日市场整体表现,包括指数涨跌、成交量变化)\n\n### 二、指数点评\n(分析上证、深证、创业板等各指
数走势特点)\n\n### 三、资金动向\n(解读成交额流向的含义)\n\n### 四、热点解读\n(分析领涨领跌板块背后的逻辑和驱动因素)\n\n### 五、后市展望\n(结合当前走
势和新闻,给出明日市场预判)\n\n### 六、风险提示\n(需要关注的风险点)\n\n### 七、策略计划\n(给出进攻/均衡/防守结论,对应仓位建议,并给出一个触发失效条件
;最后补充"建议仅供参考,不构成投资建议"。)\n\n---\n\n请直接输出复盘报告内容,不要输出其他说明文字。\n'}], 'thinking': None, 'web_search_options': None, 'safety_identifier': None, 'service_tier': None}
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:3998 |
LiteLLM: Params passed to completion() {'model': 'qwen-plus', 'functions': None, 'function_call': None, 'temperature': 0.7, 'top_p': None, 'n': None, 'stream': None, 'stream_options': None, 'stop': None, 'max_tokens': 8192, 'max_completion_tokens': None, 'modalities': None, 'prediction': None, 'audio': None,
'presence_penalty': None, 'frequency_penalty': None, 'logit_bias': None, 'user': None, 'custom_llm_provider': 'openai', 'response_format': None, 'seed': None, 'tools': None, 'tool_choice': None, 'max_retries': None, 'logprobs': None, 'top_logprobs': None, 'extra_headers': None, 'api_version': None, 'parallel_tool_calls': None, 'drop_params': None, 'allowed_openai_params': None, 'reasoning_effort': None, 'verbosity': None, 'additional_drop_params': None, 'messages': [{'role': 'system', 'content': '你是一位专业的股票分析助手。\n\n- 回答必须基于用户提供的数据与上下文\n- 若信息不足,要明确指出不确定性\n- 不要编造价格
、财报或新闻事实\n'}, {'role': 'user', 'content': '你是一位专业的A/H/美股市场分析师,请根据以下数据生成一份简洁的大盘复盘报告。\n\n【重要】输出要求:\n- 必
须输出纯 Markdown 文本格式\n- 禁止输出 JSON 格式\n- 禁止输出代码块\n- emoji 仅在标题处少量使用(每个标题最多1个)\n\n---\n\n# 今日市场数据\n\n## 日期\n2026-05-03\n\n## 主要指数\n- 上证指数: 4112.16 (↑0.11%)\n- 深证成指: 15107.55 (↓0.09%)\n- 创业板指: 3677.15 (↓0.27%)\n- 科创50: 1571.07 (↑5.19%)\n- 上证50: 2985.50 (↑0.61%)\n- 沪深300: 4807.31 (↓0.06%)\n\n\n## 市场概况\n- 上涨: 2878 家 | 下跌: 2461 家 | 平盘: 125 家\n- 涨停: 98 家 | 跌停: 54 家\n- 两市成交额: 27592 亿元\n\n## 板块表现\n领涨: 燃料电池(+9.46%), 集成电路制造(+6.56%), 体育Ⅲ(+6.43%)\n领跌: 蓄电池及其他电池(-5.45%), 玻纤制造(-3.22%), 房地产综合服务(-2.83%)\n\n## 市场新闻\n暂无相关新闻\n\n\n\n## Strategy Blueprint: A股市场三段式复盘策略\n聚焦指数趋势、资金博弈与板块轮动,形成次日交易计划。\n\n### Strategy Principles\n- 先看指数方向,再看量能结构,最后看板块持续性。\n- 结论必须映射到仓位、节奏与风险控制动作。\n- 判断使用当日数据与近3日新闻,不臆测未验证信息。\n\n### Analysis Dimensions\n- 趋势结构: 判断市场处于上升、震荡还是防守阶段。\n - 上证/深证/创业板是否同向\n - 放量上涨或缩量下跌是否成立\n - 关键支撑阻
力是否被突破\n- 资金情绪: 识别短线风险偏好与情绪温度。\n - 涨跌家数与涨跌停结构\n - 成交额是否扩张\n - 高位股是否出现分歧\n- 主线板块: 提炼可交易主线与
规避方向。\n - 领涨板块是否具备事件催化\n - 板块内部是否有龙头带动\n - 领跌板块是否扩散\n\n### Action Framework\n- 进攻:指数共振上行 + 成交额放大 + 主
线强化。\n- 均衡:指数分化或缩量震荡,控制仓位并等待确认。\n- 防守:指数转弱 + 领跌扩散,优先风控与减仓。\n\n---\n\n# 输出格式模板(请严格按此格式输出)\n\n## 2026-05-03 大盘复盘\n\n### 一、市场总结\n(2-3句话概括今日市场整体表现,包括指数涨跌、成交量变化)\n\n### 二、指数点评\n(分析上证、深证、创业板等各指
数走势特点)\n\n### 三、资金动向\n(解读成交额流向的含义)\n\n### 四、热点解读\n(分析领涨领跌板块背后的逻辑和驱动因素)\n\n### 五、后市展望\n(结合当前走
势和新闻,给出明日市场预判)\n\n### 六、风险提示\n(需要关注的风险点)\n\n### 七、策略计划\n(给出进攻/均衡/防守结论,对应仓位建议,并给出一个触发失效条件
;最后补充"建议仅供参考,不构成投资建议"。)\n\n---\n\n请直接输出复盘报告内容,不要输出其他说明文字。\n'}], 'thinking': None, 'web_search_options': None, 'safety_identifier': None, 'service_tier': None}
19:35:48 - LiteLLM:DEBUG: utils.py:4001 -
LiteLLM: Non-Default params passed to completion() {'temperature': 0.7, 'max_tokens': 8192}
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:4001 |
LiteLLM: Non-Default params passed to completion() {'temperature': 0.7, 'max_tokens': 8192}
19:35:48 - LiteLLM:DEBUG: utils.py:481 - Final returned optional params: {'temperature': 0.7, 'max_tokens': 8192, 'extra_body': {}}
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:481 | Final returned optional params: {'temperature': 0.7, 'max_tokens': 8192, 'extra_body': {}}
19:35:48 - LiteLLM:DEBUG: litellm_logging.py:557 - self.optional_params: {'temperature': 0.7, 'max_tokens': 8192, 'extra_body': {}}
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:557 | self.optional_params: {'temperature': 0.7, 'max_tokens': 8192, 'extra_body': {}}
19:35:48 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
19:35:48 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:35:48 - LiteLLM:DEBUG: main.py:959 - Error getting model info: This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\main.py:959 | Error getting model info: This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
19:35:48 - LiteLLM:DEBUG: litellm_logging.py:1150 -
POST Request Sent from LiteLLM:
curl -X POST \
https://dashscope.aliyuncs.com/compatible-mode/v1/ \
-d '{'model': 'qwen-plus', 'messages': [{'role': 'system', 'content': '你是一位专业的股票分析助手。\n\n- 回答必须基于用户提供的数据与上下文\n- 若信息不足,
要明确指出不确定性\n- 不要编造价格、财报或新闻事实\n'}, {'role': 'user', 'content': '你是一位专业的A/H/美股市场分析师,请根据以下数据生成一份简洁的大盘复盘
报告。\n\n【重要】输出要求:\n- 必须输出纯 Markdown 文本格式\n- 禁止输出 JSON 格式\n- 禁止输出代码块\n- emoji 仅在标题处少量使用(每个标题最多1个)\n\n---\n\n# 今日市场数据\n\n## 日期\n2026-05-03\n\n## 主要指数\n- 上证指数: 4112.16 (↑0.11%)\n- 深证成指: 15107.55 (↓0.09%)\n- 创业板指: 3677.15 (↓0.27%)\n- 科创50: 1571.07 (↑5.19%)\n- 上证50: 2985.50 (↑0.61%)\n- 沪深300: 4807.31 (↓0.06%)\n\n\n## 市场概况\n- 上涨: 2878 家 | 下跌: 2461 家 | 平盘: 125 家\n- 涨停: 98
家 | 跌停: 54 家\n- 两市成交额: 27592 亿元\n\n## 板块表现\n领涨: 燃料电池(+9.46%), 集成电路制造(+6.56%), 体育Ⅲ(+6.43%)\n领跌: 蓄电池及其他电池(-5.45%), 玻
纤制造(-3.22%), 房地产综合服务(-2.83%)\n\n## 市场新闻\n暂无相关新闻\n\n\n\n## Strategy Blueprint: A股市场三段式复盘策略\n聚焦指数趋势、资金博弈与板块轮动,
形成次日交易计划。\n\n### Strategy Principles\n- 先看指数方向,再看量能结构,最后看板块持续性。\n- 结论必须映射到仓位、节奏与风险控制动作。\n- 判断使用当日
数据与近3日新闻,不臆测未验证信息。\n\n### Analysis Dimensions\n- 趋势结构: 判断市场处于上升、震荡还是防守阶段。\n - 上证/深证/创业板是否同向\n - 放量上
涨或缩量下跌是否成立\n - 关键支撑阻力是否被突破\n- 资金情绪: 识别短线风险偏好与情绪温度。\n - 涨跌家数与涨跌停结构\n - 成交额是否扩张\n - 高位股是否出
现分歧\n- 主线板块: 提炼可交易主线与规避方向。\n - 领涨板块是否具备事件催化\n - 板块内部是否有龙头带动\n - 领跌板块是否扩散\n\n### Action Framework\n-
进攻:指数共振上行 + 成交额放大 + 主线强化。\n- 均衡:指数分化或缩量震荡,控制仓位并等待确认。\n- 防守:指数转弱 + 领跌扩散,优先风控与减仓。\n\n---\n\n#
输出格式模板(请严格按此格式输出)\n\n## 2026-05-03 大盘复盘\n\n### 一、市场总结\n(2-3句话概括今日市场整体表现,包括指数涨跌、成交量变化)\n\n### 二、指数
点评\n(分析上证、深证、创业板等各指数走势特点)\n\n### 三、资金动向\n(解读成交额流向的含义)\n\n### 四、热点解读\n(分析领涨领跌板块背后的逻辑和驱动因素
)\n\n### 五、后市展望\n(结合当前走势和新闻,给出明日市场预判)\n\n### 六、风险提示\n(需要关注的风险点)\n\n### 七、策略计划\n(给出进攻/均衡/防守结论,
对应仓位建议,并给出一个触发失效条件;最后补充"建议仅供参考,不构成投资建议"。)\n\n---\n\n请直接输出复盘报告内容,不要输出其他说明文字。\n'}], 'temperature': 0.7, 'max_tokens': 8192, 'extra_body': {}}'
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:1150 |
POST Request Sent from LiteLLM:
curl -X POST \
https://dashscope.aliyuncs.com/compatible-mode/v1/ \
-d '{'model': 'qwen-plus', 'messages': [{'role': 'system', 'content': '你是一位专业的股票分析助手。\n\n- 回答必须基于用户提供的数据与上下文\n- 若信息不足,
要明确指出不确定性\n- 不要编造价格、财报或新闻事实\n'}, {'role': 'user', 'content': '你是一位专业的A/H/美股市场分析师,请根据以下数据生成一份简洁的大盘复盘
报告。\n\n【重要】输出要求:\n- 必须输出纯 Markdown 文本格式\n- 禁止输出 JSON 格式\n- 禁止输出代码块\n- emoji 仅在标题处少量使用(每个标题最多1个)\n\n---\n\n# 今日市场数据\n\n## 日期\n2026-05-03\n\n## 主要指数\n- 上证指数: 4112.16 (↑0.11%)\n- 深证成指: 15107.55 (↓0.09%)\n- 创业板指: 3677.15 (↓0.27%)\n- 科创50: 1571.07 (↑5.19%)\n- 上证50: 2985.50 (↑0.61%)\n- 沪深300: 4807.31 (↓0.06%)\n\n\n## 市场概况\n- 上涨: 2878 家 | 下跌: 2461 家 | 平盘: 125 家\n- 涨停: 98
家 | 跌停: 54 家\n- 两市成交额: 27592 亿元\n\n## 板块表现\n领涨: 燃料电池(+9.46%), 集成电路制造(+6.56%), 体育Ⅲ(+6.43%)\n领跌: 蓄电池及其他电池(-5.45%), 玻
纤制造(-3.22%), 房地产综合服务(-2.83%)\n\n## 市场新闻\n暂无相关新闻\n\n\n\n## Strategy Blueprint: A股市场三段式复盘策略\n聚焦指数趋势、资金博弈与板块轮动,
形成次日交易计划。\n\n### Strategy Principles\n- 先看指数方向,再看量能结构,最后看板块持续性。\n- 结论必须映射到仓位、节奏与风险控制动作。\n- 判断使用当日
数据与近3日新闻,不臆测未验证信息。\n\n### Analysis Dimensions\n- 趋势结构: 判断市场处于上升、震荡还是防守阶段。\n - 上证/深证/创业板是否同向\n - 放量上
涨或缩量下跌是否成立\n - 关键支撑阻力是否被突破\n- 资金情绪: 识别短线风险偏好与情绪温度。\n - 涨跌家数与涨跌停结构\n - 成交额是否扩张\n - 高位股是否出
现分歧\n- 主线板块: 提炼可交易主线与规避方向。\n - 领涨板块是否具备事件催化\n - 板块内部是否有龙头带动\n - 领跌板块是否扩散\n\n### Action Framework\n-
进攻:指数共振上行 + 成交额放大 + 主线强化。\n- 均衡:指数分化或缩量震荡,控制仓位并等待确认。\n- 防守:指数转弱 + 领跌扩散,优先风控与减仓。\n\n---\n\n#
输出格式模板(请严格按此格式输出)\n\n## 2026-05-03 大盘复盘\n\n### 一、市场总结\n(2-3句话概括今日市场整体表现,包括指数涨跌、成交量变化)\n\n### 二、指数
点评\n(分析上证、深证、创业板等各指数走势特点)\n\n### 三、资金动向\n(解读成交额流向的含义)\n\n### 四、热点解读\n(分析领涨领跌板块背后的逻辑和驱动因素
)\n\n### 五、后市展望\n(结合当前走势和新闻,给出明日市场预判)\n\n### 六、风险提示\n(需要关注的风险点)\n\n### 七、策略计划\n(给出进攻/均衡/防守结论,
对应仓位建议,并给出一个触发失效条件;最后补充"建议仅供参考,不构成投资建议"。)\n\n---\n\n请直接输出复盘报告内容,不要输出其他说明文字。\n'}], 'temperature': 0.7, 'max_tokens': 8192, 'extra_body': {}}'
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\openai\_base_client.py:486 | Request options: {'method': 'post', 'url': '/chat/completions', 'headers': {'X-Stainless-Raw-Response': 'true'}, 'timeout': 600.0, 'files': None, 'idempotency_key': 'stainless-python-retry-de0c0a43-1530-4514-a668-d94688cc6723', 'content': None, 'json_data': {'messages': [{'role': 'system', 'content': '你是一位专业的股票分析助手。\n\n- 回答必须基于用户提供的数据
与上下文\n- 若信息不足,要明确指出不确定性\n- 不要编造价格、财报或新闻事实\n'}, {'role': 'user', 'content': '你是一位专业的A/H/美股市场分析师,请根据以下数
据生成一份简洁的大盘复盘报告。\n\n【重要】输出要求:\n- 必须输出纯 Markdown 文本格式\n- 禁止输出 JSON 格式\n- 禁止输出代码块\n- emoji 仅在标题处少量使用(
每个标题最多1个)\n\n---\n\n# 今日市场数据\n\n## 日期\n2026-05-03\n\n## 主要指数\n- 上证指数: 4112.16 (↑0.11%)\n- 深证成指: 15107.55 (↓0.09%)\n- 创业板指:
3677.15 (↓0.27%)\n- 科创50: 1571.07 (↑5.19%)\n- 上证50: 2985.50 (↑0.61%)\n- 沪深300: 4807.31 (↓0.06%)\n\n\n## 市场概况\n- 上涨: 2878 家 | 下跌: 2461 家 |
平盘: 125 家\n- 涨停: 98 家 | 跌停: 54 家\n- 两市成交额: 27592 亿元\n\n## 板块表现\n领涨: 燃料电池(+9.46%), 集成电路制造(+6.56%), 体育Ⅲ(+6.43%)\n领跌: 蓄电
池及其他电池(-5.45%), 玻纤制造(-3.22%), 房地产综合服务(-2.83%)\n\n## 市场新闻\n暂无相关新闻\n\n\n\n## Strategy Blueprint: A股市场三段式复盘策略\n聚焦指数趋
势、资金博弈与板块轮动,形成次日交易计划。\n\n### Strategy Principles\n- 先看指数方向,再看量能结构,最后看板块持续性。\n- 结论必须映射到仓位、节奏与风险控
制动作。\n- 判断使用当日数据与近3日新闻,不臆测未验证信息。\n\n### Analysis Dimensions\n- 趋势结构: 判断市场处于上升、震荡还是防守阶段。\n - 上证/深证/创
业板是否同向\n - 放量上涨或缩量下跌是否成立\n - 关键支撑阻力是否被突破\n- 资金情绪: 识别短线风险偏好与情绪温度。\n - 涨跌家数与涨跌停结构\n - 成交额是
否扩张\n - 高位股是否出现分歧\n- 主线板块: 提炼可交易主线与规避方向。\n - 领涨板块是否具备事件催化\n - 板块内部是否有龙头带动\n - 领跌板块是否扩散\n\n### Action Framework\n- 进攻:指数共振上行 + 成交额放大 + 主线强化。\n- 均衡:指数分化或缩量震荡,控制仓位并等待确认。\n- 防守:指数转弱 + 领跌扩散,优先风
控与减仓。\n\n---\n\n# 输出格式模板(请严格按此格式输出)\n\n## 2026-05-03 大盘复盘\n\n### 一、市场总结\n(2-3句话概括今日市场整体表现,包括指数涨跌、成交
量变化)\n\n### 二、指数点评\n(分析上证、深证、创业板等各指数走势特点)\n\n### 三、资金动向\n(解读成交额流向的含义)\n\n### 四、热点解读\n(分析领涨领跌
板块背后的逻辑和驱动因素)\n\n### 五、后市展望\n(结合当前走势和新闻,给出明日市场预判)\n\n### 六、风险提示\n(需要关注的风险点)\n\n### 七、策略计划\n(
给出进攻/均衡/防守结论,对应仓位建议,并给出一个触发失效条件;最后补充"建议仅供参考,不构成投资建议"。)\n\n---\n\n请直接输出复盘报告内容,不要输出其他说明
文字。\n'}], 'model': 'qwen-plus', 'max_tokens': 8192, 'temperature': 0.7}, 'extra_json': {}}
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\openai\_base_client.py:1001 | Sending HTTP Request: POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | close.started
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | close.complete
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | connect_tcp.started host='dashscope.aliyuncs.com' port=443 local_address=None timeout=600.0 socket_options=None
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x000001F2965E4450>
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | start_tls.started ssl_context=<ssl.SSLContext object at 0x000001F271BE2B10> server_hostname='dashscope.aliyuncs.com' timeout=600.0
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | start_tls.complete return_value=<httpcore._backends.sync.SyncStream object at 0x000001F2965E5690>
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | send_request_headers.started request=<Request [b'POST']>
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | send_request_headers.complete
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | send_request_body.started request=<Request [b'POST']>
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | send_request_body.complete
2026-05-03 19:35:48 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | receive_response_headers.started request=<Request [b'POST']>
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'vary', b'Origin,Access-Control-Request-Method,Access-Control-Request-Headers, Accept-Encoding'), (b'x-request-id', b'7596c0b0-63b3-9ae5-b864-900e02bf03fb'), (b'x-dashscope-call-gateway', b'true'), (b'content-type', b'application/json'), (b'req-cost-time', b'20163'), (b'req-arrive-time', b'1777808153132'), (b'resp-start-time', b'1777808173296'), (b'x-envoy-upstream-service-time', b'20162'), (b'content-encoding', b'gzip'), (b'date', b'Sun, 03 May 2026 11:36:12 GMT'), (b'server', b'istio-envoy'), (b'transfer-encoding', b'chunked')])
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | receive_response_body.started request=<Request [b'POST']>
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | receive_response_body.complete
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | response_closed.started
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\httpcore\_trace.py:47 | response_closed.complete
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\openai\_base_client.py:1039 | HTTP Response: POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions "200 OK" Headers({'vary': 'Origin,Access-Control-Request-Method,Access-Control-Request-Headers, Accept-Encoding', 'x-request-id': '7596c0b0-63b3-9ae5-b864-900e02bf03fb', 'x-dashscope-call-gateway': 'true', 'content-type': 'application/json', 'req-cost-time': '20163', 'req-arrive-time': '1777808153132', 'resp-start-time': '1777808173296', 'x-envoy-upstream-service-time': '20162', 'content-encoding': 'gzip', 'date': 'Sun, 03 May 2026 11:36:12 GMT', 'server': 'istio-envoy', 'transfer-encoding': 'chunked'})
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\openai\_base_client.py:1047 | request_id: 7596c0b0-63b3-9ae5-b864-900e02bf03fb
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\asyncio\proactor_events.py:633 | Using proactor: IocpProactor
19:36:08 - LiteLLM:DEBUG: litellm_logging.py:1223 - RAW RESPONSE:
{"id": "chatcmpl-7596c0b0-63b3-9ae5-b864-900e02bf03fb", "choices": [{"finish_reason": "stop", "index": 0, "logprobs": null, "message": {"content": "## 2026-05-03 \u5927\u76d8\u590d\u76d8\n\n### \u4e00\u3001\u5e02\u573a\u603b\u7ed3 \n\u5e02\u573a\u5448\u73b0\u7ed3\u6784\u6027\u5206\u5316\uff0c\u4e0a\u8bc1\u6307\u6570\u5fae\u6da80.11%\u7ad9\u7a334100\u70b9\uff0c\u4e0a\u8bc150\u4e0e\u79d1\u521b50\u5927\u5e45\u9886\u6da8\uff0c\u4f46\u6df1\u8bc1\u6210\u6307\u4e0e\u521b\u4e1a\u677f\u6307\u8f6c\u5f31\uff0c\u663e\u793a\u6743\u91cd\u642d\u53f0\u3001\u6210\u957f\u627f\u538b\u3002\u4e24\u5e02\u6210\u4ea4\u989d\u8fbe2.76\u4e07\u4ebf\u5143\uff0c\u73af\u6bd4\u663e\u8457\u653e\u91cf\uff0c\u8d44\u91d1\u6d3b\u8dc3\u5ea6\u56de\u5347\u3002\n\n### \u4e8c\u3001\u6307\u6570\u70b9\u8bc4 \n\u4e0a\u8bc1\u6307\u6570\u4e0e\u4e0a\u8bc150\uff08+0.61%\uff09\u5f3a\u52bf\u6536\u6da8\uff0c\u663e\u793a\u91d1\u878d\u3001\u4e2d\u5b57\u5934\u53ca\u5927\u76d8\u84dd\u7b79\u652f\u6491\u660e\u663e\uff1b\u79d1\u521b50\u5355\u65e5\u98d9\u53475.19%\uff0c\u521b\u8fd1\u671f\u6700\u5927\u5355\u65e5\u6da8\u5e45\uff0c\u53cd\u6620\u79d1\u6280\u4e3b\u7ebf\u60c5\u7eea\u96c6\u4e2d\u91ca\u653e\uff1b\u800c\u521b\u4e1a\u677f\u6307\uff08-0.27%\uff09\u4e0e\u6df1\u8bc1\u6210\u6307\uff08-0.09%\uff09\u540c\u6b65\u8d70\u5f31\uff0c\u51f8\u663e\u4e2d\u5c0f\u5e02\u503c\u54c1\u79cd\u5185\u90e8\u5206\u5316\u52a0\u5267\uff0c\u6210\u957f\u98ce\u683c\u5185\u90e8\u51fa\u73b0\u9ad8\u4f4e\u5207\u6362\u8ff9\u8c61\u3002\n\n### \u4e09\u3001\u8d44\u91d1\u52a8\u5411 \n\u4e24\u5e02\u6210\u4ea427592\u4ebf\u5143\uff0c\u8f83\u524d\u4e00\u4ea4\u6613\u65e5\u660e\u663e\u653e\u5927\uff0c\u589e\u91cf\u8d44\u91d1\u4e3b\u8981\u6d41\u5411\u786c\u79d1\u6280\u4e0e\u653f\u7b56\u9884\u671f\u660e\u786e\u65b9\u5411\u3002\u4e0a\u6da8\u5bb6\u6570\uff082878\uff09\u591a\u4e8e\u4e0b\u8dcc\u5bb6\u6570\uff082461\uff09\uff0c\u4f46\u6da8\u505c\uff0898\uff09\u4e0e\u8dcc\u505c\uff0854\uff09\u6bd4\u503c\u7ea61.8:1\uff0c\u663e\u793a\u77ed\u7ebf\u60c5\u7eea\u504f\u79ef\u6781\u4f46\u672a\u6781\u81f4\u4ea2\u594b\uff1b\u7ed3\u5408\u6da8\u8dcc\u505c\u5206\u5e03\uff0c\u8d44\u91d1\u805a\u7126\u4f4e\u4f4d\u4fee\u590d\u4e0e\u4e3b\u9898\u50ac\u5316\uff0c\u800c\u975e\u5168\u9762\u666e\u6da8\u3002\n\n### \u56db\u3001\u70ed\u70b9\u89e3\u8bfb \n\u71c3\u6599\u7535\u6c60\uff08+9.46%\uff09\u3001\u96c6\u6210\u7535\u8def\u5236\u9020\uff08+6.56%\uff09\u9886\u6da8\uff0c\u6216\u53d7\u76ca\u4e8e\u8fd1\u671f\u534a\u5bfc\u4f53\u8bbe\u5907\u56fd\u4ea7\u66ff\u4ee3\u52a0\u901f\u843d\u5730\u53ca\u6c22\u80fd\u793a\u8303\u57ce\u5e02\u7fa4\u653f\u7b56\u8282\u594f\u5f3a\u5316\uff1b\u4f53\u80b2\u2162\u677f\u5757\u5f02\u52a8\u6216\u4e0e\u6691\u671f\u6d88\u8d39\u9884\u671f\u63d0\u524d\u535a\u5f08\u76f8\u5173\u3002\u9886\u8dcc\u7684\u84c4\u7535\u6c60\u53ca\u5176\u4ed6\u7535\u6c60\uff08-5.45%\uff09\u5ef6\u7eed\u8c03\u6574\uff0c\u53cd\u6620\u65b0\u80fd\u6e90\u8f66\u94fe\u4e0a\u6e38\u6750\u6599\u4ef7\u683c\u538b\u529b\u4e0e\u76c8\u5229\u9884\u671f\u4e0b\u4fee\u4ecd\u5728\u4f20\u5bfc\uff1b\u73bb\u7ea4\u5236\u9020\u3001\u5730\u4ea7\u670d\u52a1\u7b49\u8dcc\u5e45\u5c45\u524d\uff0c\u663e\u793a\u987a\u5468\u671f\u4e0e\u5730\u4ea7\u94fe\u8d44\u91d1\u6301\u7eed\u6d41\u51fa\u3002\n\n### \u4e94\u3001\u540e\u5e02\u5c55\u671b \n\u5f53\u524d\u5e02\u573a\u5904\u4e8e\u201c\u6743\u91cd\u6258\u5e95+\u79d1\u6280\u7a81\u56f4\u201d\u9636\u6bb5\uff0c\u79d1\u521b50\u5355\u65e5\u5927\u6da8\u5177\u5907\u6280\u672f\u7a81\u7834\u610f\u4e49\uff0c\u82e5\u660e\u65e5\u80fd\u7ad9\u7a331580\u70b9\u5e76\u5e26\u52a8\u521b\u4e1a\u677f\u6307\u7ffb\u7ea2\uff0c\u5219\u6709\u671b\u786e\u8ba4\u79d1\u6280\u4e3b\u7ebf\u9636\u6bb5\u6027\u4e3b\u5bfc\u5730\u4f4d\uff1b\u53cd\u4e4b\uff0c\u82e5\u4e0a\u8bc150\u6ede\u6da8\u800c\u521b\u4e1a\u677f\u7ee7\u7eed\u8d70\u5f31\uff0c\u5219\u53ef\u80fd\u91cd\u56de\u9707\u8361\u6574\u56fa\u3002\u6682\u65e0\u65b0\u653f\u7b56\u6216\u4e8b\u4ef6\u50ac\u5316\uff0c\u884c\u60c5\u5ef6\u7eed\u6027\u4f9d\u8d56\u5185\u751f\u8d44\u91d1\u63a5\u529b\u3002\n\n### \u516d\u3001\u98ce\u9669\u63d0\u793a \n\u9700\u8b66\u60d5\uff1a\u2460 \u79d1\u521b50\u5355\u65e5\u6da8\u5e45\u8fc7\u5927\u540e\u7684\u77ed\u671f\u83b7\u5229\u56de\u5410\u538b\u529b\uff1b\u2461 \u65b0\u80fd\u6e90\u7535\u6c60\u94fe\u8d1f\u53cd\u9988\u6269\u6563\u81f3\u6574\u4e2a\u7535\u65b0\u677f\u5757\uff1b\u2462 \u6210\u4ea4\u989d\u653e\u5927\u4f46\u6caa\u6df1300\u5fae\u8dcc\uff0c\u663e\u793a\u6307\u6570\u5931\u771f\u98ce\u9669\u4e0a\u5347\uff0c\u90e8\u5206\u4e2a\u80a1\u6d41\u52a8\u6027\u5206\u5c42\u52a0\u5267\u3002\n\n### \u4e03\u3001\u7b56\u7565\u8ba1\u5212 \n\u5747\u8861 \ud83d\udfe1 \n\u4ed3\u4f4d\u5efa\u8bae\u7ef4\u63016\u20137\u6210\uff0c\u91cd\u70b9\u5411\u534a\u5bfc\u4f53\u8bbe\u5907\u3001\u5148\u8fdb\u5c01\u88c5\u3001\u6c22\u80fd\u6838\u5fc3\u90e8\u4ef6\u7b49\u6709\u8ba2\u5355\u9a8c\u8bc1\u7684\u7ec6\u5206\u65b9\u5411\u503e\u659c\uff0c\u56de\u907f\u9ad8\u5e93\u5b58\u3001\u4f4e\u6bdb\u5229\u7684\u7535\u6c60\u6750\u6599\u73af\u8282\u3002 \n\u89e6\u53d1\u5931\u6548\u6761\u4ef6\uff1a\u82e5\u660e\u65e5\u79d1\u521b50\u51b2\u9ad8\u56de\u843d\u4e14\u8dcc\u78341560\u70b9\uff0c\u6216\u521b\u4e1a\u677f\u6307\u653e\u91cf\u8dcc\u78343650\u70b9\uff0c\u5219\u964d\u4ed3\u81f35\u6210\u4ee5\u4e0b\u5e76\u6682\u505c\u79d1\u6280\u4e3b\u9898\u52a0\u4ed3\u3002 \n\u5efa\u8bae\u4ec5\u4f9b\u53c2\u8003\uff0c\u4e0d\u6784\u6210\u6295\u8d44\u5efa\u8bae\u3002", "refusal": null, "role": "assistant", "annotations": null, "audio": null, "function_call": null, "tool_calls": null}}], "created": 1777808153, "model": "qwen-plus", "object": "chat.completion", "service_tier": null, "system_fingerprint": null, "usage": {"completion_tokens": 710, "prompt_tokens": 973, "total_tokens": 1683, "completion_tokens_details": null, "prompt_tokens_details": {"audio_tokens": null, "cached_tokens": 0}}}
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:1223 | RAW RESPONSE:
{"id": "chatcmpl-7596c0b0-63b3-9ae5-b864-900e02bf03fb", "choices": [{"finish_reason": "stop", "index": 0, "logprobs": null, "message": {"content": "## 2026-05-03 \u5927\u76d8\u590d\u76d8\n\n### \u4e00\u3001\u5e02\u573a\u603b\u7ed3 \n\u5e02\u573a\u5448\u73b0\u7ed3\u6784\u6027\u5206\u5316\uff0c\u4e0a\u8bc1\u6307\u6570\u5fae\u6da80.11%\u7ad9\u7a334100\u70b9\uff0c\u4e0a\u8bc150\u4e0e\u79d1\u521b50\u5927\u5e45\u9886\u6da8\uff0c\u4f46\u6df1\u8bc1\u6210\u6307\u4e0e\u521b\u4e1a\u677f\u6307\u8f6c\u5f31\uff0c\u663e\u793a\u6743\u91cd\u642d\u53f0\u3001\u6210\u957f\u627f\u538b\u3002\u4e24\u5e02\u6210\u4ea4\u989d\u8fbe2.76\u4e07\u4ebf\u5143\uff0c\u73af\u6bd4\u663e\u8457\u653e\u91cf\uff0c\u8d44\u91d1\u6d3b\u8dc3\u5ea6\u56de\u5347\u3002\n\n### \u4e8c\u3001\u6307\u6570\u70b9\u8bc4 \n\u4e0a\u8bc1\u6307\u6570\u4e0e\u4e0a\u8bc150\uff08+0.61%\uff09\u5f3a\u52bf\u6536\u6da8\uff0c\u663e\u793a\u91d1\u878d\u3001\u4e2d\u5b57\u5934\u53ca\u5927\u76d8\u84dd\u7b79\u652f\u6491\u660e\u663e\uff1b\u79d1\u521b50\u5355\u65e5\u98d9\u53475.19%\uff0c\u521b\u8fd1\u671f\u6700\u5927\u5355\u65e5\u6da8\u5e45\uff0c\u53cd\u6620\u79d1\u6280\u4e3b\u7ebf\u60c5\u7eea\u96c6\u4e2d\u91ca\u653e\uff1b\u800c\u521b\u4e1a\u677f\u6307\uff08-0.27%\uff09\u4e0e\u6df1\u8bc1\u6210\u6307\uff08-0.09%\uff09\u540c\u6b65\u8d70\u5f31\uff0c\u51f8\u663e\u4e2d\u5c0f\u5e02\u503c\u54c1\u79cd\u5185\u90e8\u5206\u5316\u52a0\u5267\uff0c\u6210\u957f\u98ce\u683c\u5185\u90e8\u51fa\u73b0\u9ad8\u4f4e\u5207\u6362\u8ff9\u8c61\u3002\n\n### \u4e09\u3001\u8d44\u91d1\u52a8\u5411 \n\u4e24\u5e02\u6210\u4ea427592\u4ebf\u5143\uff0c\u8f83\u524d\u4e00\u4ea4\u6613\u65e5\u660e\u663e\u653e\u5927\uff0c\u589e\u91cf\u8d44\u91d1\u4e3b\u8981\u6d41\u5411\u786c\u79d1\u6280\u4e0e\u653f\u7b56\u9884\u671f\u660e\u786e\u65b9\u5411\u3002\u4e0a\u6da8\u5bb6\u6570\uff082878\uff09\u591a\u4e8e\u4e0b\u8dcc\u5bb6\u6570\uff082461\uff09\uff0c\u4f46\u6da8\u505c\uff0898\uff09\u4e0e\u8dcc\u505c\uff0854\uff09\u6bd4\u503c\u7ea61.8:1\uff0c\u663e\u793a\u77ed\u7ebf\u60c5\u7eea\u504f\u79ef\u6781\u4f46\u672a\u6781\u81f4\u4ea2\u594b\uff1b\u7ed3\u5408\u6da8\u8dcc\u505c\u5206\u5e03\uff0c\u8d44\u91d1\u805a\u7126\u4f4e\u4f4d\u4fee\u590d\u4e0e\u4e3b\u9898\u50ac\u5316\uff0c\u800c\u975e\u5168\u9762\u666e\u6da8\u3002\n\n### \u56db\u3001\u70ed\u70b9\u89e3\u8bfb \n\u71c3\u6599\u7535\u6c60\uff08+9.46%\uff09\u3001\u96c6\u6210\u7535\u8def\u5236\u9020\uff08+6.56%\uff09\u9886\u6da8\uff0c\u6216\u53d7\u76ca\u4e8e\u8fd1\u671f\u534a\u5bfc\u4f53\u8bbe\u5907\u56fd\u4ea7\u66ff\u4ee3\u52a0\u901f\u843d\u5730\u53ca\u6c22\u80fd\u793a\u8303\u57ce\u5e02\u7fa4\u653f\u7b56\u8282\u594f\u5f3a\u5316\uff1b\u4f53\u80b2\u2162\u677f\u5757\u5f02\u52a8\u6216\u4e0e\u6691\u671f\u6d88\u8d39\u9884\u671f\u63d0\u524d\u535a\u5f08\u76f8\u5173\u3002\u9886\u8dcc\u7684\u84c4\u7535\u6c60\u53ca\u5176\u4ed6\u7535\u6c60\uff08-5.45%\uff09\u5ef6\u7eed\u8c03\u6574\uff0c\u53cd\u6620\u65b0\u80fd\u6e90\u8f66\u94fe\u4e0a\u6e38\u6750\u6599\u4ef7\u683c\u538b\u529b\u4e0e\u76c8\u5229\u9884\u671f\u4e0b\u4fee\u4ecd\u5728\u4f20\u5bfc\uff1b\u73bb\u7ea4\u5236\u9020\u3001\u5730\u4ea7\u670d\u52a1\u7b49\u8dcc\u5e45\u5c45\u524d\uff0c\u663e\u793a\u987a\u5468\u671f\u4e0e\u5730\u4ea7\u94fe\u8d44\u91d1\u6301\u7eed\u6d41\u51fa\u3002\n\n### \u4e94\u3001\u540e\u5e02\u5c55\u671b \n\u5f53\u524d\u5e02\u573a\u5904\u4e8e\u201c\u6743\u91cd\u6258\u5e95+\u79d1\u6280\u7a81\u56f4\u201d\u9636\u6bb5\uff0c\u79d1\u521b50\u5355\u65e5\u5927\u6da8\u5177\u5907\u6280\u672f\u7a81\u7834\u610f\u4e49\uff0c\u82e5\u660e\u65e5\u80fd\u7ad9\u7a331580\u70b9\u5e76\u5e26\u52a8\u521b\u4e1a\u677f\u6307\u7ffb\u7ea2\uff0c\u5219\u6709\u671b\u786e\u8ba4\u79d1\u6280\u4e3b\u7ebf\u9636\u6bb5\u6027\u4e3b\u5bfc\u5730\u4f4d\uff1b\u53cd\u4e4b\uff0c\u82e5\u4e0a\u8bc150\u6ede\u6da8\u800c\u521b\u4e1a\u677f\u7ee7\u7eed\u8d70\u5f31\uff0c\u5219\u53ef\u80fd\u91cd\u56de\u9707\u8361\u6574\u56fa\u3002\u6682\u65e0\u65b0\u653f\u7b56\u6216\u4e8b\u4ef6\u50ac\u5316\uff0c\u884c\u60c5\u5ef6\u7eed\u6027\u4f9d\u8d56\u5185\u751f\u8d44\u91d1\u63a5\u529b\u3002\n\n### \u516d\u3001\u98ce\u9669\u63d0\u793a \n\u9700\u8b66\u60d5\uff1a\u2460 \u79d1\u521b50\u5355\u65e5\u6da8\u5e45\u8fc7\u5927\u540e\u7684\u77ed\u671f\u83b7\u5229\u56de\u5410\u538b\u529b\uff1b\u2461 \u65b0\u80fd\u6e90\u7535\u6c60\u94fe\u8d1f\u53cd\u9988\u6269\u6563\u81f3\u6574\u4e2a\u7535\u65b0\u677f\u5757\uff1b\u2462 \u6210\u4ea4\u989d\u653e\u5927\u4f46\u6caa\u6df1300\u5fae\u8dcc\uff0c\u663e\u793a\u6307\u6570\u5931\u771f\u98ce\u9669\u4e0a\u5347\uff0c\u90e8\u5206\u4e2a\u80a1\u6d41\u52a8\u6027\u5206\u5c42\u52a0\u5267\u3002\n\n### \u4e03\u3001\u7b56\u7565\u8ba1\u5212 \n\u5747\u8861 \ud83d\udfe1 \n\u4ed3\u4f4d\u5efa\u8bae\u7ef4\u63016\u20137\u6210\uff0c\u91cd\u70b9\u5411\u534a\u5bfc\u4f53\u8bbe\u5907\u3001\u5148\u8fdb\u5c01\u88c5\u3001\u6c22\u80fd\u6838\u5fc3\u90e8\u4ef6\u7b49\u6709\u8ba2\u5355\u9a8c\u8bc1\u7684\u7ec6\u5206\u65b9\u5411\u503e\u659c\uff0c\u56de\u907f\u9ad8\u5e93\u5b58\u3001\u4f4e\u6bdb\u5229\u7684\u7535\u6c60\u6750\u6599\u73af\u8282\u3002 \n\u89e6\u53d1\u5931\u6548\u6761\u4ef6\uff1a\u82e5\u660e\u65e5\u79d1\u521b50\u51b2\u9ad8\u56de\u843d\u4e14\u8dcc\u78341560\u70b9\uff0c\u6216\u521b\u4e1a\u677f\u6307\u653e\u91cf\u8dcc\u78343650\u70b9\uff0c\u5219\u964d\u4ed3\u81f35\u6210\u4ee5\u4e0b\u5e76\u6682\u505c\u79d1\u6280\u4e3b\u9898\u52a0\u4ed3\u3002 \n\u5efa\u8bae\u4ec5\u4f9b\u53c2\u8003\uff0c\u4e0d\u6784\u6210\u6295\u8d44\u5efa\u8bae\u3002", "refusal": null, "role": "assistant", "annotations": null, "audio": null, "function_call": null, "tool_calls": null}}], "created": 1777808153, "model": "qwen-plus", "object": "chat.completion", "service_tier": null, "system_fingerprint": null, "usage": {"completion_tokens": 710, "prompt_tokens": 973, "total_tokens": 1683, "completion_tokens_details": null, "prompt_tokens_details": {"audio_tokens": null, "cached_tokens": 0}}}
19:36:08 - LiteLLM:INFO: utils.py:1656 - Wrapper: Completed Call, calling success_handler
2026-05-03 19:36:08 | INFO | D:\Programs\python311\Lib\site-packages\litellm\utils.py:1656 | Wrapper: Completed Call, calling success_handler
19:36:08 - LiteLLM:DEBUG: cost_calculator.py:1130 - selected model name for cost calculation: openai/qwen-plus
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1130 | selected model name for cost calculation: openai/qwen-plus
19:36:08 - LiteLLM:DEBUG: litellm_logging.py:1991 - Logging Details LiteLLM-Success Call: Cache_hit=None
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:1991 | Logging Details LiteLLM-Success Call: Cache_hit=None
19:36:08 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
19:36:08 - LiteLLM:DEBUG: cost_calculator.py:1130 - selected model name for cost calculation: openai/qwen-plus
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1130 | selected model name for cost calculation: openai/qwen-plus
19:36:08 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:36:08 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
19:36:08 - LiteLLM:DEBUG: cost_calculator.py:1609 - litellm.cost_calculator.py::completion_cost() - Error calculating cost for model=openai/qwen-plus - This model isn't mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1609 | litellm.cost_calculator.py::completion_cost() -
Error calculating cost for model=openai/qwen-plus - This model isn't mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
19:36:08 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:36:08 - LiteLLM:DEBUG: cost_calculator.py:1130 - selected model name for cost calculation: qwen-plus
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1130 | selected model name for cost calculation: qwen-plus
19:36:08 - LiteLLM:DEBUG: cost_calculator.py:1609 - litellm.cost_calculator.py::completion_cost() - Error calculating cost for model=openai/qwen-plus - This model isn't mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1609 | litellm.cost_calculator.py::completion_cost() -
Error calculating cost for model=openai/qwen-plus - This model isn't mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
19:36:08 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
19:36:08 - LiteLLM:DEBUG: cost_calculator.py:1130 - selected model name for cost calculation: qwen-plus
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1130 | selected model name for cost calculation: qwen-plus
19:36:08 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:36:08 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
19:36:08 - LiteLLM:DEBUG: cost_calculator.py:1609 - litellm.cost_calculator.py::completion_cost() - Error calculating cost for model=qwen-plus - This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1609 | litellm.cost_calculator.py::completion_cost() -
Error calculating cost for model=qwen-plus - This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
19:36:08 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:36:08 - LiteLLM:DEBUG: cost_calculator.py:1130 - selected model name for cost calculation: openai/qwen-plus
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1130 | selected model name for cost calculation: openai/qwen-plus
19:36:08 - LiteLLM:DEBUG: cost_calculator.py:1609 - litellm.cost_calculator.py::completion_cost() - Error calculating cost for model=qwen-plus - This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1609 | litellm.cost_calculator.py::completion_cost() -
Error calculating cost for model=qwen-plus - This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
19:36:08 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
19:36:08 - LiteLLM:DEBUG: cost_calculator.py:1130 - selected model name for cost calculation: qwen-plus
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1130 | selected model name for cost calculation: qwen-plus
19:36:08 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:36:08 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
19:36:08 - LiteLLM:DEBUG: cost_calculator.py:1609 - litellm.cost_calculator.py::completion_cost() - Error calculating cost for model=openai/qwen-plus - This model isn't mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1609 | litellm.cost_calculator.py::completion_cost() -
Error calculating cost for model=openai/qwen-plus - This model isn't mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
19:36:08 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
19:36:08 - LiteLLM:DEBUG: litellm_logging.py:1555 - response_cost_failure_debug_information: {'error_str': "This model isn't mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.", 'traceback_str': 'Traceback (most recent call last):\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5666, in _get_model_info_helper\n raise ValueError(\nValueError: This model isn\'t mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json\\n\\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\litellm_core_utils\\litellm_logging.py", line 1536, in _response_cost_calculator\n response_cost = litellm.response_cost_calculator(\n
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1729, in response_cost_calculator\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1712, in response_cost_calculator\n
response_cost = completion_cost(\n ^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1622, in completion_cost\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1615, in completion_cost\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1494, in completion_cost\n ) = cost_per_token(\n ^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 506, in cost_per_token\n return openai_cost_per_token(\n ^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\llms\\openai\\cost_calculation.py", line 35, in cost_per_token\n return generic_cost_per_token(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\litellm_core_utils\\llm_cost_calc\\utils.py", line 640, in generic_cost_per_token\n model_info = get_model_info(model=model, custom_llm_provider=custom_llm_provider)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5941, in get_model_info\n _model_info = _get_model_info_helper(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5854, in _get_model_info_helper\n raise Exception(\nException: This model isn\'t mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.\\n', 'model': 'openai/qwen-plus', 'cache_hit': False, 'custom_llm_provider': 'openai', 'base_model': None, 'call_type': 'completion', 'custom_pricing': False}
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:1555 | response_cost_failure_debug_information: {'error_str': "This model isn't mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.", 'traceback_str': 'Traceback (most recent call last):\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5666, in _get_model_info_helper\n raise ValueError(\nValueError: This model isn\'t mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json\\n\\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\litellm_core_utils\\litellm_logging.py", line 1536, in _response_cost_calculator\n response_cost = litellm.response_cost_calculator(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1729, in response_cost_calculator\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1712, in response_cost_calculator\n response_cost = completion_cost(\n ^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1622, in completion_cost\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1615, in completion_cost\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1494, in completion_cost\n ) = cost_per_token(\n ^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 506, in cost_per_token\n return openai_cost_per_token(\n ^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\llms\\openai\\cost_calculation.py", line 35, in cost_per_token\n return generic_cost_per_token(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\litellm_core_utils\\llm_cost_calc\\utils.py", line 640, in generic_cost_per_token\n model_info = get_model_info(model=model, custom_llm_provider=custom_llm_provider)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5941, in get_model_info\n _model_info = _get_model_info_helper(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5854, in _get_model_info_helper\n raise Exception(\nException: This model isn\'t mapped yet. model=openai/qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.\\n', 'model': 'openai/qwen-plus', 'cache_hit': False, 'custom_llm_provider': 'openai', 'base_model': None, 'call_type': 'completion', 'custom_pricing': False}
19:36:08 - LiteLLM:DEBUG: cost_calculator.py:1609 - litellm.cost_calculator.py::completion_cost() - Error calculating cost for model=qwen-plus - This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
2026-05-03 19:36:08 | INFO | src\market_analyzer.py:301 | [大盘] 复盘报告生成成功,长度: 1027 字符
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\cost_calculator.py:1609 | litellm.cost_calculator.py::completion_cost() -
Error calculating cost for model=qwen-plus - This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.
19:36:08 - LiteLLM:DEBUG: litellm_logging.py:1555 - response_cost_failure_debug_information: {'error_str': "This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.", 'traceback_str': 'Traceback (most recent call last):\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5666, in _get_model_info_helper\n raise ValueError(\nValueError: This model isn\'t mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json\\n\\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\litellm_core_utils\\litellm_logging.py", line 1536, in _response_cost_calculator\n response_cost = litellm.response_cost_calculator(\n
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1729, in response_cost_calculator\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1712, in response_cost_calculator\n response_cost = completion_cost(\n ^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1622, in completion_cost\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1615, in completion_cost\n
raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1494, in completion_cost\n ) = cost_per_token(\n
^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 506, in cost_per_token\n return openai_cost_per_token(\n ^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\llms\\openai\\cost_calculation.py", line 35, in cost_per_token\n return generic_cost_per_token(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\litellm_core_utils\\llm_cost_calc\\utils.py", line 640, in generic_cost_per_token\n model_info = get_model_info(model=model, custom_llm_provider=custom_llm_provider)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5941, in get_model_info\n _model_info = _get_model_info_helper(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5854, in _get_model_info_helper\n raise Exception(\nException: This model isn\'t mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.\\n', 'model': 'qwen-plus', 'cache_hit': None, 'custom_llm_provider': 'openai', 'base_model': None, 'call_type': 'completion', 'custom_pricing': False}
2026-05-03 19:36:08 | INFO | src\market_analyzer.py:691 | ========== 大盘复盘分析完成 ==========
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:1555 | response_cost_failure_debug_information: {'error_str': "This model isn't mapped yet. model=qwen-plus, custom_llm_provider=openai. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json.", 'traceback_str': 'Traceback (most recent call last):\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5666, in _get_model_info_helper\n raise ValueError(\nValueError: This model isn\'t mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json\\n\\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\litellm_core_utils\\litellm_logging.py", line 1536, in _response_cost_calculator\n response_cost = litellm.response_cost_calculator(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1729, in response_cost_calculator\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1712, in response_cost_calculator\n response_cost = completion_cost(\n ^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1622, in completion_cost\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1615, in completion_cost\n raise e\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 1494, in completion_cost\n ) = cost_per_token(\n ^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\cost_calculator.py", line 506, in cost_per_token\n return openai_cost_per_token(\n ^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\llms\\openai\\cost_calculation.py", line 35, in cost_per_token\n return generic_cost_per_token(\n ^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\litellm_core_utils\\llm_cost_calc\\utils.py", line 640, in generic_cost_per_token\n
model_info = get_model_info(model=model, custom_llm_provider=custom_llm_provider)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "D:\\Programs\\python311\\Lib\\site-packages\\litellm\\utils.py", line 5941, in get_model_info\n _model_info = _get_model_info_h19:36:08 - LiteLLM:DEBUG: utils.py:5570 - checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5570 | checking potential_model_names in litellm.model_cost: {'split_model': 'qwen-plus', 'combined_model_name': 'openai/qwen-plus', 'stripped_model_name': 'qwen-plus', 'combined_stripped_model_name': 'openai/qwen-plus', 'custom_llm_provider': 'openai'}
2026-05-03 19:36:08 | INFO | src\core\market_review.py:97 | 大盘复盘报告已保存: E:\stock\daily_stock_analysis\reports\market_review_20260503.md
19:36:08 - LiteLLM:DEBUG: utils.py:5853 - Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\utils.py:5853 | Error getting model info: This model isn't mapped yet. Add it here - https://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json
2026-05-03 19:36:08 | INFO | src\notification.py:1623 | 正在向 1 个渠道发送通知:自定义Webhook
19:36:08 - LiteLLM:DEBUG: litellm_logging.py:4923 - Model=qwen-plus is not mapped in model cost map. Defaulting to None model_cost_information for standard_logging_payload
2026-05-03 19:36:08 | DEBUG | D:\Programs\python311\Lib\site-packages\litellm\litellm_core_utils\litellm_logging.py:4923 | Model=qwen-plus is not mapped in model cost map. Defaulting to None model_cost_information for standard_logging_payload
2026-05-03 19:36:09 | INFO | src\notification_sender\custom_webhook_sender.py:68 | 自定义 Webhook 1(钉钉)推送成功
2026-05-03 19:36:09 | INFO | src\notification_sender\custom_webhook_sender.py:85 | 自定义 Webhook 推送完成:成功 1/1
2026-05-03 19:36:09 | INFO | src\notification.py:1693 | 通知发送完成:成功 1 个,失败 0 个
2026-05-03 19:36:09 | INFO | src\core\market_review.py:108 | 大盘复盘推送成功
2026-05-03 19:36:09 | INFO | main.py:524 |
===== 分析结果摘要 =====
2026-05-03 19:36:09 | INFO | main.py:527 | 🟢 宁德时代(300750): 买入 | 评分 69 | 看多
2026-05-03 19:36:09 | INFO | main.py:532 |
任务执行完成
2026-05-03 19:36:19 | INFO | main.py:578 | 开始自动回测...
2026-05-03 19:36:19 | INFO | main.py:586 | 自动回测完成: processed=0 saved=0 completed=0 insufficient=0 errors=0
2026-05-03 19:36:19 | INFO | main.py:940 |
程序执行完成
2026-05-03 19:36:19 | DEBUG | D:\Programs\python311\Lib\asyncio\proactor_events.py:633 | Using proactor: IocpProactor
2026-05-03 19:36:19 | DEBUG | src\storage.py:709 | 数据库引擎已清理
PS E:\stock\daily_stock_analysis>
PS E:\stock\daily_stock_analysis>
PS E:\stock\daily_stock_analysis>
PS E:\stock\daily_stock_analysis>
PS E:\stock\daily_stock_analysis>