Agent实战首秀!ChatBI股票分析助手:从0到1的智能分析搭建全记录
之前的文章# Text2SQL到数据智能我们在技术工具的选择上优先锚定成熟的框架体系来搭建基础能力。比如基于LangChain这类通用型Agent框架搭配vanna这类专注SQL处理的专业组件二者协同既能承接通用场景的灵活需求又能精准应对结构化数据的深度处理为ChatBI助手搭建起稳固的技术底座。本次章节我手把手从0到1打造ChatBI助手核心定位是集数据采集、存储、分析、可视化于一体的交互式商业智能报表平台并以股票数据分析为典型落地场景打通从数据到决策的完整链路。系统会精准采集贵州茅台、五粮液、广发证券、中芯国际等标的的历史价格数据同时整合多类分析模型构建起多维度的数据洞察体系。核心能力覆盖三大核心场景交互式分析用户无需掌握复杂查询语法直接用自然语言发起提问系统就能快速输出柱状图、折线图等可视化结果清晰呈现股票走势、成交量等关键指标让数据查询与解读变得简单高效。实时新闻查询同样依托自然语言交互用户可随时获取目标股票的实时热点新闻第一时间掌握市场动态为决策补充时效性信息。智能预测模型引入三类核心算法针对性解决不同维度的分析需求用ARIMA模型做趋势预测为企业投资决策提供未来价格走势参考借助Boll带开展异常检测精准识别超买超卖点辅助风险控制依托Prophet模型做周期性分析挖掘潜在季节性规律助力优化交易策略。在落地节奏上我采用 “快速验证逐步迭代” 的策略先以 Qwen-Agent 快速搭建POC原型完成核心功能的可行性验证跑通从需求到落地的最小闭环待验证逻辑跑通后再按需切换更适配的Agent框架既保障开发效率又为后续的系统优化留足空间确保每一步推进都扎实可控。数据采集Tushare使用Tushare是一个免费、开源的 Python 财经数据接口库主要用于获取国内金融市场的数据。数据丰富涵盖股票、指数、基金、期货、期权、外汇、宏观经济等多种金融数据。免费可用基础数据免费部分高频或深度数据需注册或付费。接口简单通过 Python 调用返回 Pandas 的 DataFrame 格式方便数据处理。支持多种数据源整合了交易所、财经网站等公开数据。在个人中心 - 账号与TOKEN获取个人的Token网上搜索Tavily使用Tavily 是AI搜索领域的标杆级工具凭借高效的信息检索与整合能力成为众多AI应用的核心搜索支撑可直接访问获取服务若追求更便捷的接入方式还可前往魔塔广场在平台搜索栏输入“Tavily mcp”即可快速找到对应服务并直接使用两种路径都能轻松解锁Tavily的搜索价值。你们想详细了解也可以去看下我之前写的文字 # Dify从入门到精通。使用MCP时可以直接把这里的代码copy下来使用时序模型时间序列模型的核心思路是借助历史时间维度的数据规律搭建起通往未来的预测桥梁通过精准拟合过往时间轨迹推演下一个时间点的状态。在众多时间序列预测方法中ARIMA自回归积分滑动平均模型堪称经典凭借成熟的建模逻辑成为时序分析领域的标杆工具。ARIMA模型的精妙之处在于将趋势捕捉AR、差分处理I与噪声建模MA三者有机融合尤其擅长应对非平稳序列场景——比如波动频繁的股价数据。它借助差分操作有效剥离数据中的非平稳特征让序列趋于稳定为精准建模筑牢基础。ARIMA模型的落地效果关键取决于三大核心超参数三者协同构建起完整的时序预测框架P参数聚焦历史数据的拟合深度代表模型对过去特定天数历史规律的依赖程度例如设定为5时便是以近5天数据为拟合依据Q参数锚定过去白噪声的拟合维度用于捕捉历史数据中的随机波动规律同样以5为例即参考近5天的白噪声特征D参数承担差分调节的核心作用当序列完全平稳、无趋势特征时D取值为0若存在一定趋势则取值为1通过差分操作让序列达到平稳状态。不过ARIMA模型也存在天然局限它默认数据间存在线性关系而股价波动往往充满非线性特征——突发的政策调整、瞬息万变的市场情绪等都会打破线性规律这类复杂场景正是ARIMA难以精准捕捉的短板。需要格外留意的是股价走势极易受外部因素左右政策导向、行业新闻、市场情绪波动等都可能引发价格剧烈变化。因此单纯依赖ARIMA模型进行股价预测存在明显风险必须将其与基本面分析、市场动态研判深度结合才能让预测结果更具参考性与稳健性布林带Bollinger Bands布林带Bollinger Bands由约翰·布林格在1980年代开发的一种技术分析工具用于衡量价格波动性、识别超买/超卖状态。它基于统计学中的标准差σ和移动平均线MA广泛应用于股票、外汇、加密货币等金融市场。布林带由三条线组成中轨Middle Band通常为20日简单移动平均线SMA代表中期趋势。上轨Upper Band中轨 2倍标准差2σ反映价格波动的上限。下轨Lower Band中轨 - 2倍标准差2σ反映价格波动的下限。说明默认使用20日周期2σ但可根据交易风格调整如短线交易可能用10日1.5σ。布林带的作用衡量波动性带宽Bandwidth收窄标准差变小 → 波动性降低可能预示盘整或即将突破如“布林带收缩”后的大行情。带宽扩大标准差变大 → 波动性增强趋势可能加速。识别超买/超卖价格触及上轨可能超买但强势趋势中可能持续贴近上轨。价格触及下轨可能超卖但下跌趋势中可能持续贴近下轨。趋势判断价格沿上轨运行→ 强势上涨趋势。价格沿下轨运行→ 强势下跌趋势。价格穿越中轨→ 可能趋势反转需结合成交量等确认。生产中的SPC分析SPC分析Statistical Process Control统计过程控制对生产过程进行分析及时发现系统性因素出现的潜在问题达到控制质量的目的。**使用条件**只要问题用数字表示就可以采用SPC分析实施阶段1分析阶段确保生产是在各要素无异常的情况下进行用生产过程收集的数据计算控制界限做成分析用控制图检验生产过程是否处于统计稳态过程能力是否足够2监控阶段使用控制图进行监控生产过程的数据及时绘制到控制上控制图中点的波动情况可以显示出过程受控或失控如果发现失控需要找到原因尽快消除影响。UCL: Upper Control LimitCL: Control LineLCL: Lower Control Limit假设你开了一家面包店对于生产的质量管控如何使用SPC分析1量产前在面包店试营业期对面包进行抽样试吃用于确定烤箱、配方、烘烤温度、时间等是否做出美味的面包2量产后对每天做的面包进行抽样试吃用于确定设备的过程控制是否发生异常一旦发现控制图的异常基于1个或多个准则可以采取措施进行纠正避免后续的生产发生质量问题控制图判断异常的准则11个点子落在A区以外1点界外2连续9点落在中心线同一侧9点单边3连续6点递增或递减6连串4连续14点中相邻点子总是上下交替14升降5连续3点中有2点落在中心线同一侧B区以外2/3A6连续5点中有4点落在中心线同一侧C区以外4/5B7连续15点落在中心线同两侧C区之内 15C 8连续8点落在中心线两侧且无1点在C区中8缺CSPC原则在质量控制中通常使用3σ作为异常阈值涵盖99.7%的正态分布数据而2σ约95%覆盖用于预警。Prophet指数预测Prophet的突变点机制能自动适应趋势变化非常适合业务场景中突发事件的建模。传统ARIMA模型假设趋势是平滑变化的无法灵活处理突发性趋势转折。Prophet的解决方案通过突变点检测Prophet将时间序列分段建模每段的趋势斜率可以独立调整。例如产品销量因营销活动突然增长。或者经济指标因政策调整骤降。NanobotNanobot由香港大学数据科学实验室 (HKUDS) 开发的一个超轻量级个人 AI 助手是OpenClaw 的精简版实现极致轻量核心代码仅约 4,000 行比 OpenClaw 小99%资源占用极低启动飞快研究友好代码简洁易读方便修改和扩展开箱即用支持一键部署通过 pip、uv 或源码即可安装多平台支持内置 WhatsApp、Telegram、Discord、Matrix、Slack、飞书、QQ 等聊天渠道。主要功能工具调用支持 MCP 工具服务器可执行代码、搜索网络、操作文件等定时任务内置 Cron 支持可设置周期性提醒和自动化工作流记忆系统支持持久化记忆长期保存重要上下文多模型兼容支持 OpenRouter、本地 vLLM 等任意 OpenAI 兼容接口多实例运行可同时运行多个针对不同平台或不同用途的机器人实例。与其他Agent相比配置优先一个 config.json 即可定义完整 Agent模型、工具、提供商Skills 渐进式加载SKILL.md 文件自动发现按需注入 prompt原生多模型支持内置 DashScope(Qwen)、DeepSeek、OpenAI、Anthropic 等 20 提供商SDK CLI 双入口既可以 nanobot 命令行运行也可以 Python SDK 编程调用。Nanobot与DeepAgents的区别整体架构技能演进之路从Function Call到Skills构建高效智能体的核心逻辑在AI Agent技术的发展进程中技能调用方式经历了三次关键跃迁——从早期的Function Call函数级工具调用到中期的MCP模块化能力封装最终进化至如今的Skills体系场景化技能集合。这场由技术迭代与行业实践共同推动的变革正在重塑智能体的交互边界与应用价值。其中OpenClaw项目的开源实践更是将Skills概念推向大众视野验证了单Agent多Skills模式的巨大潜力。一、技能形态的三重进化论Function Call时代以单一函数为最小单元通过API接口实现特定功能如天气查询、数据库读写灵活性高但缺乏场景适配能力。MCP阶段将多个关联Function组合成模块如数据清洗套件“报表生成器”形成可复用的中间层典型代表包括各类低代码平台的组件库。Skills革命面向具体业务场景的完整解决方案例如股票数据分析Skill整合数据采集、清洗、建模、可视化全流程具备端到端交付能力。OpenClaw的实践表明当Skills成为开发者生态的核心资产时智能体可通过搭积木方式快速组合复杂系统这正是当前行业追求的所见即所得开发范式。二、未来架构猜想单Agent多Skills模式我个人预判下一代智能体架构将呈现中心辐射式特征一个具备全局认知能力的核心Agent搭配若干垂直领域Skills。这种模式的优势在于精准匹配业务需求每个Skill对应明确的业务场景如财务报表分析“舆情监控”降低跨领域知识耦合度动态扩展能力新Skill可像插件般接入现有系统无需重构底层框架资源高效利用核心Agent专注任务调度与结果整合计算资源向高频Skill倾斜。三、落地实施路径Step1基于Qwen-Agent快速搭建POC原型选择Qwen-Agent作为起步框架因其具备两大优势轻量级特性开箱即用的Toolkit组件含read_file/write_file/edit_file等基础工具可快速搭建MVP活跃社区支持丰富的预置Skills模板如定时任务cron、日志解析log_analyzer大幅缩短开发周期。此阶段重点验证核心Agent基础Skills的可行性重点关注响应速度与任务完成率。Step2架构迁移至NanoBot平台待POC跑通后逐步将系统迁移至NanoBot生态主要考量其两大核心特性原生Skills管理机制内置的文件操作read/write/edit、定时任务cron等高频Skill已深度优化可直接替换Qwen-Agent中的同类组件开放扩展接口支持自定义Skill注册与热插拔便于后续根据业务需求新增专项技能如金融领域的K线图绘制Skill。迁移过程中需注意保持原有业务流程连续性建议采用渐进式替换策略优先切换非核心模块。四、内置Skills的价值释放无论是NanoBot还是OpenClaw其预设的基础Skills均经过实战检验文件操作三件套read_file/write_file/edit_file覆盖90%以上的本地数据处理场景定时任务引擎cron满足周期性数据采集与报告生成需求增量更新机制通过监听文件变化自动触发下游流程显著降低人工干预成本。这些即插即用的技能模块既是降低开发门槛的关键也是构建规模化应用的基础。ChatBI助手的实施步骤step1使用Trae Idea进行vibe codingprompt帮我编写Python使用tushare获取贵州茅台、五粮液、广发证券、中芯国际的历史价格从2020-01-01到今天环境变量 TUSHARE_TOKEN已经设置好了按照时间从小到大进行排序保存到一个worksheet生成一个.xlsx文件。查看数据并且进行数据清洗 trade_date的格式是20200102我们要清洗为2020-01-02step2prompt帮我生成对应的SQL建表语句然后将数据放到本地数据库中,本地数据库信息db_user “root”db_password “”db_host “127.0.0.1:3306”db_name “test”stock_daily_price表step3prompt基于刚才建好的mysql数据库-stock_daily_price表改写成 股票查询助手这里使用 qwen-agent,编写新的.py文件最后把.py文件运行起来。qwen-agent 只能使用 dashscope接口Agent LLM System prompt function call RAGbotAssistant(llmllm_cfg,name股票查询助手,description股票行情查询与分析,system_messagesystem_prompt,function_list[exc_sql],)System promptfunction call运行 stock_assistant.py 在网页上进行提问step4走势图太密了需要做调整prompt在ExcSQLTool类-call函数方法中自动对提取到的数据df进行了可视化柱状图但如果len(df)较大需要自动采用折线图进行呈现。且横坐标可以做一些筛选如果len(df) 1时不需要进行统计信息也不需要可视化图表只需要用中文做一句简单的描述即可比如选取10个点。改写的代码写入到stock_assistant_2.py文件。step5有些需要没办法很好的描述我们就加入错题本RAG知识库可以让LLM知道哪些是错误的它需要怎么做。每次需要人工录入错题本RAG知识库。在项目根目录下新建一个faq.txt文件这也是RAG知识库fow shot。使用到了RAG知识库样式跟知识库内的样式一致step6我们可以看到数据只有前十天的数据跟我们要的效果是不一样的这个时间需要查看代码知道它只查了前10条数据。如果真把全年数据进行对比token消耗会比较大我们需要做精简性价比高既要有明确的对比数据又要token消耗低。prompt在ExcSQLTool类-call函数方法中md变量目前只会提取df的前10行这里可以改成提取df的前5行df的后5行同时给这个df的描述进行统计方便让AI看到更完整的信息step7添加错题本数据prompt我刚才输入对比2025年全年广发证券和贵州茅台的涨跌幅AI只需要查广发证券和贵州茅台2025年第一天的收盘价与2025年最后一天的收盘价就行你看下 faq.txt 作为知识库如何调整合理不复杂step8一个AI智搜MCP在魔塔社区找到Tavily MCP然后把复制Stdio源代码prompt加入Tavilystdio{ “mcpServers”: { “tavily-mcp”: { “args”: [ “-y”, “tavily-mcp0.1.4” ], “autoApprove”: [], “command”: “npx”, “disabled”: false, “env”: { “TAVILY_API_KEY”: “your-api-key-here” } } } }可以搜索股票相关的新闻step9使用时间序列模型ARIMA对单个股票的未来进行预测prompt我想使用ARIMA对未来N天的股票价格进行预测编写工具 arima_stock.py,传入股票的ts_code以及预测的天数 n这里ts_code是必填,预测的时候需要先从本地mysql数据库的test库内stock_daily_price表中获取该股票的数据获取截止到今天的前一年的历史价格然后使用ARIMA进行建模5,1,5并对未来n天的价格进行预测在stock_assistant_2.py 的基础上进行编写写入到 stock_assistant_3.pyfunction call新增技能页面样式step10进行异常检测使用boll布林带prompt我想对某支股票的异常点进行检测使用boll布林带用使用20日周期2σ进行检测默认检测过去1年的超买和超卖日期。也可以让用户自定义范围检测这段时间的超买和超卖点编写 boll_detection工具。这里应该也要先从本地mysql数据库的test库内stock_daily_price表中获取该股票的数据然后再进行检测。在stock_assistant_3.py 的基础上进行编写改写的代码写入到 stock_assistant_4.py文件内。step11进行指数预测prophetprompt我想用prophet对某支股票进行周期性分析分析trend, weekly, yearly的情况并通过prophet进行可视化呈现给用户。编写prophet_analysis.py股票周期性分析工具这里应该也要先从本地mysql数据库的test库内stock_daily_price表中获取该股票的数据然后默认检测过去1年的规律用户也可以指定分析的时间范围。在stock_assistant_3.py 的基础上进行编写写入到 stock_assistant_4.pystep12更换Agent架构prompt我想把 stock_assistant_4.py 文件使用nanobot框架你可以看下 CASE-nanobot使用帮我规划下另外前端有什么建议可以放到新文件夹 nanobot-cli 中step13nanobot搭建界面prompt帮我搭建 gradio界面参考 stock_assistant_4.py 这里使用的qwen-agent中的 WebUI我把 qwen-agent 开源项目也copy到项目内了你可以参考下step14nanobot界面-显示执行过程prompt运行的过程放到 对话框里不需要单独的框你看下 qwen-agent中的 WebUI的实现以及中间过程的动态显示。现在是最终完成后才一次性显示结果 你可以自己测试下总结在项目开荒的关键阶段我们锚定科学的开发逻辑筑牢根基——先以SDD系统设计驱动开发明确整体架构再用TDD测试驱动开发为每一行代码筑牢质量防线让需求与实现精准对齐为后续开发铺就扎实路径。当基础框架搭建完成便正式步入Trae驱动的vibe coding模式让AI成为并肩作战的伙伴在高效迭代中推进项目落地。一、开发节奏严谨奠基灵动迭代开荒初期SDDTDD的组合是破局的核心抓手。SDD先梳理系统的核心逻辑与整体框架让开发方向不偏离TDD则以测试为先导提前锁定潜在问题让每一行代码都经得起推敲。当这套严谨的流程跑通后Trae开启的vibe coding便成为推进的加速器在轻松且高效的协作氛围中让AI的创造力持续释放每一次代码生成都紧扣需求节奏大幅提升开发效率。二、代码打磨精准修正按需赋能在vibe coding的过程中调试是保障质量的关键一环。每次AI生成代码后都会进行细致的校验一旦发现代码与预期不符便立即启动修正流程。而当遇到难以清晰描述的复杂需求时无需陷入表达困境可直接借助RAG知识库与few-shot示例为AI提供清晰的参考指引让模糊的需求转化为精准的开发指令确保AI能准确捕捉开发意图产出贴合要求的代码。三、角色锚定与报错处理明确边界高效破局要让AI发挥最大价值清晰的System Prompt是前提——通过明确告知LLM当前Agent的角色定位划定能力边界与核心职责让AI的每一次响应都精准贴合开发场景避免出现方向偏差。面对编译报错Trae成为可靠的处理枢纽。若遇到反复出现的同类错误无需繁琐回溯直接之前的源代码文件Trae便能快速抓取核心逻辑精准定位问题根源并高效修复。而对于样式优化操作同样灵活既可以截图并清晰传达需求让Trae按需调整也可以放手让Trae自主美化若对美化效果仍不满意直接提供目标效果图Trae便会精准模仿、细致优化直至呈现出理想的视觉呈现。四、效果优化灵活破局多元适配在多轮对话的过程中若发现AI的响应效果不佳无需困在低效的沟通循环里果断重新开启对话窗口让上下文环境重置以全新的交互起点激发AI的响应状态往往能收获截然不同的效果。若重置窗口后仍无法达到预期便无需执着于当前模型及时自主切换LLM模型借助不同模型的能力优势突破当前的交互瓶颈找到适配当下开发需求的最佳解决方案确保项目推进始终高效顺畅。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2564959.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!