![]()
LLM写市场评论有个老毛病——没看数据也能说得头头是道。闲聊无所谓,但做产品功能、内部工具,用户真信了就是事故。
这篇指南教你搭一个金融助手:用MCP协议(模型上下文协议)拉取真实数据,Python算指标,LLM只负责把算好的事实讲清楚。不发明数字,不做数学题,只当"播音员"。
最终产出两个能直接塞进产品流程的模块:单只股票市场简报,以及对比多只股票波动率和回撤的观察清单。所有工具调用都有迹可循,用了什么数据一目了然。
MCP到底是什么,为什么能省掉一堆胶水代码
MCP解决的是工具集成的标准化问题。以前每换个数据源就要重写一遍封装层,现在MCP服务器把工具暴露成统一格式,应用端自动发现、直接调用。
对产品经理来说,这意味着集成成本可控。工具发现可预测,技术栈换了不用重写wrapper,模型层和数据层彻底解耦。
本教程的数据层用的是EOD Historical Data(EODHD),一家市场数据供应商。他们的MCP服务器暴露了价格和基本面工具,助手需要时直接调用。
![]()
关键前提:这里的MCP服务器纯粹当数据入口用。模型不决定调哪个工具、传什么参数——这些由代码硬编码,确保结果可复现。
"播音员"架构:让LLM只动嘴,不动手
整个系统分三层:MCP客户端封装、助手核心逻辑、 narration输出。数据流是单向的:工具调用→确定性计算→LLM润色。
客户端层(client.py)处理MCP服务器连接、工具发现、异步调用。核心层(core.py)包含7个模块:预算与追踪日志、请求解析、价格和基本面工具封装、确定性指标计算、观察清单工具、事实对象与narration、以及编排函数run_assistant()。
预算机制是个实用设计。每次调用前检查token消耗和API调用次数,防止跑飞。追踪日志则记录完整的工具调用链,方便审计。
指标计算全部用pandas和numpy完成。年化波动率、最大回撤、夏普比率——这些数字是算出来的,不是问出来的。LLM拿到的只是格式化后的事实对象。
两个Demo:从单股简报到多股对比
![]()
Demo 1输入一个股票代码,输出市场简报。流程:调用价格工具→计算20日波动率和52周回撤→查基本面→LLM用固定模板生成三段式评论。全程约4次API调用,耗时3秒内。
Demo 2处理观察清单。输入多个代码,并行拉取数据,计算横向对比指标。输出表格+文字解读,突出波动率分位和回撤排名。适合盘前快速扫一眼持仓风险。
两个Demo都保留了原始工具调用记录。用户点一下就能看到"这个数字来自哪次API返回", debug和产品演示都很方便。
能直接上线吗?还差点什么
当前版本是MVP级别。已具备:确定性的指标计算、可追溯的数据血缘、清晰的LLM职责边界。欠缺:实时数据流(目前是日终批量)、错误重试机制、以及多用户并发隔离。
如果要产品化,建议优先加缓存层。EODHD的日终数据不变,重复查询直接命中Redis,成本能降一个数量级。
另一个隐藏收益:这套架构换数据源极快。把EODHD的MCP服务器换成Bloomberg或Wind,核心代码几乎不用动——只要新服务器的工具名和参数格式一致。
代码已开源。需要准备:EODHD API key、OpenAI API key、支持async的Python环境。没写过异步代码也能跟,把async函数当成"网络请求黑箱"就行,重点看数据怎么从工具流到最终输出。
最后留个实际问题:如果你的金融助手某天算出的夏普比率跟用户自己的Excel对不上,你会优先怀疑数据源头、计算逻辑、还是LLM的narration把数字写错了?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.