Mcp工具--agent策略函数区别

Function Calling

通过将用户指令映射到预定义函数或工具,LLM 先识别用户意图,再决定调用哪个函数并提取所需参数。它的核心是调用外部函数或工具,属于一种明确的工具调用机制。优点:

  • 精确: 对于明确的任务,可以直接调用相应的工具,无需复杂的推理过程。
  • 易于集成外部功能: 可以将各种外部 API 或工具封装成函数供模型调用。
  • 结构化输出: 模型输出的是结构化的函数调用信息,方便下游节点处理。

ReAct (Reason + Act)

ReAct 策略使 Agent 交替进行思考和行动:LLM 首先思考当前状态和目标,然后选择并调用合适的工具,工具的输出结果又将引导 LLM 进行下一步的思考和行动,如此循环,直到问题解决

python构建虚拟环境--uv安装(适配mcp)

uv工具安装
pip install uv

#使用创建文件夹
uv init dify_mcp_tool
 
# 进入项目目录
cd dify_mcp_tool
 
# 创建虚拟环境(3.8-3.10)--python.exe不指向conda
uv venv dify_mcp_env --python 3.9
 
# 激活环境
dify_mcp_env\Scripts\activate.bat

初始化 pyproject.toml文件--uv add安装报错没有的话
uv init

 # 查看 uv 可管理的 Python 版本
uv python list 
 
 
# 安装依赖--镜像,python3.10对应

uv add "mcp[cli]" httpx --index-url https://pypi.tuna.tsinghua.edu.cn/simple

python代码

from fastmcp import FastMCP
from datetime import datetime

# 初始化 MCP 实例
mcp = FastMCP(name="查询服务器信息MCP")

# -------------------------- 核心 MCP 工具函数 --------------------------
@mcp.tool(
    description="知识库更新。"
                "从 Oracle 数据库查询设备和变电站信息,导出为 CSV 保存到本地,并自动上传到 Dify 知识库。"
                "默认查询 T1211_DEVICE、T0015_VOLTAGELEVEL、T0003_STATION、T0016_BASEVOLTAGE 关联表,"
                "包含设备ID、设备描述、设备类型、电压等级、变电站编号、变电站描述、基准电压等字段。"
                "支持自定义查询SQL(需包含上述核心字段以确保知识库数据完整性)。"
)
async def get_system_time():
    #xxxxxx

#示例
'''
@mcp.tool(
    name="get_system_time",
    description="获取当前系统的时间和日期"
)
async def get_system_time():
    current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    print(current_time)
    return {
        "status": "success",
        "data": {"system_time": current_time},
        "message": "当前系统时间获取成功"
    }'''




mcp.run(transport="sse", host="0.0.0.0", port=8123)

dify配置--agent策略

调用结果

输出

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐