AI初认识(Function Calling连接外部世界)

0 阅读2分钟

核心概念

  • 本质:Function Calling是大模型连接外部世界的“通道”。它让大模型能调用外部函数/API,从而获取实时信息、执行精确计算或操作本地系统。
  • 常见形式:Plugins、OpenAI Actions、Tools工具集、GPTs(如联网检索、代码解释器)都是其应用。

大模型的三大缺陷(为什么需要Function Calling)

  1. 知识不全:无法覆盖所有垂直、非公开数据。
  2. 信息滞后:训练数据有截止日期,不知最新信息。
  3. 缺乏真逻辑:依赖统计规律,在精确计算(如数学)和确定性任务上不可靠。

解决方案:让大模型调用外部“真逻辑系统”(如计算器、数据库、地图API)来弥补这些缺陷。

Function Calling在架构中的位置

  • 无FC:用户 → 大模型 → 回复(仅依赖模型内部知识)
  • 有FC:用户 → 大模型 → 识别意图并返回函数调用指令 → 本地执行函数 → 将结果返回大模型 → 大模型生成最终自然语言回复

ad9aac85-075e-45a3-9406-89e385749016.png

工作流程(4步)

  1. 定义函数:在本地写好要调用的函数(如XXX算法、查询天气、搜索地图)。
  2. 描述函数:用JSON格式告诉大模型这个函数叫什么、有什么参数、分别代表什么含义(这段描述本身也是Prompt,需要调优)。
  3. 大模型决策:用户输入自然语言任务后,大模型判断是否需要调用函数,并返回函数名提取好的参数
  4. 本地执行与回传:你的代码解析函数名和参数 → 调用真实的本地函数 → 将执行结果返回给大模型 → 大模型用自然语言组织最终答案。

多函数调用(链式调用)

大模型可以自动规划先调用哪个函数、后调用哪个函数。例如:

  • 用户问:“北京三里屯附近的咖啡馆”
  • 大模型先调用get_location_coordinate获取三里屯的经纬度
  • 拿到结果后,再自动调用search_nearby_pois搜索该坐标附近的咖啡馆
  • 最后整理成自然语言回答

关键要点

  • 函数描述是另一种Prompt:写得不清晰,大模型可能选错函数或提取错参数。
  • 上下文管理:每次函数调用的请求、响应都要加入到messages对话历史中,大模型才能“记住”之前调用了什么、得到了什么结果。
  • 支持并行/串行调用:现代模型(如GPT-3.5-turbo-1106后)可以一次返回多个函数调用请求。

总结一句话

Function Calling = 让大模型学会“调用工具”——它不自己计算结果,而是告诉你该用什么工具、传什么参数,你执行后再把结果给它,由它组织成你听得懂的话。