当问题涉及即时或外部资料时,模型往往只能猜答案,无法真正查询或执行动作,Function Calling正是为了解决这个限制而设计的机制,它让模型在需要时主动提出工具呼叫请求,由应用程序代为执行函数并回传结果。
Function Calling的运行可分为三个阶段:
模型判断需求并提出请求:回传信息中附带工具呼叫资讯(如:tool_calls),描述欲呼叫的函数名称与参数
应用程序执行外部功能:应用程序依据模型提供的函数名与参数,执行对应逻辑,例如:查询API或取资料库
模型整合结果并生成回复:应用程序将执行结果回传给模型,模型再根据这些真实资料产生自然语言回复。
这套互动流程让模型得以结合即时资料与外部运算,降低模型产生幻觉(hallucination)风险
建立并执行Function Calling
定义工具:描述功能与参数,包括name(工具名称)、description、parameters(使用JSON Schema定义工具可接受的参数结构、类型与说明)
呼叫函数(让模型主动提出工具呼叫请求):可以在chat.completions.create()的请求中加入tools参数,模型就能在生成回应时自动判断是否需要使用其中的功能
回传结果(整合执行逻辑与回复):执行函数逻辑,将结果回传给模型。
我们使用tool讯息格式回传工具的执行结果,并通过tool_call_id将结果对应到原本的工具呼叫请求中
学习笔记源自 ---《node.js生成式AI应用开发实战》