如何構建基於MCP的財務分析師

如何構建基於MCP的財務分析師

文章目录

  • 目標
  • 系統概述
  • 逐步構建個人市場分析工具
  • 前提條件
  • 使用MCP構建AI驅動的金融分析工具
  • 金融分析團隊
  • 步驟 1. 定義輸出結構
  • 步驟 2:配置LLM
  • 步驟 3:建立代理
  • 步驟 4:人員處理
  • 步驟 5:主要功能
  • 最終輸出
  • 小結

構建基於MCP的財務分析師

在當今瞬息萬變的市場中,等待數小時才能獲得股票分析結果已不再可行。試想一下,只需輸入“繪製股票漲幅圖(X)”,即可立即獲得清晰的圖表。無需手動收集資料、編寫程式碼或進行除錯。在本指南中,我們將使用 CrewAI 和 MCP 構建一個個人市場分析師。最終,您將擁有一個能夠將自然語言查詢轉化為可操作股票洞察的助手。

目標

我們基於 MCP 的金融分析師利用 AI 代理簡化了金融資料分析。它彌合了複雜金融資料來源與使用者查詢之間的鴻溝,提供即時、情境感知的洞察。這種方法不僅節省時間、減少人為錯誤,而且還確保了更高的安全性、互操作性和透明度。

系統概述

系統概述

  • 使用者查詢:自然語言請求,例如:“顯示特斯拉過去一年的股票表現。”
  • MCP 代理:呼叫金融分析師團隊——一組專業代理。
  • 代理協作:它們解析查詢、生成 Python 程式碼、執行程式碼並驗證結果。
  • 輸出:使用者將收到一張清晰的圖表,其中包含可立即操作的見解。

逐步構建個人市場分析工具

前提條件

以下是一些必要的 Python 包。

pip install crewai crewai-tools pydantic yfinance python-dotenv

使用MCP構建AI驅動的金融分析工具

我們將構建兩個主要元件:

  • 金融分析團隊:由 CrewAI 代理提供支援,這些代理讀取使用者查詢、生成 Python 程式碼並執行,以視覺化股票資料。
  • MCP 伺服器檔案:一個模型上下文協議 (MCP) 伺服器,它將把上述元件呈現為 AI 工具,以便您可以將其直接整合到您的 AI 工作流程中。

讓我們來詳細瞭解一下。

金融分析團隊

真正的智慧就在這裡。我們使用 CrewAI 來協調多個具有不同角色的代理:

步驟 1. 定義輸出結構

class QueryAnalysisOutput(BaseModel):
    symbols: list[str]
    timeframe: str
    action: str

此 Pydantic 模型可確保從使用者查詢中提取結構化資訊。

步驟 2:配置LLM

llm = LLM(
    model="openai/gpt-4o",
     temperature=0.7
)

步驟 3:建立代理

代理 1:查詢解析器

  • 讀取查詢
  • 提取股票程式碼、時間範圍和預期操作
  • 此外,它還將自然語言轉換為結構化的 JSON 資料。
query_parser_agent = Agent(
    role="Stock Data Analyst",
    goal="Extract stock details and fetch required data...",
    output_pydantic=QueryAnalysisOutput
)

代理 2:程式碼編寫者

  • 接收結構化查詢輸出
  • 使用以下庫編寫簡潔、可執行的 Python 程式碼:
  • yfinance(獲取股票資料)
  • pandas(用於資料處理)
  • matplotlib(用於繪圖)
code_writer_agent = Agent(
    role="Senior Python Developer",
    goal="Write Python code to visualize stock data..."
)

代理 3:程式碼執行器

  • 執行生成的程式碼
  • 修復錯誤(如果出現問題)
  • 可以將修復工作委託給程式碼編寫者
code_execution_agent = Agent(
    role="Senior Code Execution Expert",
    allow_code_execution=True,
    allow_delegation=True
)

步驟 4:人員處理

我們將按照以下步驟使用這些代理:

  • 解析查詢
  • 編寫 Python 程式碼
  • 執行並驗證結果
crew = Crew(
    agents=[query_parser_agent, code_writer_agent, code_execution_agent],
    tasks=[query_parsing_task, code_writer_task, code_execution_task],
    process=Process.sequential
)

步驟 5:主要功能

Orchestrates the entire multi-agent system and returns the final executable Python code.
def run_financial_analysis(query):
    result = crew.kickoff(inputs={"query": query})
    return result.raw

現在我們將建立 MCP 伺服器檔案:

  • 建立介面:此介面允許 AI 助手呼叫我們的函式。
from mcp.server.fastmcp import FastMCP
from finance_crew import run_financial_analysis
FastMCP: A lightweight MCP server framework for exposing functions as AI tools
run_financial_analysis: The main function from the above code that does all the heavy lifting.
  • 建立 MCP 例項

我們將 MCP 工具集命名為“financial-analyst”。這相當於應用程式名稱。

mcp = FastMCP("financial-analyst")
  • 定義工具

工具 1:analyze_stock()

  • 接收自然語言查詢
  • 將其傳遞給金融分析師團隊(我們的代理)
  • 返回一個 Python 指令碼字串,該指令碼可以獲取並視覺化所請求的股票資料。
@mcp.tool()
def analyze_stock(query: str) -> str:
    ...
    result = run_financial_analysis(query)
    return result

工具 2:儲存程式碼

將生成的 Python 程式碼儲存到名為 stock_analysis.py 的檔案中。

確保檔案有效且可執行。

@mcp.tool()
def save_code(code: str) -> str:
    with open('stock_analysis.py', 'w') as f:
        f.write(code)

工具 3:run_code_and_show_plot()

  • 直接執行已儲存的指令碼
  • 即時生成所需的股票視覺化圖表

 

  • 主函式

透過標準輸入/輸出 (stdio) 在本地執行 MCP 伺服器,可隨時整合到任何支援 MCP 的 AI 平臺中。

if __name__ == "__main__":
    mcp.run(transport='stdio')

最終輸出

透過此設定,輸入類似“繪製蘋果公司過去 6 個月的股票表現”的查詢語句,即可生成可直接使用的圖表——無需手動編寫程式碼。

推薦閱讀:如何使用 LangChain 建立 MCP 客戶端/伺服器

小結

使用 CrewAI 構建基於 MCP 的金融分析工具,展示了多智慧體系統如何變革金融分析。透過結合結構化查詢解析、自動化 Python 程式碼生成和即時執行,我們消除了手動編碼和除錯的瓶頸。該專案突出了 AI 智慧體如何高效處理複雜的工作流程,併為以使用者為中心的金融分析樹立了新的標杆。

評論留言