Function Calling(函数调用)是大模型领域的一项关键技术,简单说就是让AI学会“摇人帮忙”以及知道什么时候要摇人。
当它遇到自己搞不定的事情(比如查实时数据、操作软件、专业计算等),能自动呼叫外部工具、服务或函数来完成任务。Function Calling可以通过自然语言来实现。
跟MCP不同的是,FunctionCalling更关注让LLM知道使用什么工具,在何时使用,比如说让LLM知道现在要调用天气的API。
Function Calling 决策的过程
1.理解用户输入
用户用自然语言提问(如“帮我订周五的机票”),Function Calling理解意图,提取实体
2.上下文管理
结合之前的对话内容,进一步揣测用户意图
3.识别功能并调用
调用内部函数和外部API,匹配预设工具(如“机票查询API”)生成结构性指令
4.生成输出内容
外部工具执行后返回结果(如航班号、价格)AI整合结果生成回复:“已为您预订XX航班,价格1980元”
Function Calling、MCP、A2A有什么区别?
Function Calling用于使模型与外部工具/API连接,能够调用他们的服务
MCP核心是使模型与数据源和外部工具无缝集成,成为Agent
A2A是为了让Agent间能互相通信协作
function call 运行原理
因此,当大模型需要使用function call能力时,大模型至少会被调用两次
1.大模型生成工具可用的JSON结构
2.大模型根据工具返回结果作为上下文进行答案生成
在整个程序运行的过程中,大模型的本质作用:
-理解用户需求,判断是否调用工具、调用哪些工具?
若需要调用工具,则把自然语言转化为工具需要的结构化语言
-对用户问题+调用工具后的结果进行答案生成,返回给用户
其最终本质还是离不开大模型生成式的原理(废话哈哈,目的是为了更好理解误区)
误区:
大模型本身没有调用工具、执行工具的能力
是我们通过程序让大模型生成工具参数,并通过程序帮大模型执行工具
最后感叹一下:
开发工程师设计的太精妙了!完美利用了大模型的特质,再根据代码程序进行结合实现,在这样的工程实现下相当于给大模型进行了包装,让大模型看起来"拥有了"调用工具的能力