导读: 本文以"AI大模型智能体开发实战|基于 Dify + MCP 的理财助手"为主题,完整还原一个可上线的 AIGC 理财助手项目:从技术选型、环境部署、智能体(Agent)架构设计,到插件开发、金融数据抓取、微信公众号接入,再到上线运维与性能安全优化,适合企业技术团队和个人开发者实践参考。
一、背景与核心概念
1.1 Dify:面向生产的开源 LLMOps 平台
- 定位:Dify 将 Backend‑as‑a‑Service 与 LLMOps 结合,提供可视化 Prompt 编排、RAG 工作流、Agent 框架和低代码接口,帮助开发者快速发布生成式 AI 应用。(Dify Docs[1])
- 生态:GitHub 已提供完整源码与 Docker 部署脚本,并内置对主流模型(OpenAI、Anthropic、Moonshot、Gemini 及本地 LLM)支持。(GitHub[2])
1.2 MCP(Model Context Protocol):Agent 的"USB‑C"
- 定义:MCP 由 Anthropic 提出,用统一协议让 AI Agent 可在不同模型、工具与操作系统间无缝对话,降低调用外部服务的耦合度。(The Verge[3])
- 实现 :开源库
mcp‑agent
提供了简洁的"意图‑工具‑回复"三段式流水线,可与 LangChain、Dify 等框架配合。(GitHub[4]) - 生态趋势:微软在 Windows AI Foundry 中正式加入 MCP 支持,宣称它将成为 AI 应用的"USB‑C"。(The Verge[5])
1.3 理财助手的业务价值
- 个性化投资顾问:基于大模型的上下文推理能力,结合个人资产与风险偏好生成投资建议。(BetterYeah[6])
- 快速行情查询与组合分析:对接实时/历史金融数据 API,降低普通投资者获取信息门槛。(GeeksforGeeks[7], PyPI[8])
- 多渠道连接:通过微信公众号、网页或 App,小程序触达终端用户。(CSDN Blog[9], Zhihu[10])
二、开发环境准备
组件 | 版本 / 说明 | 作用 |
---|---|---|
Docker & Docker‑Compose | 24+ | 统一部署 Dify、MCP 服务、向量库 |
Python | 3.11 | SDK、插件、Webhook 逻辑 |
Dify | 最新 stable | LLMOps 与多 Agent 调度 |
mcp‑agent | 0.4.x | MCP 流水线核心库 |
向量库 | Milvus 或 Qdrant | 存储金融研报、FAQ 等检索语料 |
yfinance / iexfinance | 0.2+ / 0.6+ | 行情与财报数据抓取 |
wechatpy + Flask | 2.x | 公众号服务器 |
2.1 一键安装 Dify
bash
git clone https://github.com/langgenius/dify.git
cd dify/deploy
docker compose -f docker-compose.enterprise.yml up -d
容器启动后访问 http://<your_ip>:5000
即可。(GitHub[11])
2.2 安装 MCP 及金融依赖
pip install mcp-agent dify-api-python yfinance iexfinance wechatpy flask python-dotenv
dify-api-python
SDK 简化了对 Dify SaaS 或自建实例的 API 调用。(GitHub[12])
三、整体架构设计
yaml
用户 ─► 微信公众号 ─► Flask Webhook
│
▼
Dify Streaming API
│
┌────────────┴───────────┐
│ Router Agent │
├────────────┬───────────┤
│ MCP Action: FetchData │ ←─ yfinance/IEX
├────────────┴───────────┤
│ MCP Action: Analyze │ ←─ Pandas/NumPy
├────────────┬───────────┤
│ MCP Action: Response │
└────────────────────────┘
- 入口层:微信公众号接收用户消息,WebHook 转成 JSON 调用 Dify;支持文字、语音转写。(CSDN Blog[13], Zhihu[14])
- Dify Router Agent:根据意图路由到不同 MCP Action(数据抓取、策略分析、自然语言回复)。(Dify Docs[15])
- MCP Action :最小可组合单元;通过
@tool
声明需要外部函数并返回 JSON,降低大模型"幻想"风险。(GitHub[16]) - 数据层:行情接口(Yahoo / IEX)、本地向量库、RDS(保存用户配置)。(GeeksforGeeks[17], Analyzing Alpha[18])
四、分步实战
4.1 在 Dify 创建应用
- 新建 Dataset:上传券商研报 PDF、基金招募说明书等,Dify 会自动切分文本并写入向量库。(Dify Docs[19])
- Prompt 编排 :在可视化编辑器中添加 Router 、Financial‑QA 、Portfolio‑Analysis 三个节点,每个节点对应不同 MCP Action。
- 模型配置:选择 GPT‑4o 或 Claude‑Sonnet;若成本敏感可串联 Llama‑3‑8B 作摘要、GPT‑4o 作决策。
4.2 编写 MCP 动作(Python 示例)
python
# mcp_actions.py
from mcp_agent import action, ctx
import yfinance as yf
from iexfinance.stocks import Stock
@action(name="get_stock_price", desc="获取实时股价")
def get_stock_price(symbol: str):
price = yf.Ticker(symbol).fast_info['last_price']
return {"symbol": symbol, "price": price}
@action(name="get_company_finance", desc="拉取财报摘要")
def get_company_finance(symbol: str):
stock = Stock(symbol, token=ctx.secrets['IEX_TOKEN'])
return stock.balance_sheet().iloc[0].to_dict()
yfinance 使用示例来源于 GeeksForGeeks 教程;IEX Cloud SDK 用法参考官方文档。(GeeksforGeeks[20], PyPI[21])
4.3 在 Dify 中注册 Tool
在 Tools ➜ Custom Tools ➜ +Tool,粘贴上方函数签名即可自动生成 JSON Schema。(Dify Docs[22])
4.4 配置 MCP Pipeline
mcp.yaml
perl
version: 0.2
pipeline:
- use: get_stock_price
when: "user_asks_price"
- use: get_company_finance
when: "user_asks_finance"
- use: respond_naturally
基于 LangChain 的 MCP 适配器还支持在链前后插入预处理器/后处理器。(hubwiz.com[23])
4.5 微信公众号对接
ini
# app.py
from flask import Flask, request, abort
from wechatpy import parse_message, create_reply
from dify_api_python import DifyClient
import os
app = Flask(__name__)
dify = DifyClient(base_url=os.getenv("DIFY_URL"), api_key=os.getenv("DIFY_KEY"))
@app.route("/wx", methods=["GET", "POST"])
def wechat():
if request.method == "GET":
# 服务器验证略
return request.args.get("echostr", "")
msg = parse_message(request.data)
if msg.type == "text":
rsp = dify.chat.completions(
model="router-agent",
inputs={"query": msg.content},
user="wx_"+msg.source)
reply = create_reply(rsp.choices[0].message.content, msg)
return reply.render()
return "success"
公众号开启服务器配置 → 填写 URL、Token 即可。(CSDN Blog[24], CSDN Blog[25])
4.6 Docker‑Compose 一键部署
bash
version: "3.9"
services:
dify:
image: langgenius/dify:stable
ports: ["5000:80"]
env_file:
- .env
mcp:
build: ./mcp_svc
env_file: .env
wechat:
build: ./wechat
ports: ["80:8000"]
depends_on: [dify, mcp]
qdrant:
image: qdrant/qdrant:latest
volumes: ["./qdrant_data:/qdrant/storage"]
五、进阶功能
5.1 智能资产组合分析
ini
import pandas as pd
import numpy as np
from scipy.optimize import minimize
def optimize_portfolio(symbols):
prices = yf.download(symbols, period="3y")["Adj Close"]
returns = prices.pct_change().dropna()
cov = returns.cov() * 252
mu = returns.mean() * 252
def neg_sharpe(w):
ret = np.dot(w, mu)
vol = np.sqrt(np.dot(np.dot(w, cov), w.T))
return -ret/vol
w0 = np.repeat(1/len(symbols), len(symbols))
bounds = [(0, 0.3) for _ in symbols]
cons = {"type": "eq", "fun": lambda w: np.sum(w)-1}
out = minimize(neg_sharpe, w0, bounds=bounds, constraints=[cons])
return dict(zip(symbols, out.x.round(4)))
结果通过 MCP Action 回传给大模型,再生成自然语言解释。
5.2 LangChain MCP Adapter 联动
使用 langchain_mcp_adapters
将 Dify Prompt‑flow 转成 LangChain Chain,在同一脚本里复用记忆、RAG、工具调用。(hubwiz.com[26], CSDN Blog[27])
5.3 多模态与 RAG 加强
- 语音:公众号支持用户语音提问;Dify 接入 OpenAI Whisper 自动转写。
- PDF、图片解析:MCP Action 调用 mini‑ocr 服务,向量化后写入 Dify Dataset。
六、运维与安全
风险点 | 方案 |
---|---|
Prompt 注入 | MCP 工具严格返回 JSON,限制大模型对系统命令的输出。(GitHub[28]) |
Token 泄露 | 环境变量+ KMS 加密;IEX Token 只在服务器端调用。(Analyzing Alpha[29]) |
请求速率 | Nginx + Redis 限流;Dify 内置 QPS 监控面板。(GitHub[30]) |
法规合规 | 跟随微信官方"金融信息"类接口规范,提前报备。(CSDN Blog[31]) |
七、未来展望
- 原生 Windows 生态:微软已将 MCP 引入 Windows AI Foundry,未来 Dify Agent 可直接调用本地文件、日历等系统能力。(Microsoft Learn[32])
- 多 Agent 协同:路由 Agent 可分裂出"量化策略 Agent""基金对比 Agent",共同写入统一 Memory Pool。
- 可解释性增强:在生成投资建议时同时输出模型使用的数据引用、风险模型参数,提升监管可追溯性。
结语
以上从 0 到 1 深度拆解了 "基于 Dify + MCP 的大模型理财助手" :既结合了 Dify 在 LLMOps 上的可视化与高并发优势,又借助 MCP 的协议化工具链实现安全、可组装的智能体流水线。通过对接金融数据 API、微信公众号等高频入口,一个真正能落地、能迭代、可监控的 AI 理财助手就此诞生。希望本文的流程图、 YAML 配置和完整 Python 代码能够助你快速实践,把生成式 AI 能力转换为面向 C 端的金融服务产品。
原文地址: