前言
本篇文章,我们重点介绍Function Calling的机制和应用,在其原理上,也讲解了为什么会有plugin、GPTs出现等等。
核心要点:
1.大模型应用的一切,是自然语言连接系统的认知
2.在Function Calling的应用中,是如何把大模型和业务连接起来的
3.OpenAI用GPTs连接外部世界
我们本文和后续文章,在实际的应用,都会以ChatGPT来讲,无他,公认的,ChatGPT的能力毋庸置疑。
自然语言连接一切(Natural Language Interface),接口的进化
我们以前的接口,经历了多个版本的进化:
在这个过程中,媒介发生很多变化,但是都离不开一个共同点,那就是要有约定,要有规划,要有程序员的对接实现。
而在面对ChatGPT为例的一系列大模型,我们在面对的就是自然语言的接口,在这个强大的能力加持下,我们在面对计算机等智能设备时,我们可以用自然语言对它发出指令,实现我们的意图。
这里重新强调了这一点,是因为我们要清楚,面对AIGC的重大革新,不管是我们在日常生活中使用LLM,还是我们要基于LLM做应用开发,我们思维上首先要转变的就是要把计算机当成一个人,有了这个认识,接下来我们才能更好的使用它。
为什么要让大模型连接外部世界
有的伙伴可能会说,大模型既然能力已经很强了,为什么还要连接外部世界呢。之前我们也讲过,大模型有它自己的能力缺陷,或者说不擅长的:
-
并非知晓一切
- 训练数据不可能什么都有。垂直、非公开数据必有欠缺
- 不知道最新信息。大模型的训练周期很长,且更新一次耗资巨大,还有越训越傻的风险。所以 ta 不可能实时训练。GPT-3.5 的知识截至 2021 年 9 月,GPT-4 是 2023 年 12 月。
-
没有「真逻辑」。它表现出的逻辑、推理,是训练文本的统计规律,而不是真正的逻辑,所以有幻觉。
为了解决这个问题,就是我们所说的要连接外部世界:大模型需要连接真实世界,并对接真逻辑系统。
Function Calling 的机制
我们说,Function Calling 技术可以把大模型和业务系统连接,实现更丰富的功能。我们先看下它的由来和定义,以及用途,就能理解这一点了。
Function Calling的定义
函数调用(Function Calling) 是 OpenAI 在 6 月 13 日发布的新能力。根据官方博客描述,函数调用能力可以让模型输出一个请求调用函数的消息,其中包含所需调用的函数信息、以及调用函数时所携带的参数信息。这是一种将 GPT 能力与外部工具 / API 连接起来的新方式。
支持函数调用的新模型,可以根据用户的输入自行判断何时需要调用哪些函数,并且可以根据目标函数的描述生成符合要求的请求参数。
Function Calling 的机制
它的使用逻辑是这样的,我们用张图来解释;
Function Calling 完整的官方接口文档:platform.openai.com/docs/guides…
我们可以看到,对于人来讲,我们还是一段自然语言的prompt输入,得到一个自然语言的回答,但是因为有了Function Calling,可以通过开发各种各样的函数,来丰富和增强大模型的能力。
Function Calling 的示例、体验
我们来看一个 Function Calling的简单使用实例:
需求:定义一个函数,可以让chatgpt进行精确的数学计算,并返回精确结果。
实现:
输出结果:
csharp
复制代码
{"content": null,"role": "assistant","function_call": null,"tool_calls": [{"id": "call_EoBm8iVtl000rAZSyWe9qlk8","function": {"arguments": "{"numbers":[1,2,3,4,5,6,7,8,9,10]}","name": "sum"},"type": "function"}]
}
=====GPT回复=====
{"content": null,"role": "assistant","function_call": null,"tool_calls": [{"id": "call_EoBm8iVtl000rAZSyWe9qlk8","function": {"arguments": "{"numbers":[1,2,3,4,5,6,7,8,9,10]}","name": "sum"},"type": "function"}]
}
=====函数返回=====
55
=====最终回复=====
The sum of 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 is 55.
支持 Function Calling 的国产大模型
- Function Calling 会成为所有大模型的标配,支持它的越来越多
- 不支持的大模型,某种程度上是不大可用的
百度文心大模型
官方文档:cloud.baidu.com/doc/WENXINW…
百度文心系列大模型有四个。按发布时间从早到晚是:
- ERNIE-Bot - 支持 Function Calling
- ERNIE-Bot-turbo
- ERNIE-Bot 4.0
- ERNIE-Bot 3.5 - 支持 Function Calling
参数大体和 OpenAI 一致。
MiniMax
官方文档:api.minimax.chat/document/gu…
- 这是个公众不大知道,但其实挺强的大模型,尤其角色扮演能力
- 如果你曾经在一个叫 Glow 的 app 流连忘返,那么你已经用过它了
- 应该是最早支持 Function Calling 的国产大模型
- Function Calling 的 API 和 OpenAI 1106 版之前完全一样,但其它 API 有很大的特色
ChatGLM3-6B
官方文档:github.com/THUDM/ChatG…
- 最著名的国产开源大模型,生态最好
- 早就使用
tools
而不是function
来做参数,其它和 OpenAI 1106 版之前完全一样
讯飞星火 3.0
官方文档:www.xfyun.cn/doc/spark/W…
和 OpenAI 1106 版之前完全一样。
OpenAI 用 Actions 连接外部世界
第一次尝试用 Plugins 连接真实世界,但产品很不成功,原因:
- 不在「场景」中,不能提供端到端一揽子服务
- 缺少「强 Agent」调度,只能手工选三个 plugin,使用成本太高
第二次尝试,升级为 Actions,内置到 GPTs 中,解决了落地场景问题。
小瓜 GPT 已经接入了高德地图 actions,可以试试问位置相关的问题:chat.openai.com/g/g-DxRsTzz…
工作流程:
和Funtion Calling有点不一样,但是基本原理都是一样的
Actions对接示例
把 API 对接到 GPTs 里,只需要配置一段 API 描述信息:
yaml
复制代码
openapi: 3.1.0
info:title: 高德地图description: 获取 POI 的相关信息version: v1.0.0
servers:- url: https://restapi.amap.com/v5/place
paths:/text:get:description: 根据POI名称,获得POI的经纬度坐标operationId: get_location_coordinateparameters:- name: keywordsin: querydescription: POI名称,必须是中文required: trueschema:type: string- name: regionin: querydescription: POI所在的区域名,必须是中文required: falseschema:type: stringdeprecated: false/around:get:description: 搜索给定坐标附近的POIoperationId: search_nearby_poisparameters:- name: keywordsin: querydescription: 目标POI的关键字required: trueschema:type: string- name: locationin: querydescription: 中心点的经度和纬度,用逗号分隔required: falseschema:type: stringdeprecated: false
components:schemas: {}
还需要配置 API key 来满足权限要求。
这里的所有 name
、description
都是 prompt,决定了 GPT 会不会调用你的 API,调用得是否正确。
GPTs 与它的平替们
OpenAI GPTs
- 无需编程,就能定制个性对话机器人的平台
- 可以放入自己的知识库,实现 RAG(后面会讲)
- 可以通过 actions 对接专有数据和功能
- 内置 DALL·E 3 文生图和 Code Interpreter 能力
- 只有 ChatGPT Plus 会员可以使用
推荐两款平替:
字节跳动 Coze(扣子)中国版 国际版
- 国际版可以免费使用 GPT-4 等 OpenAI 的服务!大羊毛!
- 中国版发展势头很猛,使用云雀大模型
- 功能更强大
Dify
- 开源,中国公司开发
- 功能最丰富
- 可以本地部署,支持非常多的大模型
- 有 GUI,也有 API
有这类无需开发的工具,为什么还要学大模型开发技术呢?
- 它们都无法针对业务需求做极致调优
- 它们和其它业务系统的集成不是特别方便
总结
大模型需要,且我们一直都在努力连接外部世界,从ChatGPT的plugin,到GPTs,再到Function Calling。 我们都想给大模型更丰富,更强大的能力。
大模型中的Function Calling更是一种强大的功能,它能够增强模型的功能、提高数据的准确性并提升、用户体验。随着技术的不断发展,Function Calling的应用场景将会越来越广泛,为人工智能领域的发展带来更多的可能性。
同时,在实际落地场景中,给了开发者提供了更多的自由度,我们可以加强输入,也可以整合输出,来增强自己业务的目的。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓