一张图读懂大模型应用是如何工作的,一图胜千言

在科技飞速发展的今天,人工智能(AI)早已不再是遥不可及的科幻概念,而是融入了我们生活的方方面面。其中,大模型作为AI领域的重要分支,以其卓越的表现力和广泛的应用前景,吸引了无数人的目光。但你是否也曾经好奇,这些看似无所不能的大模型,究竟是如何工作的呢?

今天,我们就来用一张图,带你轻松读懂大模型应用的工作原理。不需要复杂的代码和艰深的理论,只需要一张图,就能让你对大模型有一个全新的认识。

我先把图放到最上面 让大家有个直观的感受,然后会分为几个步骤去解释图中提到的一些概念,最后总结大模型的工作流程以及两个重要概念的原理。

在这里插入图片描述

01. 什么是大模型

我们看看大模型自己是怎么回答的
在这里插入图片描述

02. 大模型应用架构相关概念

同学们可以把上面的图截下来,对照着看便于更好的理解

应用程序:
这个不多说,就是我们自己的业务程序,我们自己写的代码

基础大模型:
比如 GPT、ERNIE(百度开发的一个基于知识增强的语义表示模型)等等

Prompt:
提示词,prompt 的概念是指您向模型提供的输入文本或指令,以引导模型生成特定类型的响应。这个prompt可以是一个问题、一段描述、一个任务说明,甚至是一部分对话历史记录等。通过设计和优化prompt,您可以引导模型生成符合预期的回复或完成特定的任务。

APIs:
三方或者是我们自己提供的api接口

RAG:
RAG( Retrieval-Augmented Generation )即检索增强生成。RAG模型结合了检索和生成两种技术,以提高文本生成任务的效果。这部分也可以理解为检索知识库

  • 知识:由我们来提供的知识文档 可以是pdf、word等
  • 向量数据库:向量数据库是一种专门用于存储和管理向量数据的数据库系统,这些向量数据通常是由机器学习模型生成的,用于表示特定对象或概念的特征。
  • Embeddings:它通常指的是将数据(如文字、图片、音频等)映射到一个低维度的向量空间的过程。具体来说,Embeddings可以看作是一种特征表示学习技术,它能够将原始数据(如文本中的单词、句子或图像中的像素等)转换为低维、连续的向量表示,这些向量能够捕捉到原始数据的语义或结构信息。

Fine-tuning:
微调的意思,把知识库知识通过微调进行机器训练和大模型进行融合,这种方式就是提前学习,后面就不用通过prompt的方式把向量数据库的内容给到大模型了,比向量数据库更深刻,但是这种方式比较烧钱,而且没有向量数据库的方式实时

Function Calling:
大模型通过 Function Calling 的方式向应用程序提要求。比如,应用程序向大模型提出一个prompt:帮我把空调温度提高2度, 首先大模型不能直接调用三方api,因为大模型会产生幻觉(产生破坏效应),所以大模型拿到问题后需要靠应用程序去中转,怎么中转呢,就是靠Function Calling去反向告诉应用程序你应该去调用什么函数,然后我们调用函数拿到结果之后,把结果再通过prompt的方式给到大模型,然后大模型会为结果产生后续语言的返回等。

03. 大模型应用工作流程

在这里插入图片描述
还是把这张图放着比较合适~

下面通过3个简单的例子来说明上图是怎么运转的

例子1(简单问答):
小明:请一句话来形容项羽
大模型: 项羽,一代豪杰,勇猛无双,却终因刚愎自用,悲壮落幕,成为历史长河中璀璨的流星。

例子1的工作流程:首先小明通过应用程序输入一个问题,然后通过prompt也就是提示词的方式传递给基础大模型,然后大模型通过分析等直接将答案response响应给应用程序。

例子2(知识库):
小明:公司的报销制度
大模型: 吧啦吧啦一堆。。。

例子2的工作流程:首先要明确的是你们公司的报销制度是不公开到互联网的,所以大模型并不知道你们公司的报销制度,那就需要通过知识库的方式来解决,其中有两种方案:

  • 提前准备好企业知识库,然后把知识文档通过Embeddings的方式存到向量数据库,然后应用程序先去向量数据库检索,拿到内容之后再将内容通过prompt的方式传给大模型,大模型分析之后将响应结果给到应用程序。(后面的章节会讲解这部分具体怎么操作的)
  • 将企业知识库通过Fine-tuning 微调的方式提前训练到大模型中,这种方式上面也提到了,比向量数据库更深刻,但是这种方式比较烧钱,而且没有向量数据库的方式实时,更新就需要重新训练而且还存在一定风险。提前将知识训练到大模型之后,应用程序提出企业问题后大模型就能直接给出答案了。

例子3(调用api):
小明:请帮我预约一场今天2点的会议
大模型: 好的,请问您都需要邀请谁来参会呢?
小明:小虎
大模型:已为您预约了今天的会议,请您准时参加哦~

例子3的工作流程:先说明下这个场景可能会用到两个基础模型(一个用来做意图识别,一个用来做执行)当然都需要通过提示词的方式来调优,这里先不展开讲了。小明通过应用程序预约了一场会议,然后应用程序通过prompt将问题给到了大模型1,大模型1分析发现用户要预约会议,但是又没有说明参会人,那他就会告诉应用程序这个用户想要预约会议但是没有参会人(这一部是通过prompt调出来的),然后应用程序就会告诉用户你要告诉我都有谁来参会,然后小明输入参会人之后,大模型1判断小明要预约会议并且参数完整,然后告诉应用程序,应用程序就将小明的输入携带Function Calling需要的参数通过prompt的方式传递给大模型2,大模型2分析后将输出通过Function Calling的方式(也就是告诉应用程序你要掉什么函数等等)给到应用程序,应用程序发起会议预约调用接口,完成会议预约。

04. Function Calling原理

使用Function Call功能时,你需要定义(并不是真的写程序去定义一个函数,而仅仅是用文字来描述一个函数)一些function(需要指定函数名,函数用途的描述,参数名,参数描述),传给LLM,当用户输入一个问题时,LLM通过文本分析是否需要调用某一个function,如果需要调用,那么LLM返回一个json,json包括需要调用的function名,需要输入到function的参数名,以及参数值。总而言之,function call帮我们做了两件事情**:1.判断是否要调用某个预定义的函数。2.如果要调用,从用户输入的文本里提取出函数所需要的函数值。**

一个简单例子:
将以下内容作为prompt的参数传递给大模型(不同的模型接收function call的参数是不一样的)

	{
        "name": "get_current_weather",
        "description": "获取今天的天气",
        "parameters": {
            "type": "object",
            "properties": {
                "location": {
                    "type": "string",
                    "description": "获取天气情况的城市或者国家,比如北京、东京、新加坡"
                },
                "time": {
                    "type": "string",
                    "description": "时间信息"
                },

            },
            "required": ["location", "time"]
        }
    }

本篇文章到这里就结束了,最后送大家一句话 白驹过隙,沧海桑田

合作交流:mdx_0422
获取2024大厂面试资料、学习工具、微服务电商项目源码,加入java学习小组的同学可以关注下方公众号~

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最后一支迷迭香

您的赞赏将给作者加杯☕️

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值