DeepSeek(13):Function call 给⼤模型插上翅膀
1 大模型存在的问题和能力
2 Function call原理
如上图比如像我们的都是一个大模型,当用户提出问题的时候,大模型会根据用户的提示词判断是否需要用外部的工具,比如说调用某个函数或者调用某个api,如果他发现了确实需要调用,此时他会把这些信息生成对应的结构化的信息,这个生成结构化信息的过程是把自然语言变成结构化语言,比如说接着xml都属于结构化的语言,在这个里面它会包含两种两类信息:一类是需要调用的函数或者api的名称,一类所需要的参数,从而协助我们去调用,之所以是协助,是因为调用不是大模型该干的活,大模型只是生成对应的函数名称跟参数的结构化信息,调用还是我们自己通过应用去调用,然后调用这个的函数或者api的数据,这个函数api会返回对应的结果,这个返回信息依旧是一个信息化或者结构化的信息,大模型拿到信息后进行理解和润色然后返回给用户。
下面我们来看一个具体的场景:
如上图,用户他会去询问订单A123的状态是什么,这时候,他会发这个请求给到大模型,大模型在这个之前第一步就是创建对应的函数,这个创建函数的过程是我们自己应用的做的事情,比如说电商平台,他已经创建了一个函数叫check_out_status,只要输入订单的号码我就能得到订单的状态,这个函数最开始要创建起来,大模型会给予这个函数去定义调用函数的方法,你必须把这个函数的定义交叉模型告诉他有这么一个函数,如果你不告诉他,他不知道怎么去调用它,也不知道这个函数对应的结构,所以首先一定要定义,并且把这个函数的结构告诉他,这告诉过程就是定义函数方法的过程。这个过程大模型会知道调用的函数名字以及函数的参数等信息。
当用户真正发送请求了,大模型会进行判断用户是否需要访问check_out_status这个函数,如果需要,则告诉用户你去调这个函数名字叫check_all_status以及输入参数,当用户拿到这个函数的信息以后,再去调用具体的函数。这个调用具体的函数是用户应用自己去做的,而不是大模型去做的,大模型的能力是基于自然语言生成对应函数的名字、函数的句柄以及函数对应的参数,用户直接调用函数完了之后就会返回这个结果,这个结果是经过大模型进行一个映射的,他只是返回了一个已发货的信息,只是大模型会根据用户的请求信息进行一个合并,最终生成一个用户能够理解的信息,这个就是Function call的原理。