
做这个项目之前我先花两周时间反复研究了一个问题市面上的AI炒股助手已经够多了为什么大家用完之后还是觉得“不如自己拍脑袋”原因其实很朴素——大多数所谓AI本质上是把各路研报、热搜、大V观点拼成一个“看起来很有道理”的摘要接着丢给你一个结论。这个结论从哪来、逻辑链在哪、有没有人唱反调、数据是否过期它一概不管。换句话说它只会复读不会思考。所以当朋友跟我说“他给A股装了个会辩论的AI”时我第一反应是眼前一亮。这个项目的核心不是“预测涨跌”而是让AI像法庭辩论一样正反双方围绕同一只股票、同一个事件来回交锋最后给出经过对抗验证的结论。这个思路对AI Agent应用开发、对大模型落地到投资场景都是一个值得拆解的样本。这篇文章我会把背后完整的架构设计、Prompt设计、防幻觉手段、以及我实测过程中踩过的坑全部梳理出来希望能给正在做类似AI Agent项目的朋友一些可复用的参考。1. 项目整体思路拆解为什么股市AI需要“辩论”而不是“问答”1.1 行情数据的特殊场景决定了单次生成必然失真先把话说明白——A股这个场景对AI极不友好比写文案、写代码难得多。文案写错了可以改代码报错了能调试但投资决策面对的是一个信息高度不对称、噪音极多、且结果无法即时验证的复杂系统。举个最典型的例子。如果你直接问一个大模型“帮我分析一下某只消费股现在能不能买”它会怎么做它大概率会把网上能找到的券商研报、股吧讨论、公众号文章糅合在一起给你输出一段四平八稳的“谨慎看好”。这种回答有两个致命问题第一它不会告诉你观点的来源是否可靠不同的信息源互相矛盾时它也不会自己掐架第二它天然倾向于“顺着用户的话说”用户语气偏多它就偏多语气偏空它就偏空。这在心理学上叫阿谀效应在工程上其实是模型对齐机制带来的副作用。而“辩论”机制恰恰是在结构上对抗这种失真。让AI同时扮演多方和空方双方围绕同一个标的展开攻防——多方说基本面改善空方就质疑现金流恶化空方说估值过高多方就反诘成长性溢价——这样逼出来的结论不再是一条没有棱角的平滑曲线而是带着博弈痕迹的、可追溯逻辑链的交锋结果。1.2 “会辩论”的AI到底在解决什么痛点从我实际使用体验来看这个项目的核心价值有两个层面。第一层是解决“立场偏颇”问题。散户看股票天然有持仓偏见——买了就希望它涨于是满眼都是利好坏消息自动过滤。AI如果只是辅助生成观点它学不到你的持仓容易被你带节奏但如果你强制它正反都要说它就必须把利空因素全部摆出来哪怕你不想看。第二层是解决“逻辑验证”问题。普通的AI问答只给结论辩论模式则要求每一个论点都要附带证据链。多方说“行业景气度提升”就要指出具体是哪个数据、哪个季度、同比还是环比空方说“估值太贵”就要对比历史分位和同业水平。当双方都把自己暴露在可证伪的框架下胡说八道的空间就被压缩了。我用一句话概括这个项目的设计哲学它不是在替你做决策而是逼你在正反论证中自己做决策。这个定位很聪明因为AI真正能提供的不是确定性而是结构化的、多维度的信息对抗结果。1.3 什么人适合参考这个项目如果你属于以下三类人群这个案例的参考价值会非常大一是AI应用开发者尤其是做Agent类应用的。这个项目展示如何通过多角色协同多方Agent、空方Agent、裁判Agent、数据核查Agent来提升输出质量而不是单模型死磕。二是对量化投资或智能投顾感兴趣的个人投资者。你不一定需要完整复刻但理解“多空争辩”这一套逻辑能帮你判断市面上那么多AI荐股工具到底哪些在认真处理矛盾信息哪些只是套了个大模型壳子。三是大模型产品经理。辩论机制的Prompt编排思路、防幻觉的数据约束方式、多轮对抗的终止策略这些设计思想可以直接迁移到法律文书审阅、医疗诊断辅助、舆情分析等需要严谨判断的领域。2. 核心架构设计多智能体协同的“对抗式分析引擎”2.1 整体角色拆解六个Agent各管一段这个项目给我的第一印象是“把法庭搬进了代码里”。整个系统由六个各司其职的Agent组成我按实际运转流程列出来你感受一下多方Agent多头辩护人只负责搜集和整理看涨逻辑包括基本面改善、行业催化、资金流入、技术形态突破等。空方Agent空头辩护人只负责拆台紧盯财报瑕疵、解禁压力、估值泡沫、舆情风险、流动性隐患等。数据核查Agent证据检验员负责核实双方引用的每一个数据指标检查数据来源、统计口径、时效性对“张冠李戴”和“偷换概念”直接打回。裁判Agent主审法官负责组织辩论节奏控制轮次最后依据双方论据质量而非持仓偏好给出带权重的裁决意见。风险控制Agent庭外监管专门检查输出内容里有没有违规荐股风险、有没有可能导致用户误判的极端表述、有没有超过知识截止日期的过期信息。用户代理Agent委托人代表把用户输入的持仓、风格偏好、风险承受能力转化为辩论议题让辩论不跑偏。这六个角色不是六个独立的模型实例在跑而是通过一个编排层统一调度底层共享同一个大模型底座我测试时用的DeepSeek和GPT-4o都跑通过靠System Prompt把不同角色的思维方式、价值倾向、说话风格区分开。这个设计最大的好处是——不需要同时部署6个模型成本可控而且在模型升级时只需要替换底座角色逻辑完全不用动。2.2 为什么采用“对抗生成”而不是“单一生成”刚开始我怀疑过这个方案为什么不干脆让一个Agent把正反观点一起写出来那样不是更省事吗后来实测发现一次生成的正反观点质量跟多轮对抗出来的完全不是一个量级。原因在于上下文注意力机制。当指令是“写正反两面观点”时模型容易把篇幅均分每个论点都浅尝辄止而当指令是“你只管找多方论据找出5条以上每一条都要有数据支撑”时模型的注意力会高度聚焦在一个方向上挖得深得多。对抗过程中一方提出新的论点另一方必须回应而不是回避这种“被追问”的机制会强制模型不断检索自身知识库里的反例从而激发出更多有信息量的内容。我打个比方你让一个学生自己写一篇关于“要不要考研”的议论文他可能写800字的套话但你组织一场辩论赛正方说完立论反方必须针对正方的每一条立论找出漏洞并反驳双方为了赢就必须把论据挖得更扎实。辩论型AI的逻辑就是这个。2.3 数据接入层辩论不能建立在“想象”之上再强调一个关键设计——辩论型AI的输入不能只靠大模型的预训练知识。A股是一个高度时效性的市场昨天的涨停原因、今天的龙虎榜数据、明天凌晨的美联储议息结果都实时影响行情。大模型的知识截止日期决定了它无法感知这些因此必须外接实时数据层。这个项目的数据接入分了三层第一层是行情快照主要接的是个股的历史K线、成交量、换手率、涨跌幅等标准化行情数据。这些数据用于技术面的辩论素材比如多方可以说“放量突破60日均线”空方可以说“此处缩量滞涨量价背离”。第二层是基本面数据包括定期报告中的营收、净利润、毛利率、经营现金流、负债率等。这一层是辩论的硬通货空方最喜欢拿“应收账款增速远高于营收增速”这类指标说事数据核查Agent也主要在这一层把关。第三层是舆情与资讯流包括公司公告、券商研报、主流财经媒体的新闻、以及经过过滤的社区讨论。这层最丰富也最危险——噪音多、谣言也多所以数据核查Agent会在这里做一道“来源可信度分级”官方公告权重最高研报次之论坛帖子权重最低相互冲突时以高权重来源为准。2.4 完整工作流一个决策请求的七步旅程我把一次完整的运行流程模拟了一遍你会发现这已经不是在“聊天”而是在跑一条自动化流水线。第一步用户输入想分析的股票代码或名称以及一句诉求比如“帮我分析一下这个票最近能不能关注”。第二步用户代理Agent把诉求标准化提取出代码、时间范围、分析维度基本面/技术面/消息面补全缺失参数后交给调度核心。第三步调度核心并行唤醒多方Agent和空方Agent同时从数据接入层拉取最新数据包分发给他们。两名“律师”开始撰写各自的立论陈词并罗列出准备引用的证据清单。第四步数据核查Agent介入对双方引用的每一个数据点验真。常见操作包括核对营收同比增长率是否与财报一致、确认某条公告是否存在、检验“今日主力资金净流入”是否与数据源吻合。核查不通过的论据会被打回重写。第五步进入至少三轮辩论循环。第一轮双方立论第二轮互相驳斥第三轮针对对方最有力的论据做最后攻防。每一轮都由裁判Agent控制流程当一方无法回应对方的核心质疑时该论点会被标记为“存疑”。第六步裁判Agent汇总辩论记录输出带有置信度评级的综合裁决书。裁决书包含多空双方的核心论点、争议焦点、论据质量评分以及“当前信息不足以判断的盲区”。第七步风险控制Agent做最后审查确保输出中没有“明天必涨”“目标价XX元”这类绝对化表述没有缺乏时效标注的数据引用然后才把结果呈现给用户。3. 实操过程从Prompt编排到系统落地的关键细节3.1 Prompt编排示范我实测下来效果最好的一套结构Prompt是这个项目成败的胜负手。我在实际调试中总结了三个要点角色隔离要彻底、论据要求要具体、规则边界要写死。给你看一套我调校后的Prompt骨架你直接往里套内容就能用。多方Agent的System Prompt核心代码如下示意你是【多方辩护人Agent】你的唯一目标是从看涨视角分析目标标的。 你必须遵守以下规则 1. 所有论点必须基于【数据包】中的真实数据禁止编造数据。 2. 每个论点必须包含至少一条可验证的证据格式为结论 证据来源 数据数值。 3. 面对空方质疑时只能通过数据回应禁止回避或转移话题。 4. 如果找不到足够的多方论据必须明确承认当前数据不支持看涨而不是强行编造。 5. 输出的语言必须克制禁止出现“必定”“稳赚”“暴涨”等绝对化词汇。空方Agent的Prompt只是把立场反转规则完全一致。这里最关键的是第4条——允许Agent“承认自己找不到论据”。这一步在我实测中极大提升了可信度。因为当模型被允许承认“这个逻辑目前缺乏数据支撑”时它的主幻觉渠道会被堵掉一半。裁判Agent的Prompt则需要额外加入对抗规则你【裁判Agent】负责组织辩论。你需要遵守 1. 在每一轮结束后指出当前双方论据的薄弱环节要求针对薄弱点继续交锋。 2. 对双方引用的数据你有权调用【数据核查Agent】进行抽验。 3. 最终裁决必须以【论据密度】【数据准确度】【逻辑自洽度】三维度评分不允许以观点立场本身作为评判依据。 4. 裁决书必须输出核心争议点最多5条、双方优势论据各3条、当前无法判断的盲区至少2条、以及带置信水平的多空偏向结论。3.2 辩论轮数与终止策略成本和质量的最佳平衡点多轮辩论不是越多越好。我实测过2轮、3轮、4轮、5轮四种配置对比结果很有意思2轮辩论时信息密度明显不足双方还没有充分交锋就草草收场裁决书质量跟普通问答拉不开差距到3轮时质量提升最明显基本能覆盖双方主要分歧继续增加到4轮、5轮新增的辩论回合大多在重复已有论据边际收益趋近于零但token消耗却线性上涨。最终我把默认轮次锁定在3轮同时加入两个动态终止条件一是当裁判Agent判定“双方已无新增有效论据”时允许提前结束二是当数据核查Agent发现双方引用的核心数据出现不可调和的分歧时强制进入第四轮专项辩论。成本数据也给你一个参考用DeepSeek作为底座、单只股票分析一次、完整跑5轮辩论大约消耗1.8万到2.5万token单次成本不到0.1元用GPT-4o则大约是0.8到1.5元。所以“辩论式”分析不是不能商用关键在于底座模型选型和轮次控制而不是无脑堆参数。3.3 防幻觉三板斧数据约束、来源标注、核查回环做AI投资类应用最大的噩梦就是AI一本正经地编造数据。我在这个项目里踩过很多次坑最后总结出防幻觉的三板斧第一板斧是数据硬约束。系统强制要求Agent的每一个论点必须引用数据包内的信息数据包之外的论据不能上会。实现方式是构建一个结构化的调取接口Agent想要引用任何数据必须通过特定的函数调用去取数而不是直接在自己脑子里“回忆”数据。取数的过程天然留痕之后核查Agent就可以逐个核对调用记录与论点之间的对应关系。第二板斧是引用来源标注。每一轮辩论输出后系统会自动把所有论点中的证据提取出来生成一张“证据引用表”旁边就是对应的数据文件和出处。用户在看裁决书时可以直接从“多方论点3”跳到“证据表第4行”看到那条“营收同比增长23.5%”是从哪个财报文件里来的。这种透明性本身就是一种威慑让Agent不敢乱编。第三板斧是核查回环。数据核查Agent对关键论点的核验不是一次性的而是回环式——首先核验数据真实性其次核验统计口径是同比还是环比是归母净利润还是扣非净利润最后核验时效性数据截止日期是否与当前时间匹配。三步全过才可以在裁决书中标记为“证据可信”任何一步不过该论点会被移出辩论记录并触发补辩流程。这三板斧叠加下来我在200条测试用例上的数据编造率从初始版本的32%降到了3%以内。这个数值得你自己去测但方向是确定的防幻觉的核心不在模型本身而在工程约束机制。3.4 针对A股特征的规则适配A股有些特殊的市场规则是模型不知道的必须在系统层面预设成规则参数。这个项目在这方面做了几个我很认可的规定第一是T1制度对“止盈止损信号”解读的影响。大模型如果只看盘面可能会给出“次日买入次日卖出”之类的建议这在A股根本不可执行。所以系统内置了一个交易日历模块所有涉及“买入/卖出时机”的表述必须经过该模块校验跨日操作自动标注“T1限制”。第二是涨跌停板制度下的流动性判断。当目标标的处于涨停或跌停状态时普通的技术分析指标会失真。系统识别到涨跌停状态后会给双方Agent下发一条特殊规则——禁止基于当日K线形态做技术面论述。这一条看着简单但在实测中减少了大量误导性输出。第三是财报披露期的数据切换逻辑。A股财报有严格的披露窗口系统会根据当前日期自动判断“已经披露的最新报告期”避免出现“一季度还没结束就开始引用一季报数据”的低级错误。这个逻辑是纯规则代码实现的不依赖模型判断准确率稳定在100%。4. 实测复盘真实案例分析、常见问题与排障心得4.1 一个完整的实测案例某新能源材料股的辩论输出为了让你直观感受这套系统的输出形态我贴一段脱敏处理后的实测结果。分析对象是某新能源材料公司匿名处理触发了一个非常典型的“多空分歧极大”的场景。多方Agent的立论核心是“公司最新季报营收同比增长41%同时电解液出货量环比提升18%价格端虽然下滑但销量对冲明显基本面处于景气上行期。”并且附上了具体的数据来源编号。空方Agent的反驳没有纠缠营收增速而是直接点向现金流“尽管营收增长41%但经营性现金流同比下滑37%应收账款占总资产比例抬升至五年最高水平。利润增长的背后是回款质量恶化存在虚增收入的隐患。”第二轮交锋更精彩。多方用“行业扩产周期接近尾声、供需格局有望改善”来回应空方的悲观预期空方则立刻扒出该公司在建工程余额同比增长62%的公告数据论证“你嘴上说扩产周期尾声自己的在建工程却创了新高言行不一致”。这种针锋相对的回应是单次生成式AI极难输出的因为模型需要同时理解财报术语、行业周期、以及前后论点的逻辑矛盾点难度比单向写逻辑高一个量级。经过三轮交锋后裁判Agent给出的裁决是基本面存在分歧多方论据的证据密度略占优但空方关于经营性现金流的质疑属于“关键盲区”当前披露信息不足以完全证伪最终给出“中性偏多、但需等待下一个季报验证现金流改善”的结论置信水平标注为“中”。这个结论本身不带方向性诱导但价值在于把“为什么有人看多、为什么有人看空”交锋得清清楚楚。4.2 高频踩坑问题清单与排查实录我把实测中遇到的高频问题整理成一张速查表你在自己复刻时可以直接跳过这些坑问题现象根因分析解决办法多方和空方观点高度雷同共用了同一套底层模型角色隔离不彻底在System Prompt中加入“禁止使用对方立场的用词/句式”的硬性约束并在每轮辩论后让裁判对比双方论据的语义相似度超过阈值强制重新生成空方Agent编造不存在的利空公告模型不知道“自己不知道什么”被反驳压力逼急了容易编启用数据核查Agent的“公告验真”功能未匹配到官方公告的论断直接作废而不是修改措辞重新提交辩论到第4轮开始复读上下文窗口被占用模型遗忘前几轮的细节调整辩论机制每轮结束后让裁判Agent先写一份“当前焦点摘要”下一轮Agent只基于摘要新增数据发言避免全文重读输出带有主观推荐色彩大模型的通用对齐机制倾向于“给用户一个肯定的答案”在风控Agent中加入“确定性等级”强制标注凡是预测类内容必须附带数据截止日期和推理置信度没有数据支撑的判断一律标记为“推测”API调用超时或token溢出多轮辩论累积的上下文过长采用“分轮截断摘要压缩”策略把上一轮的辩论内容压缩为300字以内的结构化纪要再进入下一轮4.3 关于“AI幻觉”的三次亲身体验我在调这个项目时遇到过三次印象特别深刻的幻觉事故每次都是宝贵的反面教材。第一次是空方Agent在辩论中引用了一条“公司在某省有一块地涉嫌违规被收储”的消息来源标了一个网络社区讨论帖。数据核查Agent发现仅有该帖子一个来源无官方公告佐证随即打回。这让我意识到一个规律在对抗压力下模型被逼到墙角时倾向于“编一个合理的解释”而不是承认自己不知道——这种心理放在AGI上是个大问题。第二次是多方Agent引用的“北向资金持续三日净流入该股”实际上当日北向资金休市数据源根本没有更新。这显然不是模型故意撒谎而是数据层与行情层的时间不同步。排障后发现是调度模块没有把休市状态同步给数据包。解决方法是把“交易日历状态”“北向资金开放状态”这类全局信息在每次调度开始时广播给所有Agent。第三次最典型裁判Agent在裁决书上把多方的第二条论据误标成了“已经过数据核查通过”但该论据实际上根本没有进入核查队列。这个问题的根源是流程状态管理不严谨后续改为“未核查的论据在裁决书上一律打上‘待核验’标签且不可作为最终裁决的依据”。这一步改动之后整个系统的严谨性上了一个台阶。5. 复盘与扩展思考这套架构还能迁移到哪里5.1 从A股到更多场景的复用思路做完了A股这个场景我最大的感受是“多智能体对抗式分析”这件事本身就是可迁移的资产。换个壳它可以干很多活。法律领域就是很典型的迁移场景。原告方Agent和被告方Agent围绕一个案件事实轮流举证和质证法规核查Agent负责对照法条原文裁判Agent输出“争议焦点清单双方证据力对比法律适用倾向”。这套架构跟A股辩论几乎一模一样只需要把数据源从财报换成案例库和法条库。医疗诊断辅助场景也可以迁移。影像科Agent提出初步判断临床科室Agent提出反证这个症状更像另一种病文献核查Agent负责检索最新诊疗指南最终输出“鉴别诊断报告”。当然医疗场景的容错率极低AI只能做辅助但对抗式检验本身就是鉴别诊断的核心思维模式。再小一点企业内部的方案评审也能用。产品Agent和市场Agent互相挑战对方提案的数据基础技术Agent核查可行性评审Agent输出带风险权重的决议报告。这种“激进提问、建设性反驳”的环境比开会时一群人碍于面子不提反对意见有效得多。5.2 我个人的几条实战体会项目做到后期我沉淀下来几条特别想分享的体会。第一对抗的质量取决于“对抗规则”而不是“模型智商”。同一个底座模型你只是塞给它一套“必须反驳对方每条论点、且论点必须带数据来源”的规则输出质量天花板就能提高一大截。这其实在暗示一件事大模型时代工程设计的价值可能比模型本身更大。第二允许Agent“认怂”是提升整体可信度的关键。当多方Agent发现自己找不到更多看涨逻辑时系统允许它直接说“当前数据不支持看涨”——这比强行编一条“长期看好”有价值得多。一个敢于承认无知的AI才是一个值得信任的AI。第三所有输出必须经过程序化的边界校验不能完全相信模型自律。像涨跌停状态、财报披露窗口这类规则用代码写死比让模型理解靠谱一万倍。模型负责“思考”代码负责“底线”这个分工一定要明确。5.3 未来可以继续做的几个方向这个项目目前跑通的基础版本还有不少可延展的空间。正在考虑的方向包括把辩论结果的置信度与历史回测数据做关联让系统自己学习“什么类型的辩论分歧往往预示着什么方向”引入更长周期的基本面数据源让空方Agent有能力做跨年度的财务异常检测以及把辩论结果沉淀成结构化数据库方便做量化策略的二次开发。另外一个很有意思的方向是“辩论记忆”。理论上让AI记住上次针对同一只股票辩论时的结论下一次关注该股时自动调用历史辩论记录做“前次质疑点是否已解除”的追踪分析。如果这个功能做出来它就不再只是一个问答工具而是一个持续跟踪市场的分析员了。我在实际开发中体会最深的一件事是不要把“会辩论”理解为一种花哨的技巧它本质上是一种质量管理手段——通过强制性的立场碰撞和证据检验把AI输出中不靠谱的部分提前过滤掉。这种思路在任何需要严谨判断的场景里都适用。希望这篇拆解能帮你少走一些弯路也欢迎对多Agent架构感兴趣的朋友一起交流迭代方向。