摘要:昨天跟大家一起写了个helloworld版本的MCP Server,介绍大语言模型是怎么通过MCP调用到写的函数和工具的。当时我说了MCP就是对open AI最先提出的function calling的标准化,但是不少朋友对function calling本身
昨天跟大家一起写了个helloworld版本的MCP Server,介绍大语言模型是怎么通过MCP调用到写的函数和工具的。当时我说了MCP就是对open AI最先提出的function calling的标准化,但是不少朋友对function calling本身可能不是很熟悉,所以误以为大语言模型是直接调用到的外部工具。
事实上并非如此,函数其实由自己写的代码来调用的,大语言模型只是训练成知道什么时候应该调用外部的函数而已。当代码检测到大语言模型说要调用外部的工具才能继续回答的问题,就会去调用外部的工具,获得工具执行后的内容,再一股脑的发给大语言模型继续帮我们进行后续的作答,来获得最终的答案。
去看下openAI官方的function calling的示例,就很容易理解了。来到官方文档看下下面这里的一个问,ChatGPT巴黎的天气就是要问某地天气的例子。大语言模型的知识是截止到预训练结束的时间为止了,所以当然不可能知道当天巴黎的天气的,所以就会调用外部函数来实现。
看一下整个过程是怎么样的。首先自己的代码要准备好获取天气的函数,这里叫做get weather,入参是经纬度。代码预定义了,代码需要定义一个tools,=roleuser,来告诉大语言模型工具调用的时机和入参这些。
·然后会整一个prompt来问ChatGPT的巴黎当天的天气发送给ChatGPT的completionAPI。大家注意一下,completionAPI和以前通常调用的有点不一样,它接收多了一个叫做tools的参数,这个时候告诉大语言模型有取天气这样的工具可以用。
·所以当你觉得需要根据经纬度来取天气的时候就应该使用对应的函数,跟着代码就获取到了大语言模型的第一次返回。在返回的地方就能检测出大语言模型是否需要进行函数的调用以及想调用的函数名称和参数。
·这些都是ChatGPT根据上面TOOLS和prompt分析出来的,大语言跟着就根据ChatGPT的需求去执行取天气的函数。
·得到结果后再将上次ChatGPT的返回和工具的返回放在一起,一股脑的放到,发到completionAPI,发给大语言模型。最终大语言模型Defining functic会返回巴黎当前的天气是多少多少,做最终的回答。
这就是今天想跟大家分享的知识了,希望大家喜欢。最后别忘记给我点赞关注分享。
来源:AI产品狙击手