当前位置: 首页 > news >正文

AI-Agent工具调用实战

AI Agent 工具调用实战:MCP 协议与 Function Calling 深度解析

前言

工具调用(Tool Calling)是 AI Agent 的核心能力,让大模型能够与外部世界交互。本文将深入对比 MCP(Model Context Protocol)协议与 OpenAI Function Calling 两种主流方案,帮助你选择最适合的技术栈。

一、工具调用的本质

1.1 为什么需要工具调用?

大语言模型本身是被动的,它只能处理文本输入输出。工具调用让模型能够:

  • 查询实时数据:搜索网络、查询数据库
  • 执行操作:发送邮件、调用 API
  • 处理复杂任务:多步骤工作流、代码执行

1.2 工具调用的核心流程

┌─────────────────────────────────────────────────────┐ │ 工具调用流程 │ ├─────────────────────────────────────────────────────┤ │ │ │ 用户请求 → 模型分析 → 选择工具 → 生成参数 │ │ ↓ ↓ │ │ 返回结果 ← 执行工具 ← 验证参数 ← 解析参数 │ │ │ └─────────────────────────────────────────────────────┘

1.3 两种主流方案对比

特性MCP 协议Function Calling
提出者AnthropicOpenAI
设计理念标准化协议API 集成
工具发现自动发现手动注册
跨模型支持✅ 支持❌ 仅 OpenAI
复杂度较高较低
生态成熟度快速发展成熟稳定

二、OpenAI Function Calling 实战

2.1 基本用法

fromopenaiimportOpenAI client=OpenAI()# 定义工具tools=[{"type":"function","function":{"name":"get_weather","description":"获取指定城市的天气信息","parameters":{"type":"object","properties":{"city":{"type":"string","description":"城市名称,如:北京、上海"},"unit":{"type":"string","enum":["celsius","fahrenheit"],"description":"温度单位"}},"required":["city"]}}},{"type":"function","function":{"name":"search_web","description":"搜索网络获取信息","parameters":{"type":"object","properties":{"query":{"type":"string","description":"搜索关键词"}},"required":["query"]}}}]# 发送请求response=client.chat.completions.create(model="gpt-4-turbo",messages=[{"role":"user","content":"北京今天天气怎么样?"}],tools=tools,tool_choice="auto"# auto, required, none)# 处理工具调用message=response.choices[0].messageifmessage.tool_calls:fortool_callinmessage.tool_calls:function_name=tool_call.function.name arguments=json.loads(tool_call.function.arguments)print(f"调用工具:{function_name}")print(f"参数:{arguments}")# 执行工具iffunction_name=="get_weather":result=get_weather(**arguments)# 将结果返回给模型messages.append(message)messages.append({"role":"tool","tool_call_id":tool_call.id,"content":str(result)})# 继续对话final_response=client.chat.completions.create(model="gpt-4-turbo",messages=messages)

2.2 多工具并行调用

# GPT-4 支持并行调用多个工具response=client.chat.completions.create(model="gpt-4-turbo",messages=[{"role":"user","content":"比较北京和上海今天的天气"}],tools=tools,parallel_tool_calls=
http://www.cnnetsun.cn/news/2009220.html

相关文章:

  • CV炼丹新思路:用CBAM注意力机制让你的小模型在Kaggle竞赛里也能“卷”赢大模型
  • SpringBoot监听Redis键过期事件,实现订单超时自动关闭(附集群版避坑指南)
  • Hypnos-i1-8B实际作品:百度知道TOP10数学问题全自动解答(含markdown表格)
  • 别再只测TCP了!用iperf3的UDP模式给你的网络做个‘压力体检’(附丢包率与抖动分析指南)
  • 只需要一条命令,让所有 AI 应用工具共享 skills
  • 除了蓝桥杯,还有哪些能写进简历的硬核电子竞赛?附各赛事企业命题(华为/平头哥/TI)解析
  • 旧Mac升级指南:三步解锁苹果官方限制,让老设备运行最新macOS系统
  • 三步解锁RPG Maker加密资源:无需编程的浏览器解密工具全攻略
  • 小红书批量下载神器XHS-Downloader:一键获取无水印内容的终极指南
  • 告别Flutter打包APK的玄学报错:用`-vv`参数揪出真凶(附常见错误文件列表)
  • Zotero Citation终极指南:三步告别文献引用噩梦,让学术写作效率飙升90%
  • 3大实战技巧揭秘:douyin-downloader无水印批量下载全流程方案
  • APP签名验证全栈破解:Frida Hook绕过+算法逆向+Python一键调用(附可运行脚本)
  • 从微信工作群到专属内网IM,企业迁移时最容易忽略哪些管理成本
  • 用2美元的Attiny85芯片DIY一个USB键盘:手把手教你玩转Digispark(附完整代码)
  • 避坑指南:YOLOv3模型量化时,你的200张样本图片真的准备对了吗?
  • 终极魔兽争霸III优化指南:让经典游戏在现代电脑上完美运行
  • mysql如何通过调整临时表空间配置优化查询_优化innodb_temp_data_file_path
  • 告别信号完整性问题:Allegro 16.6约束规则管理器(Constraint Manager)从入门到精通配置指南
  • 告别手动启动:用NSSM把任意EXE程序变成Windows开机自启服务(附.NET Core实战)
  • 如何免费下载Steam创意工坊模组?WorkshopDL完全指南
  • 手把手教你搭建手势识别系统:基于MediaPipe Hands的彩虹骨骼版快速部署教程
  • CSS如何处理CSS变量作用域冲突_利用特定类名重写变量值
  • 齐护离线语音合成播报模块 中英文 TTS V2.1串口通信 Scratch Mixly 图形化编程 Arduino Micropython 任意软件上位机
  • 华为设备Bootloader解锁神器:PotatoNV让你的旧麒麟手机重获新生
  • DownKyi:B站视频下载的智能化解决方案
  • Bioicons:生物科研工作者的免费矢量图标库
  • 如何突破平台限制:WorkshopDL终极跨平台Steam创意工坊下载指南
  • 窗口管理革命:PinWin如何用一键置顶彻底改变你的多任务工作流
  • codeforce二分题目