多智慧體系統實戰:用LangChain+MCP構建一個自動化週報生成系統

技术架构

為什麼週報需要多智慧體?

週報是每個程式設計師的「週常痛點」——不是寫不出來,而是收集資料太麻煩

  • 從Jira拉取本週完成的任務
  • 從Git統計程式碼提交量
  • 從飛書/釘釘獲取會議記錄
  • 從監控系統檢視線上告警
  • 最後還要「潤色」成領導愛看的格式

如果一個Agent只能做一件事,那就讓多個Agent分工協作——這就是多智慧體系統的價值。


系統架構

┌─────────────────────────────────────────────────────────────┐
│                    協調Agent (Orchestrator)                   │
│                  LangChain AgentExecutor                    │
└──────────┬──────────┬──────────┬──────────┬────────────────┘
           │          │          │          │
     ┌─────▼────┐ ┌───▼────┐ ┌──▼───┐ ┌───▼────┐
     │ 資料採集  │ │ 程式碼分析│ │ 會議摘要│ │ 報告生成│
     │  Agent   │ │  Agent  │ │ Agent  │ │  Agent  │
     └─────┬────┘ └───┬────┘ └──┬───┘ └───┬────┘
           │          │          │          │
     ┌─────▼──────────▼──────────▼──────────▼────────────────┐
     │                  MCP Server 層                         │
     │  [Jira MCP] [Git MCP] [飛書 MCP] [監控 MCP] [郵件 MCP] │
     └───────────────────────────────────────────────────────┘

第一步:定義Agent

from langchain_openai import ChatOpenAI
from langchain_mcp import MCPToolkit

jira_toolkit = MCPToolkit(url="http://localhost:8081/mcp/sse")
git_toolkit = MCPToolkit(url="http://localhost:8082/mcp/sse")

data_collector_agent = {
    "name": "data_collector",
    "role": "資料採集專家",
    "goal": "從Jira和Git中收集本週的工作資料",
    "tools": jira_toolkit.get_tools() + git_toolkit.get_tools(),
    "llm": ChatOpenAI(model="gpt-4o", temperature=0)
}

第二步:實現MCP Server

Jira MCP Server

from mcp.server import Server, Tool
from jira import JIRA

server = Server("jira-mcp-server")

@server.tool(name="get_completed_issues", description="獲取指定時間範圍內完成的Jira任務")
async def get_completed_issues(start_date: str, end_date: str, assignee: str = None):
    jql = f'updated >= "{start_date}" AND updated <= "{end_date}" AND status = Done'
    if assignee:
        jql += f' AND assignee = "{assignee}"'
    issues = jira_client.search_issues(jql, maxResults=50)
    return {"issues": [{"key": i.key, "summary": i.fields.summary} for i in issues]}

第三步:編排多智慧體工作流

from langgraph.graph import StateGraph, END

workflow = StateGraph(WeeklyReportState)
workflow.add_node("collect_jira", collect_jira_data)
workflow.add_node("collect_git", collect_git_data)
workflow.add_node("collect_meeting", collect_meeting_data)
workflow.add_node("generate_report", generate_report)

workflow.add_edge("collect_jira", "collect_git")
workflow.add_edge("collect_git", "collect_meeting")
workflow.add_edge("collect_meeting", "generate_report")
workflow.add_edge("generate_report", END)
workflow.set_entry_point("collect_jira")

app = workflow.compile()

總結

多智慧體系統讓週報生成從「手動拼湊」變成「自動流水線」:

  1. 分工明確:每個Agent只做一件事,做好一件事
  2. MCP解耦:Agent不直接呼叫API,透過MCP Server間接存取
  3. LangGraph編排:支援串列、並列、條件分支等複雜工作流
  4. 生產可用:定時排程、錯誤重試、幻覺防控

多智慧體不是「多個聊天機器人」,而是「一個軟體系統」——每個Agent是一個微服務,MCP是它們之間的API閘道。

本站提供瀏覽器本地工具,免註冊即可試用 →

#多智能体#LangChain#MCP#自动化周报#Agent协作