大模型外挂MCP教程(4):一图看懂Function calling和MCP的区别和联系,代码讲解流程 小白教程

大家好,我是程序员寒山。

今天我们来聊聊大模型的两个关键技术——Function CallingMCP。它们都能让AI调用外部工具,但究竟有什么区别?又该如何选择?3分钟带你搞懂!

1. Function Calling:AI的“基础工具包”

Function Calling就像给AI装上一套“基础工具包”,让它能直接调用单个函数,比如查天气、算汇率。

  • 核心能力:模型识别用户需求,生成结构化调用指令(如{"function": "get_weather", "city": "北京"}),由外部程序执行。

  • 优点:简单直接,适合单一任务(如实时数据查询)。

  • 局限:工具多了就混乱,比如同时管理几十个API,提示词会臃肿,效率暴跌。

  • 代码实例

# 示例函数1:获取天气(模拟实现)
def get_current_weather(location, unit="celsius"):
   """
   模拟天气API调用
   实际应用时应替换为真实API调用
   """
   # 这里模拟可能的返回结果
   mock_data = {
       "location": location,
       "temperature": "22" if unit == "celsius" else "72",
       "unit": unit,
       "forecast": ["sunny", "cloudy"],
       "humidity": 65,
       "timestamp": datetime.now().isoformat()
   }
   return {
       "success": True,
       "data": mock_data,
       "error": None
   }

# 示例函数2:查询股票(模拟实现)
def get_stock_price(symbol, period="1d"):
   """
   模拟股票API调用
   返回示例:
   - 成功时返回股票数据
   - 符号无效时返回错误
   """
   valid_symbols = ["AAPL", "MSFT", "GOOGL"]
   if symbol not in valid_symbols:
       return {
           "success": False,
           "error": "Invalid stock symbol",
           "data": None
       }
   
   # 模拟数据
   return {
       "success": True,
       "data": {
           "symbol": symbol,
           "price": 185.32,
           "currency": "USD",
           "period": period,
           "history": [182.1, 184.5, 185.3]
       },
       "error": None
   }

# 定义可用函数工具集
tools = [
   {
       "type": "function",
       "function": {
           "name": "get_current_weather",
           "description": "获取指定位置的当前天气信息",
           "parameters": {
               "type": "object",
               "properties": {
                   "location": {"type": "string", "description": "城市名称"},
                   "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
               },
               "required": ["location"]
           }
       }
   },
   {
       "type": "function",
       "function": {
           "name": "get_stock_price",
           "description": "获取股票价格信息",
           "parameters": {
               "type": "object",
               "properties": {
                   "symbol": {"type": "string", "description": "股票代码"},
                   "period": {"type": "string", "enum": ["1d", "1w", "1m"]}
               },
               "required": ["symbol"]
           }
       }
   }
]
# 第一步:模型判断是否需要调用函数
       response = openai.ChatCompletion.create(
           model="gpt-3.5-turbo-0613",
           messages=[{"role": "user", "content": user_input}],
           tools=tools,
           tool_choice="auto"
       )
       
       # 解析模型响应
       action = process_function_call(response)
  
       
       # 情况1:需要执行函数调用
       if action["type"] == "function":
           print("\n[系统] 检测到函数调用请求:")
           print(json.dumps(action, indent=2, ensure_ascii=False))
           
           # 执行对应函数
           if action["name"] == "get_current_weather":
               result = get_current_weather(**action["args"])
           elif action["name"] == "get_stock_price":
               result = get_current_weather(**action["args"])
           else:
               result = {"error": "未知函数"}
           
           print("\n[系统] 函数执行结果:")
           print(json.dumps(result, indent=2, default=str))
           
           # 第二步:将结果返回给模型生成最终回复
           second_response = openai.ChatCompletion.create(
               model="gpt-3.5-turbo-0613",
               messages=[
                   {"role": "user", "content": user_input},
                   {"role": "function", "name": action["name"], 
                    "content": json.dumps(result)}
               ]
           )
           
           print("\n[最终回复] " + 
                 second_response.choices[0].message["content"])

2. MCP:AI的“万能插座”

MCP(Model Context Protocol)则是更高级的“万能插座”,它标准化了AI与工具的交互协议,让模型不用关心细节,只管提需求!

  • 核心能力:统一接入多工具(如CRM、邮件、日历),动态调度服务。比如AI只需说“查Acme公司的销售合同”,MCP自动协调CRM、文件搜索等模块。
  • 优点:解耦工具依赖,扩展性强,适合企业级复杂场景。
  • 现状:腾讯云、Anthropic等已支持,生态正在壮大。

3. 关键区别:单兵作战 vs. 军团协作

维度Function CallingMCP
定位基础函数调用多工具调度中枢
复杂度低(少量工具)高(大规模工具集成)
标准化厂商自定义(如OpenAI)统一协议(如JSON-RPC)
典型场景查天气、算汇率跨系统自动化流程

简单说:Function Calling是“螺丝刀”,MCP是“智能工具箱”

4. 联系:协同构建智能体生态

它们并非对立,而是递进关系:

  • Function Calling提供基础能力,MCP解决扩展问题,最终由AI Agent统筹规划,实现自主任务(如自动订机票+酒店)。
  • 未来趋势:结合两者优势,打造“会思考、会调用、会执行”的超级助手!

[结尾]

所以,如果你的AI只需简单查数据,Function Calling够用;但要玩转企业级自动化?MCP才是未来!
你们更看好哪种技术?评论区聊聊!记得点赞关注,下期我们接着聊!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值