ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

mcp-agent 实战:用 Orchestrator + EvaluatorOptimizer 构建 AI 金融分析报告流水线——以 sample_report.md 为范例拆解

mcp-agent 实战:用 Orchestrator + EvaluatorOptimizer 构建 AI 金融分析报告流水线——以 sample_report.md 为范例拆解 mcp-agent 实战用 Orchestrator EvaluatorOptimizer 构建 AI 金融分析报告流水线——以 sample_report.md 为范例拆解【免费下载链接】mcp-agentBuild effective agents using Model Context Protocol and simple workflow patterns项目地址: https://gitcode.com/GitHub_Trending/mc/mcp-agent本技术指南以开源项目 mcp-agent 中金融分析示例mcp_financial_analyzer的产出物 sample_report.md 为骨架深入剖析一份机构级AI 投资分析报告从数据采集、质量校验、投资分析到报告落盘的全流程生成机制。读完本文你将掌握多智能体编排Orchestrator与评估-优化循环EvaluatorOptimizer如何协作产出高质量报告、报告每章背后的生成 Agent 与提示词设计思路、以及如何基于 示例入口脚本 配置和运行你自己的股票分析器。一、范例报告是什么从 sample_report.md 说起sample_report.md是 mcp-agent 仓库中mcp_financial_analyzer示例针对 DuolingoNASDAQ: DUOL自动生成的一份完整投资分析报告。它并非人工撰写的静态模板而是由四个各司其职的 LLM Agent 协同工作、经由数据采集 → 质量评审 → 投资分析 → 报告撰写四步流水线实时生成的产出物。报告日期为 2025 年 7 月 16 日核心结论包括现价 $360.67当日 ±4.7%市值约 $166.2 亿美元52 周区间 $145.05 - $544.93处于区间 66% 位置最新季度Q1 2025EPS 实际 $0.72 对预期 $0.52超出 38.46%营收实际 $2.3074 亿对预期 $2.2315 亿超出 3.32%同比营收增长 37.7%P/E 高达 188.95显著高于行业均值提示高增长预期已被充分定价最终建议谨慎乐观Cautious optimism置信度 Medium——财报基本面强劲但估值偏高需在成长性与估值风险间权衡。需要注意的是报告中的具体数字是该示例在某次运行时获取的样本数据仅供参考不构成任何投资建议。它的真正价值在于示范了一种可复制的工程范式如何用 MCP 服务器Google 搜索、网页抓取、文件系统加上分层 Agent 提示词把研究一家公司这种开放性任务拆解成有质量门槛、可验证、可落盘的流水线。二、流水线总览四个 Agent 两个工作流组件示例的核心编排逻辑全部位于 main.py其架构在 示例 README 中有清晰的 ASCII 流程说明可概括为如下调用链Orchestrator总控编排 ├── research_quality_controllerEvaluatorOptimizerLLM 包装 │ ├── data_collector Agentg-search fetch→ 采集数据 │ └── data_evaluator Agent纯 LLM→ 质量评审并反馈 │ └── 循环直到评分 ≥ GOOD ├── financial_analyst Agent纯 LLM→ 投资分析 └── report_writer Agentfilesystem→ 生成报告并写入文件2.1 数据采集 Agentdata_collectordata_collector挂载了[g-search, fetch]两个 MCP 服务器负责按四个板块采集信息当前市场数据现价、当日涨跌金额与百分比、成交量、52 周区间——搜索词如{COMPANY_NAME} stock price today current最新财报EPS 实际值与预估、营收实际值与预估、beat/miss 百分比、同比增速——搜索词如{COMPANY_NAME} earnings vs estimates beat miss近 7 天新闻3-5 条带日期、来源和影响评估的标题——搜索词如{COMPANY_NAME} analyst ratings upgrade downgrade关键财务指标P/E、市值、其他可得比率——搜索词如{COMPANY_NAME} PE ratio market cap financial metrics。该 Agent 的提示词在 main.py 中强制规定了输出格式每个板块都必须给出Source: [URL and date]并要求使用精确数字而非约数、标注数据时间戳、缺失数据要显式说明。这正是样例报告中每个数据点都带有来源 URL 的原因。2.2 质量评审 Agentdata_evaluatordata_evaluator不挂载任何服务器server_names[]是纯粹的裁判 Agent。其提示词定义了三维评审标准完整性Completeness现价、EPS 实际 vs 预估、营收实际 vs 预估、至少 3 条带日期来源的新闻、关键财务指标、来源引用六项缺一不可准确性Accuracy数字必须具体不能用 around、approximately、日期要新、来源须可信、无未经解释的矛盾信息时效性Currency股价须为当日或最近交易日数据、财报须为最近季度、新闻须来自最近 7 天。评审输出采用固定格式分别对 Completeness / Accuracy / Currency 给出 EXCELLENT / GOOD / FAIR / POOR 评级及评语最后给出 OVERALL RATING 和改进反馈。更关键的是它有一条硬性规则若缺少精确现价变动、最新季度 EPS 实际 vs 预估、最新季度营收实际 vs 预估、至少 2 个近期可信新闻来源中的任意一项总评不得超过 FAIR。2.3 EvaluatorOptimizerLLM质量闭环research_quality_controller EvaluatorOptimizerLLM(optimizerresearch_agent, evaluatorresearch_evaluator, llm_factoryOpenAIAugmentedLLM, min_ratingQualityRating.GOOD)将采集与评审两方绑定成循环数据先由data_collector生成再由data_evaluator结构化评分若未达到min_rating则把评审反馈拼入 refinement prompt驱动data_collector再次采集改进直到达标或达到max_refinements示例中为MAX_ITERATIONS 3。从源码 evaluator_optimizer.py 可以看到质量等级的底层定义class QualityRating(int, Enum): POOR 0 # Major improvements needed FAIR 1 # Several improvements needed GOOD 2 # Minor improvements possible EXCELLENT 3 # No improvements needed其generate()方法evaluator_optimizer.py在while refinement_count self.max_refinements循环中依次执行初始生成 → 结构化评估generate_structured(response_modelEvaluationResult)→ 判定达标 → 未达标则带着feedback.focus_areas生成改进版并始终保留历史最高评分的那份响应best_response作为最终输出。循环过程中产生的每次refinement_history、评分与反馈都会被写入 tracing span便于事后审计数据质量的演进过程。2.4 投资分析 Agentfinancial_analystfinancial_analyst同样不挂服务器其职责是把已验证的数据转化为洞见main.py要求输出六部分股价表现分析、财报分析、新闻影响评估、投资论点Bull Case / Bear Case 各 Top 3且每条必须有数据支撑、估值视角、风险评估。样例报告中的Bull Case - Key Strengths营收盈利超预期、用户基数扩张、低负债率 0.06与Bear Case - Key Concerns高 P/E、成交量萎缩、对分析师评级敏感正是这一 Agent 的产出形态。2.5 报告撰写 Agentreport_writerreport_writer挂载[filesystem]服务器其提示词main.py内嵌了一份完整的报告骨架模板——这就是 sample_report.md 章节结构的直接来源从# {COMPANY} - Comprehensive Financial Analysis标题、报告日期、分析师署名到 Executive Summary、Current Market Performance、Financial Performance、Recent Developments、Investment Analysis、Risk Factors、Investment Conclusion、Data Sources Methodology 九大章节再到字数要求1200-1800 词和所有结论必须来自已验证数据、不得添加无依据的推测的硬约束。最终报告通过 filesystem 服务器保存到{output_path}文件名为{company}_report_{timestamp}.md位于company_reports/目录。三、Orchestrator串联整条流水线的总调度Orchestrator(llm_factoryOpenAIAugmentedLLM, available_agents[research_quality_controller, analyst_agent, report_writer], plan_typefull)是总控。plan_typefull意味着先由 planner LLM 一次性生成完整计划再逐步执行每个 step 内的子任务会并行执行executor.execute_many(futures)上一步结果作为下一步的上下文format_plan_result链式传递见 orchestrator.py。主任务 promptmain.py明确指示了三个步骤使用research_quality_controller采集高质量财务数据该组件会自动评估并改进研究直至达到 GOOD 质量使用financial_analyst分析数据并提炼关键洞见使用report_writer生成完整报告并保存到指定路径。Orchestrator 源码中值得注意的设计细节其默认RequestParams设use_historyFalse多步工作流暂不支持历史追踪并把maxTokens提到 16384orchestrator.pyplanner 使用generate_structured以 Pydantic 模型Plan/NextStep约束计划输出若 planner 指派了available_agents中不存在的 Agent 会直接抛错提示补加 Agent。四、环境与配置如何复现这条流水线4.1 依赖安装参考 示例 README 的步骤# 进入示例目录 cd examples/usecases/mcp_financial_analyzer # 同步项目依赖与示例专属依赖 uv sync uv pip install -r requirements.txt # 内容mcp-agent / openai / anthropic # 安装 Google 搜索 MCP 服务器本示例必需 npm install -g g-search-mcp4.2 配置文件解析配置文件 声明了三个 MCP 服务器与默认模型execution_engine: asyncio mcp: servers: fetch: # 通用网页抓取 command: uvx args: [mcp-server-fetch] g-search: # Google 搜索 command: npx args: [-y, g-search-mcp] filesystem: # 报告落盘 command: npx args: [-y, modelcontextprotocol/server-filesystem] openai: default_model: gpt-4o程序启动时会动态调整 filesystem 服务器的参数若配置中存在filesystem则把当前工作目录os.getcwd()追加到其args使报告能写入当前目录若未检测到g-search服务器则打印警告并终止main.py。4.3 密钥与运行复制 secrets 示例 并填入 OpenAI API Keycp mcp_agent.secrets.yaml.example mcp_agent.secrets.yaml # 编辑 secrets 文件将 openai.api_key 替换为真实密钥运行第一个参数为要分析的公司名缺省为 Appleuv run main.py Apple uv run main.py Microsoft uv run main.py Duolingo程序执行流程创建company_reports/输出目录 → 生成带时间戳的{company}_report_{timestamp}.md路径 → 以RequestParams(modelgpt-4o)调用orchestrator.generate_str()→ 校验输出文件是否存在并记录结果。五、范例报告章节逐段拆解每个小节在讲什么、为什么这么写以下对照 sample_report.md 的九大章节说明每章的信息价值与生成要点各章均由report_writer按模板填充数据全部来自前序 Agent 的已验证输出Executive Summary执行摘要两分钟内读完的关键结论区——现价、市值、2-3 句投资论点、带置信度High/Medium/Low的总体建议。读者先看这一节即可决定是否继续深入。Current Market Performance当前市场表现交易指标 技术面解读。样例中成交量较均值下降 42.77% 但股价企稳被解读为财报扎实支撑下的投资者持续关注。Financial Performance财务表现最新季度财报的 beat/miss 幅度EPS 38.46%、营收 3.32%与同比增速37.7%以及估值视角下的 P/E 分析。Recent Developments近期动态7 天内影响股价的新闻清单每条标注日期、来源、正/负/中性影响与分析师活动综述。Investment Analysis投资分析Bull Case 三条优势与 Bear Case 三条隐忧的对称呈现每条均绑定具体数据最后给出估值评估P/E 188.95 反映高增长预期须警惕回调风险。Risk Factors风险因素公司特有风险用户粘性依赖、在线教育竞争与市场/行业风险监管变化、消费支出周期性的分层罗列。Investment Conclusion投资结论综合评估 明确建议 公平价值估计本样例因市场波动大未给出具体目标价如实标注未提供。Data Sources Methodology数据来源与方法所有引用来源 URL 与日期Yahoo Finance、AInvest、MarketBeat、Robinhood保证报告可回溯、可复核。数据质量说明与免责声明数据时效性限制说明 标准投资免责声明仅供参考、过往表现不代表未来、请咨询专业顾问。这种摘要前置、数据可溯源、多空对称、风险分层、免责收尾的结构使报告既便于人类快速决策也便于下游系统解析与引用——对金融场景尤为重要。六、可复用的方法论沉淀从 sample_report.md 及其生成流水线中可以提炼出四条通用于AI 自动化研究报告类任务的工程经验先质检、后分析避免垃圾进垃圾出将采集与评审拆成两个 Agent 并用EvaluatorOptimizerLLM强制达到min_rating门槛是控制下游分析质量的关键QualityRating枚举POOR→EXCELLENT与focus_areas机制让迭代改进有明确方向。提示词即模板、模板即规范report_writer的 instruction 就是报告格式规范本身用占位符$XXX.XX约束数字精度用严禁添加无据推测约束幻觉。强制来源标注所有采集输出强制附带Source: [URL and date]使报告成为可审计的证据链。置信度显式化每项关键评估都附带 High/Medium/Low 置信度避免 LLM 输出过度自信的结论。七、进阶把它接进更大系统本示例的架构天然可扩展research_quality_controller是一个包装在EvaluatorOptimizerLLM中的组件而EvaluatorOptimizerLLM的构造参数支持传入Agent、AugmentedLLM实例或Orchestrator/Router/ParallelLLM等嵌套工作流见 evaluator_optimizer.py这意味着你可以把多来源研究替换为更复杂的编排或把本流水线作为更高层 Agent 的一个工具。报告经 filesystem 服务器落盘后即可被定时任务调度、纳入知识库检索或进一步做市场情绪分析。如需将该流水线部署为可对外提供服务的形态可参考仓库中的 mcp-agent-cloud 相关文档如 use-deployed-server 与 deploy-mcp-server。关联资源速览便于在仓库中继续深入范例报告sample_report.md示例完整实现examples/usecases/mcp_financial_analyzer/main.py示例说明与运行指引examples/usecases/mcp_financial_analyzer/README.md运行配置mcp_agent.config.yaml、secrets 模板EvaluatorOptimizer 工作流源码evaluator_optimizer.pyOrchestrator 工作流源码orchestrator.py免责声明本文所有财务数据均来自示例产出的样本报告仅用于演示 mcp-agent 的技术能力不构成任何投资建议。【免费下载链接】mcp-agentBuild effective agents using Model Context Protocol and simple workflow patterns项目地址: https://gitcode.com/GitHub_Trending/mc/mcp-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表