id: a3fbe2a246c04bd7928f4a0401837749
parent_id: 
item_type: 1
item_id: 1c221c5c8c8b4696acd393243ab51c92
item_updated_time: 1764372619244
title_diff: "[{\"diffs\":[[1,\"普通人也能用的AI炒股神器，CrewAI+MCP保姆级教学！\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":30}]"
body_diff: "[{\"diffs\":[[1,\"普通人也能用的AI炒股神器，CrewAI+MCP保姆级教学！ \\\n\\\n \\\n\\\n# 普通人也能用的AI炒股神器，CrewAI+MCP保姆级教学！\\\n\\\n原文链接: [https://mp.weixin.qq.com/s?\\\\__biz=MzIwMDE2MzkwMg==&mid=265335...](https://mp.weixin.qq.com/s?__biz=MzIwMDE2MzkwMg==&mid=2653356803&idx=1&sn=7582beaf82496aeedc3c7eee9acd149a&chksm=8c7e353fadbac85f24f2c12f935530481bfe5fcb9e65114948555f2255385c63232cd3b65803&mpshare=1&scene=1&srcid=11021KQewVuVJe1DNFBG5aJs&sharer_shareinfo=feba2830f887f034db0eea5570747296&sharer_shareinfo_first=feba2830f887f034db0eea5570747296#rd)\\\n\\\n# 普通人也能用的AI炒股神器，CrewAI+MCP保姆级教学！\\\n\\\n原创 AI Agent AI Agent 领域\\\n\\\n当今瞬息万变的市场中，数秒内就能创造数十亿美元的财富，因此等待数小时进行股票分析已经不再可行。想象一下，你只需输入“绘制X股票的收益图”，就能立即收到一张清晰的图表，无需手动收集数据、编写代码或调试。本指南将介绍如何使用 **CrewAI** 和 **MCP** 构建一个**个人市场分析师**。完成本指南后，你将拥有一个能够将自然语言查询转化为可操作的股票洞察的助手。\\\n\\\n## 目标\\\n\\\n我们使用 **MCP** 驱动的金融分析师利用 **AI 代理**来简化金融数据分析。它弥合了复杂的金融数据源与用户查询之间的鸿沟，提供实时、情境感知的洞察。这种方法不仅节省时间、减少人为错误，还确保了更好的安全性、互操作性和透明度。\\\n\\\n## 系统概览\\\n\\\n![](:/13d7797fd3c14cea97a7e10aad4e9ee7)\\\n\\\n- **用户查询**：一个自然语言请求，例如：“给我看特斯拉过去一年的股票表现。”\\\n- **MCP 代理**：调用**金融分析师团队（Financial Analyst Crew）**——一组专业的代理。\\\n- **代理协作**：它们解析查询，生成 Python 代码，执行代码，并验证结果。\\\n- **输出**：用户立即收到一张带有可操作洞察的清晰图表。\\\n\\\n## 构建个人市场分析师示例\\\n\\\n### 前提条件\\\n\\\n以下是一些必需的 Python 包：\\\n\\\npip install crewai crewai-tools pydantic yfinance python-dotenv  \\\n\\\n### 使用MCP构建AI驱动的金融分析师\\\n\\\n我们将构建两个主要组件：\\\n\\\n- **金融分析师团队（The Financial Analyst Crew）**：由 **CrewAI** 代理支持，它们读取用户查询，创建并运行 Python 代码以可视化股票数据。\\\n- **MCP 服务器文件（The MCP Server File）**：一个 **模型上下文协议（Model Context Protocol）** 服务器，它将此功能作为 AI 工具呈现，以便可以直接插入到你的 AI 工作流中。\\\n\\\n下面我们来详细分解。\\\n\\\n## 金融分析师团队 (The Financial Analyst Crew)\\\n\\\n这里是真正智能发生的地方。我们使用 **CrewAI** 来协调具有不同角色的多个代理：\\\n\\\n### 步骤1：定义输出结构\\\n\\\nfrom pydantic import BaseModel  \\\n  \\\nclass \\\n\\\nQueryAnalysisOutput(BaseModel):  \\\n    symbols: list\\\\[str\\\\]  \\\n    timeframe: str  \\\n    action: str  \\\n\\\n这个 **Pydantic** 模型确保了从用户查询中进行结构化提取。\\\n\\\n### 步骤2：配置 LLM\\\n\\\nfrom crewai import Crew, Agent, Process, Task  \\\nfrom langchain_openai import ChatOpenAI  \\\nfrom langchain.llms import LLM  \\\n  \\\n\\\\# 请注意，这里的 LLM 只是一个示例，可能需要根据实际使用的库进行调整  \\\nllm = LLM(  \\\n    model=\\\"openai/gpt-4o\\\",  \\\n    temperature=0.7  \\\n)  \\\n\\\n### 步骤3：创建代理\\\n\\\n**代理1：查询解析器（Query Parser）**\\\n\\\n- 角色：股票数据分析师\\\n- 目标：提取股票详细信息并获取所需数据\\\n- 将自然语言转化为结构化的 JSON\\\n\\\nquery_parser_agent = Agent(  \\\n    role=\\\"Stock Data Analyst\\\",  \\\n    goal=\\\"Extract stock details and fetch required data...\\\",  \\\n    output_pydantic=QueryAnalysisOutput  \\\n)  \\\n\\\n**代理2：代码编写器（Code Writer）**\\\n\\\n- 角色：高级 Python 开发人员\\\n- 目标：编写 Python 代码以可视化股票数据\\\n- 使用 `yfinance`（获取股票数据）、`pandas`（数据处理）和 `matplotlib`（绘图）\\\n\\\ncode_writer_agent = Agent(  \\\n    role=\\\"Senior Python Developer\\\",  \\\n    goal=\\\"Write Python code to visualize stock data...\\\"  \\\n)  \\\n\\\n**代理3：代码执行器（Code Executor）**\\\n\\\n- 角色：高级代码执行专家\\\n- 目标：执行生成的代码，并修复可能出现的错误\\\n- 可以将任务委托给代码编写器进行修复\\\n\\\ncode_execution_agent = Agent(  \\\n    role=\\\"Senior Code Execution Expert\\\",  \\\n    allow_code_execution=True,  \\\n    allow_delegation=True)  \\\n\\\n### 步骤4：团队处理流程\\\n\\\n我们将按照以下顺序使用这些代理：\\\n\\\n- 解析查询\\\n- 编写 Python 代码\\\n- 执行并验证结果\\\n\\\ncrew = Crew(  \\\n    agents=\\\\[query_parser_agent, code_writer_agent, code_execution_agent\\\\],  \\\n    tasks=\\\\[query_parsing_task, code_writer_task, code_execution_task\\\\],  \\\n    process=Process.sequential  \\\n)  \\\n\\\n### 步骤5：主函数\\\n\\\n该函数负责编排整个多代理系统，并返回最终可执行的 Python 代码。\\\n\\\ndef \\\n\\\nrun_financial_analysis(query):  \\\n    result = crew.kickoff(inputs={\\\"query\\\": query})  \\\n    \\\n\\\nreturn result.raw  \\\n\\\n现在我们将创建 **MCP 服务器文件**：\\\n\\\n**创建接口**：这个接口允许 AI 助手调用我们的函数。\\\n\\\nfrom mcp.server.fastmcp import FastMCP  \\\nfrom finance_crew import run_financial_analysis  \\\n  \\\n\\\\# FastMCP：一个轻量级的 MCP 服务器框架，用于将函数作为 AI 工具暴露。  \\\n\\\\# run_financial_analysis：上述代码中负责所有繁重工作的主函数。  \\\n\\\n#### **创建 MCP 实例**\\\n\\\n我们将 MCP 工具集命名为 **“financial-analyst”**。这就像一个应用程序的名称。\\\n\\\nmcp = FastMCP(\\\"financial-analyst\\\")  \\\n\\\n### 定义工具\\\n\\\n**工具1：analyze_stock()**\\\n\\\n- 接受一个自然语言查询。\\\n- 将其传递给金融分析师团队（我们的代理）。\\\n- 返回一个可以获取和可视化所请求股票数据的 Python 脚本字符串。\\\n\\\n@mcp.tool()  \\\ndef \\\n\\\nanalyze_stock(query: str) -> str:  \\\n    ...  \\\n    result = run_financial_analysis(query)  \\\n    \\\n\\\nreturn result  \\\n\\\n**工具2：save_code()**\\\n\\\n- 将生成的 Python 代码保存到 `stock_analysis.py` 文件中。\\\n- 确保文件有效且可执行。\\\n\\\n@mcp.tool()  \\\ndef \\\n\\\nsave_code(code: str) -> str:  \\\n    \\\n\\\nwith open('stock_analysis.py', 'w') as f:  \\\n        f.write(code)  \\\n\\\n**工具3：run_code_and_show_plot()**\\\n\\\n- 直接执行保存的脚本。\\\n- 实时生成所需的股票可视化图。\\\n\\\n### 主函数\\\n\\\n该函数在本地通过 `stdio` 运行 MCP 服务器，随时可以集成到任何支持 MCP 的 AI 平台。\\\n\\\nif \\\\__name__ == \\\"\\\\__main_\\\\_\\\":  \\\n    mcp.run(transport='stdio')  \\\n\\\n## 效果展示\\\n\\\n有了这个设置，输入类似“绘制苹果过去6个月的股票表现”这样的查询，就能生成一个可直接使用的图表，无需手动编码。\\\n\\\n## 总结\\\n\\\n使用 **CrewAI** 构建一个 **MCP** 驱动的金融分析师，展示了多代理系统如何改变金融分析。通过结合结构化查询解析、自动化 Python 代码生成和实时执行，我们消除了手动编码和调试的瓶颈。这个项目强调了 AI 代理如何高效处理复杂工作流，并为以用户为中心的金融分析树立了新的基准。\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":4428}]"
metadata_diff: {"new":{"id":"1c221c5c8c8b4696acd393243ab51c92","parent_id":"c4b5bbe706394f1a919a418c1f48165a","latitude":"0.00000000","longitude":"0.00000000","altitude":"0.0000","author":"","source_url":"","is_todo":0,"todo_due":0,"todo_completed":0,"source":"joplin-desktop","source_application":"net.cozic.joplin-desktop","application_data":"","order":1764372274729,"user_updated_time":1764372339009,"markup_language":1,"is_shared":0,"share_id":"","conflict_original_id":"","master_key_id":"","user_data":"","deleted_time":0},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2025-11-28T23:34:31.858Z
created_time: 2025-11-28T23:34:31.858Z
type_: 13