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

.NET+AI | MEAI | Function Calling 基础(3)

.NET+AI | MEAI | Function Calling 基础

一句话概括

Function Calling 是让大模型能够识别用户意图并返回结构化函数调用指令的能力,而不是模型主动调用函数。

为什么需要Function Calling?

大模型虽然强大,但它只能基于训练数据生成文本回复,无法:

  • 📊 获取实时数据(天气、股票等)
  • 🔧 执行具体操作(发邮件、查数据库)
  • 🌐 访问外部系统(API调用)

Function Calling 打破了这个限制,让 LLM 与外部工具建立连接,极大拓展了应用边界

💡 一句话总结
Function Calling = 大模型的"插件系统",让 AI 从"能说会道"变成"能说会做"。

核心工作原理

完整生命周期(5步)

用户提问 → 模型识别意图 → 返回函数调用参数 → 应用执行函数 → 模型生成最终回复

实战案例:查询天气

场景: 用户问"深圳今天天气怎样?"

步骤1️⃣: 发送请求(含函数定义)

{"messages": [{"role": "user","content": "深圳今天的天气怎样"}],"tools": [{"type": "function","function": {"name": "get_current_weather","description": "获取指定城市的天气","parameters": {"type": "object","properties": {"city": {"type": "string","description": "城市名"}},"required": ["city"]}}}]
}

关键点:

  • tools: 告诉模型可用的函数列表
  • description: 帮助模型理解函数用途(越清晰越好)
  • parameters: 定义函数所需参数的 JSON Schema

步骤2️⃣: 模型返回函数调用信息

{"choices": [{"message": {"role": "assistant","tool_calls": [{"function": {"name": "get_current_weather","arguments": "{\"city\": \"深圳\"}"}}]},"finish_reason": "tool_calls"}]
}

重点: 模型识别出要调用 get_current_weather("深圳")

步骤3️⃣: 应用执行函数

// 解析模型返回,调用本地函数
string result = get_current_weather("深圳");
// 返回: "36℃,小雨"

步骤4️⃣: 回传结果给模型

{"messages": [// ...前面的对话历史{"role": "function","name": "get_current_weather","content": "36℃,小雨"}]
}

步骤5️⃣: 模型生成友好回复

{"choices": [{"message": {"role": "assistant","content": "深圳今天小雨,气温36摄氏度。"}}]
}

关键要点总结

误区 真相
❌ 模型会自动调用函数 ✅ 模型只返回调用指令,需开发者执行
❌ Function Calling 是新技术 ✅ 本质是语义识别+结构化输出
❌ 只有 OpenAI 支持 ✅ 国内外主流模型均已支持

实际应用场景

数据查询: 天气、股票、新闻
系统操作: 发邮件、创建日程
业务集成: CRM、ERP系统调用
多步骤任务: 自动化工作流

开发注意事项

  1. 函数描述要精准: 模型依赖 description 判断是否调用
  2. 参数定义要完整: 使用标准 JSON Schema 格式
  3. 错误处理要健壮: 函数执行失败时的降级策略
  4. 上下文要保留: 多轮对话需维护完整消息历史

下一步学习

Function Calling 的定义和调用需要手动处理较多细节, 下一节介绍如何基于MEAI 完成函数调用,具体实现敬请期待。


📚 参考资料

  • OpenAI Function Calling 官方文档
  • Semantic Kernel Function Calling 实践

http://www.jsqmd.com/news/47013/

相关文章:

  • 开发智联笔记项目时所遇问题(8)
  • 高中学习机五大品牌终极横评:优缺点一览,找到最适合你的那一款!
  • NCHU-23207335-面向对象程序设计-BLOG-1
  • 开发智联笔记项目时所遇问题(4)
  • 开发智联笔记项目时所遇问题(3)
  • 20251121周五日记
  • 卡码网94: bellman_ford算法
  • CrewAI 上手攻略:多 Agent 自动化处理复杂任务,让 AI 像员工一样分工协作
  • 题解:AT_agc067_d [AGC067D] Unique Matching
  • 开发智联笔记项目所遇问题
  • 计算机视觉——从环境配置到跨线计数的完整实现基于 YOLOv12 与质心追踪器的实时人员监控优秀的系统
  • 搜维尔科技:利用MANUS数据手套实现灵巧远程操作:对20自由度灵巧手进行控制
  • 2025-11-21 早报新闻
  • CTF reverse入门记录
  • 开发智联笔记项目时的js问题
  • nju实验一选择器
  • 上海金蝶代理商推荐——上海宝蝶信息技术有限公司
  • 11.21模拟赛
  • HTML---------------图片转换(草稿)
  • 爱与时间反应鲜红色慢慢退却 一次次重复直到忘记了誓言
  • Mac 安装 JDK 8u281(JDK-8u281-1.dmg)详细步骤(附安装包)
  • chrome: 允许远程调试
  • Agent skills 实战
  • Vue 路由的学习
  • P8809 [蓝桥杯 2022 国 C] 近似 GCD 题解
  • 推荐一款超级好用的命令行工具 http-server
  • J 组要考,S 组也要考
  • AI浪潮下的新动向:协作、法律与未来工作
  • day11-Dify智能体-发布-工作流
  • puff-pastry靶机