谈谈Function Calling

AGIC.TWang
• 阅读 201

👻 大模型分发助手,分发你的Prompt,助你学习AIGC 👻 LLM-HUB: Distribute Your Prompt, Unlock AIGC's Power

Function Calling,这个让大语言模型 (LLM) 如虎添翼的利器,正逐渐成为人工智能领域的一大热点。它究竟是什么?如何运作?又能为我们带来哪些改变?让我们一起深入探索 Function Calling 的奥秘,揭开其背后的“魔法”,并展望其无限的未来!

1. 大语言模型的困境:有“脑”却无“手”,空有知识却无法行动

大语言模型,例如 GPT-4,拥有强大的知识储备和语言理解能力,能够进行流畅的对话、创作精彩的故事,甚至编写代码。然而,它们也面临着一些难以克服的困境,就像一个空有知识却无法行动的巨人:

  • 缺乏行动力: 就像被困在虚拟世界中的大脑,只能提供信息,无法直接与现实世界互动。例如,它可以告诉你如何煮咖啡,但无法帮你磨咖啡豆、煮咖啡、甚至递给你一杯咖啡。 这就好比一位博学的教授,可以讲解复杂的理论知识,但却无法在实验室进行实际操作。
  • 信息滞后: 知识库的更新速度有限,无法获取最新的实时信息,例如天气、股价等。这意味着它可能告诉你昨天的天气,或者一个小时前的股价,而这些信息可能已经过时了。就像一本印刷好的百科全书,内容固定,无法实时更新。
  • 缺乏个性化: 无法根据用户的特定需求提供个性化服务,例如预订航班、安排会议等。它只能提供通用的信息,而无法根据你的个人喜好或行程安排提供定制化的服务。如同一个没有情感的机器人,只能按照预设的程序执行任务,无法理解和满足用户的个性化需求。
  • 无法处理复杂任务: 许多现实世界的任务需要多个步骤和工具的协同配合,而大语言模型自身无法完成这些复杂的操作。例如,它无法帮你安排一次旅行,因为它需要预订机票、酒店、安排行程等等,这些都需要调用不同的工具和服务。就像一个只会单一技能的工匠,无法胜任需要多种技能协作的复杂工程。
  • 容易产生“幻觉”: 大语言模型有时会生成不准确或虚构的信息,这被称为“幻觉”。 这是因为它们是基于统计概率进行预测,而不是真正的理解语言的含义。 就像一个擅长模仿的演员,可以惟妙惟肖地扮演各种角色,但却并不真正理解角色的内心世界。

换一种说法,大语言模型,就像一介白面书生,聪慧无比,每天在家里读书,大门不出,二门不迈,两耳不闻窗外事,眼高手低。你让他给你做碗面条,他告诉你100种面条的做法,但是就不给你做;你让他给你洗衣服,他能告诉你洗衣机的前世今生,说的好厉害,但就不给你洗。所以如何给这个书生,搭配各种助手,发挥他的价值,就成了一件非常有意义的事情。

2. Function Calling 横空出世:为大语言模型插上翅膀,连接虚拟与现实

为了解决这些问题,Function Calling 应运而生。它就像为大语言模型配备了“手脚”,让它们能够调用外部工具 (Tools,早先叫Function Calling,后来改成了Tools,一个意思),执行实际操作,与现实世界互动。

Function Calling 的核心思想是: 将大语言模型的语言理解能力与外部工具的功能结合起来,让大语言模型能够理解用户的意图,并调用合适的工具来完成任务。

这就像为一个知识渊博的大脑连接上了能够执行操作的四肢,让它能够将知识转化为行动,真正地为人类服务。

例如,通过 Function Calling,大语言模型可以:

  • 调用天气 API 获取实时天气信息: 不再局限于提供过时的天气预报,而是可以告诉你此时此刻的天气状况,就像你打开手机上的天气应用一样。
  • 调用订票网站 API 预订机票: 不再只是告诉你如何订票,而是可以直接帮你完成订票操作,就像一个专业的旅行代理一样。
  • 调用日历 API 安排会议: 不再只是提醒你会议时间,而是可以直接帮你安排会议,并发送邀请给参会者,就像一个高效的私人助理一样。
  • 调用数据库查询信息: 可以访问和查询数据库中的信息,例如产品信息、用户信息等,就像一个专业的数据库管理员一样。
  • 调用代码执行程序: 可以执行代码来完成各种任务,例如数据分析、图像处理等,就像一个经验丰富的程序员一样。

3. Function Calling 的运作机制:像“指挥家”一样协调工作,将意图转化为行动

Function Calling 的运作机制可以概括为以下几个步骤,就像一个精密的“齿轮系统”,每个步骤都环环相扣,协同工作:

  1. 用户提出需求: 用户用自然语言描述他们想要完成的任务,例如“帮我预订明天从北京到上海的机票”。 就像用户向一个智能助手发出指令一样。
  2. LLM 理解意图: 大语言模型分析用户的语言,理解其意图,并将其转化为结构化的请求。例如,它会识别出用户想要预订机票,并提取出关键信息,如出发地、目的地、日期等。 就像一个专业的翻译,将用户的自然语言翻译成机器能够理解的指令。
  3. 选择合适的工具: 大语言模型根据用户的需求,从预先定义好的工具库中选择合适的工具来完成任务。例如,它会选择一个订票网站的 API 来完成机票预订。 就像一个经验丰富的工匠,根据不同的任务选择合适的工具。
  4. 调用工具执行操作: 大语言模型将用户的需求转化为工具能够理解的参数,并调用工具执行操作。例如,它会将出发地、目的地、日期等信息传递给订票网站的 API,并请求预订机票。 就像一个熟练的操作员,操作机器完成特定的任务。
  5. 返回结果: 工具执行完成后,将结果返回给大语言模型,再由大语言模型将结果以自然语言的形式呈现给用户。例如,订票网站 API 会返回预订结果,大语言模型会将结果整理成用户友好的语言,例如“已成功为您预订明天从北京到上海的机票”。 就像一个专业的播报员,将结果清晰地传达给用户。

落地到应用上面,基本流程如下:

Function Calling流程示意

  1. 用户发起一个Prompt,如:今天天气如何?
  2. 应用会携带用户的Prompt,以及多个函数的定义(里面带有天气函数定义),一起发送给大模型。
  3. 大模型收到请求后,会自动判断是否需要调用这些函数,如果发现需要调用,则会将函数定义中规定的参数,返回给应用,如:“location”,即哪个地方的天气,或者其他更多的参数。
  4. 应用收到这些参数后,会调用自己的方法,可能是API,也可能是一个计算逻辑,最终形成对这个函数的输出,如:10°。
  5. 应用得到函数的输出以后,会再将结果和函数定义一起,一并再次发送给大模型。
  6. 大模型会根据函数调用结果,返回给应用自然语言的回答。
  7. 应用将大模型的自然语言回答,返回给用户。

我们直接基于大模型分发助手平台,来更直观的看下这个流程。

由于大模型分发助手,定位在学习Prompt,本身不是一个整合后的对话产品,所以,对应图中的角色,可以将用户和应用合为一个,即:不需要步骤17

  1. 我们直接开始关注步骤2,发送Prompt和Function定义,在大模型分发助手中,填写用户消息,并定义一个查询天气的函数,我们本次只选择一个大模型,DeepSeek(大模型间的Function Calling回复语法,很多存在差异,无法兼容)。

用户输入Prompt / 大模型 / Function Calling
Function Calling函数定义

  1. 点击执行后,我们会收到大模型的回复

大模型首次回复

可以看到,大模型从我的提问中,了解到当前要查询天气,并且要查询的地区(location)是北京,所以返回给了我函数名称和地区

  1. 按照前面Function Calling流程图中的逻辑,我们该执行第4步“调用函数”了,就如前面说的,大模型分发助手并非是一款大模型应用,是协助学习的,这里自己将大模型的回复发送上去,并填上温度即可,而实际应用中使用时,需要调用API去获取这个信息。相当于我们直接完成了步骤45

填写天气信息

  1. 点击执行后,我们会再次收到大模型的回复,这时,就已经完成了整个Function Calling的整个流程。

大模型第二次回复

  1. 我们在大模型分发助手的页面,再看下完整的发送和回复图。

完整示意图

4. Function Calling 的优势:突破局限,释放潜能,开启 AI 新时代

Function Calling 为大语言模型带来了诸多优势,使其能够突破自身的局限,释放更大的潜能,开启人工智能的新时代:

  • 扩展能力边界: 让大语言模型不再局限于提供信息,而是可以执行实际操作,解决更多实际问题。这就像为大语言模型打开了一扇通往现实世界的大门,让它能够参与到人类的日常生活中,成为一个真正的助手,而不是一个只能纸上谈兵的“书呆子”。
  • 提升效率: 通过调用外部工具,大语言模型可以更高效地完成任务,节省时间和资源。例如,它可以自动完成一些重复性的工作,例如填写表格、发送邮件等,从而提高工作效率,将人类从繁琐的重复劳动中解放出来。
  • 增强用户体验: 让用户能够更方便地与大语言模型交互,获得更便捷的服务。例如,用户可以通过语音或文字指令,让大语言模型完成各种任务,而无需手动操作,就像拥有一个贴心的私人助理,随时随地为你服务。
  • 实时信息获取: 通过调用外部 API,大语言模型可以获取最新的实时信息,例如天气、股价等。这使得大语言模型能够提供更加准确和及时的信息,更好地满足用户的需求,就像一个永远在线的新闻播报员,随时为你提供最新的资讯。
  • 个性化服务: 通过调用不同的工具和 API,大语言模型可以根据用户的特定需求提供个性化服务。例如,它可以根据用户的喜好推荐餐厅、电影等,或者根据用户的行程安排提供旅行建议,就像一个了解你一切的私人定制师,为你打造专属的服务。
  • 解决“幻觉”问题: 通过调用外部工具获取可靠的信息,可以减少大语言模型产生“幻觉”的可能性,提高其输出结果的准确性和可靠性。 这就像为大语言模型配备了一个“事实核查员”,帮助它识别和纠正错误信息。

5. Function Calling 的应用场景:无所不能的 AI 助手,渗透到生活的方方面面

Function Calling 的应用场景非常广泛,它就像一个无所不能的 AI 助手,渗透到生活的方方面面:

  • 智能助手: 例如 Siri、Alexa 等,可以通过 Function Calling 完成订餐、订票、设置闹钟等任务,成为用户生活中的得力助手,让生活更加便捷和智能。
  • 客户服务: 例如自动回复机器人,可以通过 Function Calling 解答用户问题、提供技术支持等,提高客户服务效率和满意度,例如 24 小时在线客服,可以随时解答用户疑问,解决问题。
  • 数据分析: 例如数据分析平台,可以通过 Function Calling 调用不同的数据分析工具,进行数据分析和可视化,帮助用户更好地理解数据,例如自动生成报表、图表等,帮助用户快速分析数据,发现规律。
  • 教育领域: 例如在线教育平台,可以通过 Function Calling 提供个性化的学习资源和辅导,帮助学生提高学习效率,例如根据学生的学习进度和水平,推荐合适的学习资料和练习题。
  • 医疗领域: 例如医疗诊断系统,可以通过 Function Calling 访问医疗数据库,辅助医生进行诊断和治疗,例如根据病人的症状和病史,查询相关的医学文献和案例,辅助医生做出更准确的诊断。
  • 金融领域: 例如智能投顾平台,可以通过 Function Calling 分析市场数据,为用户提供投资建议,例如根据用户的风险偏好和投资目标,推荐合适的投资产品。
点赞
收藏
评论区
推荐文章
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
VBox 启动虚拟机失败
在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
京东云开发者 京东云开发者
11个月前
直播预告丨大模型+Agents疏通京东金融运营堵点
大模型时代,“应用变了”:把大模型装进金融营销分几步?11月24日(周五)14:0015:00开播!数字化打破信息孤岛,也建立更多孤岛运营人员被困在自己的环节里十余个子系统、子模块如何整合?自然语言任务中的“幻觉”如何克服?如何将AI训练成业务运营高手?京
京东云开发者 京东云开发者
11个月前
直播预告丨大模型如何在健康医疗中挖出大大的花?
大模型时代,“应用变了”:大模型如何在健康医疗中挖出大大的花?12月1日(周五)14:0015:00开播!大模型时代,给千行百业带来了新的想象空间试想一下,大模型经过专业知识训练竟然能够成为你的健康医疗助手曾经科幻片中的场景,正一步步成为现实这一期,我们将
京东云开发者 京东云开发者
5个月前
利用大模型服务一线小哥的探索与实践
一、小哥作业大模型2022年OpenAI基于GPT推出了聊天机器人ChatGPT,带来了非常惊艳的语言理解、内容生成、知识推理等能力,能够准确理解人的语言、意图,并能够回答出清晰、完整的内容,让人很难分辨出沟通交流的是人类还是机器人。大模型会尝试基于已有
AGIC.TWang
AGIC.TWang
Lv1
AGIC布道者
文章
5
粉丝
0
获赞
0