成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

智能體開發(fā)實戰(zhàn) | 基于Dify+MCP實現(xiàn)理財助手智能體

人工智能
智能體的開發(fā)長期受制于接口碎片化與工具兼容性難題。開發(fā)者需為不同數(shù)據(jù)源編寫適配代碼,導(dǎo)致60%的開發(fā)周期浪費在系統(tǒng)對接上。這一痛點催生了MCP協(xié)議的誕生。MCP(Model Context Protocol,模型上下文協(xié)議)由Anthropic于2024年底開源,其核心是通過標(biāo)準(zhǔn)化接口實現(xiàn)大模型與外部工具的“即插即用”。

前言

AI智能體通過感知環(huán)境、自主決策和執(zhí)行任務(wù),突破傳統(tǒng)大模型僅限于語言交互的局限。例如,當(dāng)用戶指令“訂一張明天去北京的機票”時,智能體不僅理解語義,還能自動調(diào)用航班查詢接口、完成支付并同步至日程系統(tǒng)。這種能力使其在客服、醫(yī)療、智能制造等領(lǐng)域展現(xiàn)出顛覆性潛力。

然而,智能體的開發(fā)長期受制于接口碎片化與工具兼容性難題。開發(fā)者需為不同數(shù)據(jù)源編寫適配代碼,導(dǎo)致60%的開發(fā)周期浪費在系統(tǒng)對接上。這一痛點催生了MCP協(xié)議的誕生。MCP(Model Context Protocol,模型上下文協(xié)議)由Anthropic于2024年底開源,其核心是通過標(biāo)準(zhǔn)化接口實現(xiàn)大模型與外部工具的“即插即用”。類比互聯(lián)網(wǎng)的TCP/IP協(xié)議,MCP構(gòu)建了AI交互的通用語言。

本文將介紹如下內(nèi)容:

  • 搭建基于Docker的MySQL數(shù)據(jù)庫環(huán)境
  • 開發(fā)MCP Server實現(xiàn)MySQL數(shù)據(jù)庫操作
  • 基于Dify搭建智能體通過MCP操作MySQL實現(xiàn)理財助手智能體

搭建基于Docker的MySQL數(shù)據(jù)庫環(huán)境

1) 啟動Docker容器

  • 建立docker_compose.yaml,內(nèi)容如下
services:
  mysql:
    image: mysql:5.7
    container_name: mysql5.7
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
      - TZ=Asia/Shanghai
    volumes:
      - ./volumes:/var/lib/mysql
    command: --character-set-server=utf8mb4
  • 執(zhí)行docker compose up -d啟動數(shù)據(jù)庫

2) 創(chuàng)建數(shù)據(jù)庫和表

  • 下載MySQL客戶端軟件,例如dbeaver (https://dbeaver.io/download)
  • 連接數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)庫和表
create database testdb;

use testdb;

CREATE TABLE `finance` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` varchar(36) NOT NULL DEFAULT '' COMMENT '用戶ID',
  `date` datetime NOT NULL COMMENT '金額發(fā)生日期',
  `amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '收入支出金額(收入記為正數(shù),支出記為負數(shù))',
  `category` varchar(32) NOT NULL DEFAULT '' COMMENT '收支類別',
  `remark` varchar(100) NOT NULL DEFAULT '' COMMENT '收支具體類目',
  PRIMARY KEY (`id`),
  KEY `idx_user_date` (`user_id`,`date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='日常收支';

開發(fā)MCP Server實現(xiàn)MySQL數(shù)據(jù)庫操作

以windows開發(fā)環(huán)境為例:

1) 設(shè)置Python開發(fā)環(huán)境

安裝uv。uv是一個用Rust編寫的極其快速的Python包和項目管理器。

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

創(chuàng)建python虛擬環(huán)境(假設(shè)項目目錄為finance)

# Create a new directory for our project
uv init finance
cd finance

# Create virtual environment and activate it
uv venv
.venv\Scripts\activate

# Install dependencies
uv add mcp[cli] mysql-connector-python python-dotenv

如果在執(zhí)行.venv\Scripts\activate時報錯“無法加載.venv\Scripts\activate.ps1,因為在此系統(tǒng)上禁止運行腳本”,需要以管理員權(quán)限在終端執(zhí)行Set-ExecutionPolicy RemoteSigned更改執(zhí)行策略后再重新執(zhí)行。

2) 設(shè)置環(huán)境變量

創(chuàng)建.env,配置數(shù)據(jù)庫相關(guān)的環(huán)境變量,內(nèi)容如下

DB_HOST=localhost
DB_USER=root
DB_PASSWD=root
DB_NAME=testdb

把.env添加到.gitignore

3) MCP Server實現(xiàn)代碼

實現(xiàn)兩個mcp工具:

  • get_table_definition: 獲取表結(jié)構(gòu)定義
  • execute_sql: 執(zhí)行SQL語句
import mysql.connector
import json
import os
from contextlib import contextmanager
from dotenv import load_dotenv
from mcp.server.fastmcp import FastMCP

# 加載環(huán)境變量
load_dotenv()


class DbManager:
    def __init__(self):
        self.connection_pool = mysql.connector.pooling.MySQLConnectionPool(
            pool_name="db_pool",
            pool_size=5,
            pool_reset_session=True,
            host=os.getenv("DB_HOST"),  # 數(shù)據(jù)庫服務(wù)器地址
            user=os.getenv("DB_USER"),  # 數(shù)據(jù)庫用戶名
            password=os.getenv("DB_PASSWD"),  # 數(shù)據(jù)庫密碼
            database=os.getenv("DB_NAME"),  # 數(shù)據(jù)庫名
        )

    @contextmanager
    def get_cursor(self):
        with self.connection_pool.get_connection() as connection:
            cursor = None
            try:
                cursor = connection.cursor()
                yield cursor
                connection.commit()
            except Exception as e:
                connection.rollback()
                raise e
            finally:
                if cursor:
                    cursor.close()

    def execute_sql(self, sql: str) -> str:
        with self.get_cursor() as cursor:
            cursor.execute(sql)
            if cursor.description is not None:
                rows = cursor.fetchall()
                result = {
                    "columns": [desc[0] for desc in cursor.description],
                    "rows": rows,
                }
                return json.dumps(result, default=str)
            else:
                return f"row affected:{cursor.rowcount}"


dbManager = DbManager()
# Initialize FastMCP server
mcp = FastMCP()


@mcp.tool()
def get_table_definition(table: str) -> str:
    """get table definition"""
    return dbManager.execute_sql(f"show create table {table}")


@mcp.tool()
def execute_sql(sql: str) -> str:
    """execute sql"""
    return dbManager.execute_sql(sql)


if __name__ == "__main__":
    # Initialize and run the server
    mcp.run(transport="sse")

3) 啟動MCP Server

uv run main.py

基于Dify搭建智能體通過MCP操作MySQL實現(xiàn)理財助手智能體

Dify是一款開源的大語言模型應(yīng)用開發(fā)平臺,旨在降低AI應(yīng)用的開發(fā)門檻,幫助開發(fā)者和企業(yè)快速構(gòu)建、部署及管理生成式AI應(yīng)用。

假設(shè)已經(jīng)通過Docker Desktop for Windows安裝Dify。

1) 安裝MCP插件

點擊右上角“插件”按鈕,進入插件頁面,選擇“探索Marketplace

選擇插件Dify Agent 策略進行安裝。

選擇插件MCP SSE / StreamableHTTP進行安裝。

2) 設(shè)置MCP服務(wù)

切換到"插件"tab,選擇已經(jīng)安裝的插件"MCP SSE / StreamableHTTP",點擊“去授權(quán)”

填上MCP服務(wù)配置:

配置如下:

{"finance_server":{"url":"http://host.docker.internal:8000/sse","headers":{},"timeout":50,"sse_read_timeout":50}}

3) 創(chuàng)建Chatflow應(yīng)用

  • 創(chuàng)建一個空白應(yīng)用,類型為Chatflow

  • 調(diào)整工作流,把默認的LLM節(jié)點替換為Agent節(jié)點

  • 設(shè)置Agent節(jié)點的Agent策略,并添加MCP工具策略選擇Function Calling

  • Agent節(jié)點的模型選擇doubao-1.5-pro-32k通義千問系列的模型跑起來效果不佳,這次改用豆包模型
  • 設(shè)置Agent節(jié)點的指令(系統(tǒng)提示詞)
# 角色
你是記賬助手,可以通過調(diào)用MCP工具完成記錄日常收入和支出并作分析。
為了獲得MCP工具列表,必須先通過mcp_sse_list_tools獲取。
為了完成記賬操作,需要先獲取表finance的定義。
記賬的用戶ID取值為{{#sys.user_id#}}

# 收支類別
收入:工資薪金,勞務(wù)報酬,投資收益,分紅收入,租金收入,其它收入
支出:住房,交通,通訊,保險,餐飲,電子產(chǎn)品,日用品,服飾,旅行,娛樂,醫(yī)療,學(xué)習(xí),其它支出

# 技能
## 技能1:記錄日常開支
將開支信息記錄到數(shù)據(jù)庫表finance

## 技能2:統(tǒng)計日常開支
根據(jù)用戶輸入信息分析統(tǒng)計日常開支

# 限制
僅處理記賬相關(guān)問題,不回復(fù)其它問題
  • 設(shè)置Agent節(jié)點的查詢和最大迭代次數(shù)Agent完成一項任務(wù)可能需要迭代多次調(diào)用工具,最大迭代次數(shù)設(shè)置過小可能導(dǎo)致無法正常完成任務(wù)。

  • 預(yù)覽調(diào)試輸入“昨天吃飯用了50元,還花了22元買了拖鞋。今天買手機花了1999元,吃飯花了60元”,驗證輸出為成功記錄支出。

另外,通過數(shù)據(jù)庫表驗證數(shù)據(jù)正常插入

輸入“匯總各個類別的金額”,驗證數(shù)據(jù)查詢

確認無誤后點擊右上角的“發(fā)布”按鈕發(fā)布應(yīng)用

總結(jié)

基于Dify搭建的智能體案例,不僅展示了從語義理解到工具調(diào)用的完整決策鏈路,更印證了MCP協(xié)議在降低開發(fā)成本和加速應(yīng)用落地方面的工程意義。

責(zé)任編輯:龐桂玉 來源: AI大模型應(yīng)用開發(fā)
相關(guān)推薦

2025-06-09 01:00:00

2025-06-12 01:30:00

智能體Dify游戲智能體

2025-06-06 10:01:25

2025-05-23 00:01:00

AIDify智能體Java

2025-06-17 01:00:00

Dify智能體RAG

2025-04-03 07:06:35

2025-04-07 02:00:00

2025-04-14 00:22:00

2025-05-20 08:00:45

2025-04-01 08:05:00

智能體人工智能MCP

2025-06-10 09:28:31

智能體開發(fā)工具

2016-06-23 11:48:00

Android開發(fā)

2025-05-22 08:55:03

2024-06-13 09:20:26

2025-04-28 08:29:04

AIMCP智能體

2024-10-18 15:20:00

2024-11-18 19:06:21

2025-01-23 13:05:42

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久久久免费精品国产小说色大师 | 亚洲欧美一区二区三区在线 | 夜夜夜久久| 亚洲视频精品 | 综合久久99 | 国产成人精品久久二区二区 | 完全免费在线视频 | 亚洲激情综合 | 精品久久久久久久久久久院品网 | 亚洲欧美日韩系列 | 亚洲三区在线播放 | 91精品久久久久久久久中文字幕 | www.9191 | 日韩视频 中文字幕 | 日本福利视频免费观看 | 天天综合永久入口 | 国产中文一区二区三区 | 高清一区二区三区 | 看片91| 91玖玖 | www.成人在线视频 | 99精品网站 | 欧美在线观看免费观看视频 | 国产精久久久久久久妇剪断 | 亚洲免费网 | 高清一区二区三区 | 国产精品三级 | 日本国产高清 | 超碰97av| 啪啪av | 成人午夜毛片 | 日本成人在线观看网站 | 日韩综合在线 | 日韩在线免费 | 91伦理片 | 国产美女久久 | 亚洲精品亚洲人成人网 | 搞av.com| 中文字幕二区 | 国产精品亚洲成在人线 | 精品久久国产老人久久综合 |