【LLM】什么是Function Calling以及实现原理
背景
大模型诞生之初的的缺陷:
-
时效性局限:由于大模型训练需要耗费大量计算资源和时间,其知识库通常基于特定时间节点前的数据。以GPT-3.5和GPT-4为例,它们的知识仅更新至2021年9月。
-
逻辑性缺陷:大模型的文本生成主要依赖训练数据的统计规律,而非真正的逻辑推理或形式化证明过程。
比如之前大模型分不清9.9和9.11谁大的问题,如果大模型具备调用计算器的能力,此问题也将避免。
为了解决该问题,我们可以让大模型具备调用函数工具的能力,比如查询网页,查询数据库,查询天气等,Function Calling也就诞生了。
Function Calling
函数调用(Function Calling):函数调用使用户能够更可靠地从模型中获取结构化数据。
- User :用户
- Chat App :大模型聊天应用,工程层面
- LLM API:大语言模型本身,算法层面
大模型本身不具备直接调用工具的能力,而是通过生成一个调用函数的指令(通常为JSON格式)让一个固定程序调用工具,固定程序将调用结果返回给大模型,大模型将结构化的数据转换为自然语言的形式返回给用户。
- 用户提问 → 用户向应用发送自然语言查询:“纽约的天气怎么样?”
- Chat App构造提示词:向LLM发送用户问题+可用函数声明(get_weather/get_forecast)
- 模型决策:LLM分析后选择调用get_weather函数并生成参数{“location”:“纽约”}
- 执行函数:Chat App获取到LLM的调用函数指令,执行get_weather(“纽约”)获取真实天气数据
- 返回结果 → Chat App将函数执行结果"降雨,湿度90%,气温57华氏度"返回给LLM
- 生成回答 → LLM将原始数据转换为用户易于理解的自然语言进行响应
- 最终回复 → 应用将生成的"纽约正在降雨…"返回给用户
💡 核心流程:用户提问 → 大模型选函数 → App帮大模型调用函数 → 大模型将结果转人话 → 给用户最终答案。