亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

LLM 應用架構

如果你查看使用大型语言模型,如ChatGPT的发展过程,通常可以发现它具有以下结构。

通常,在大型语言模型(LLM)中,使用经过提示工程设计的提示作为输入,并接收并使用返回的输出。

在稍微更高级的形式下,该模型通过微调进行开发,或者在非常高级的形式下,使用外部文档存储系统。

图。基本LLM应用程序的架构图。

换句话说,它的结构至少会调用一次或多次LLM。

然而,基于LLM的应用程序在操作环境中的结构比这复杂得多。它具有复杂的结构,例如安全性、同时调用多个模型的功能,并且与外部API和搜索引擎的链接。

下图是一个示例架构,展示了一个LLM应用。

图:LLM 应用架构.

与其简单地写一个提示并调用一次LLM,你可以创建多个示例,并根据问题的类型动态选择合适的示例依据问题类型,或者将同一个查询提交给几个不同的LLM模型,然后在它们之间找到最合适的答案。这可以实现为通过选择最终答案的结构,或者从外部数据源(如谷歌搜索引擎)搜索LLM未见过的数据,并将其提供给LLM使用。

这被称为LLM应用架构。

在这本书中,你将理解开发此类LLM应用程序的架构是怎样的,如何使用Langchain开发一个商业级LLM应用程序,以及通过理解Langchain的结构,LLM应用程序的架构实际上是如何详细构建的。目的是理解。

以下列出了构成LLM应用程序的组件。

1.1 安全滤镜

特别是对于聊天机器人而言,必须确定通过LLM接收的问题和回应是否不适当。例如,必须在输入阶段过滤掉性内容、暴力或相互诋毁的内容,并且同样地,也必须过滤LLM的输出,以防止不适当的内容被输入或输出。

除了不适当的内容外,输入和输出还需要根据用户的特征(如年龄或宗教信仰)进行调整,并且在某些情况下,还必须检查响应是否侵犯了知识产权。例如,在一个创建营销标语的LLM应用程序的情况下,它不能与现有的营销口号重复,以避免知识产权冲突。

简单的实现可以通过提示工程进行指导,但通过知识产权搜索或模式构建不适当的内容可以通过稍后解释的(RAG结构),如下所述,来完成,该结构通过在文档数据库中存储特定模式并查找相似模式来完成。通过使用过滤结构。

过滤也必须能够根据情况调整筛选强度。根据客户的偏好或具体应用场景,调整筛选,使其更强或更弱。

特别是对于直接与用户互动的聊天机器人来说,这些安全过滤机制非常重要,但许多简单的应用程序往往省略了这些功能的实现。

1.2 提示模板(Prompt Template)

在LLM中,提示常常根据场景进行重用。例如,当旅行指南聊天机器人被用来询问某个特定旅行地点的解释时,你只需要更改地点的名称,例如“告诉我关于景福宫的旅行信息。”或“告诉我关于明洞的旅行信息。”这种方法将提示中需要更改的部分转换为变量,从而可以灵活使用,这种做法被称为提示模板。

下面的图片展示了使用模板通过将形容词、主题和城市名称处理成变量来创建提示的概念。将这些值分别输入为“著名的形容词”、“主题”和“首尔”。

图片提示模板概念

1.3 示例选择组件

当编写大型语言模型(LLM)提示时,附上问题和答案示例可以提高LLM响应的准确性。

这被称为N-Shot提示法。与其机械地附加同一个示例,不如根据问题的具体情况选择能给出最佳答案的示例,提示的长度取决于问题的具体情况。由于LLM的输入令牌长度受到影响,如果示例过长,可能需要对其进行总结或截断以适应提示。示例选择器是为此问题设计的,并且能够根据问题选择合适的提示。

例如,假设有一个示例提示,要求你总结如下:输入文本。

    {"input":"请总结天气新闻。\n"  
    ,"summary":"今日天气:晴朗的天空,温和的气温,"\  
    "和轻柔的微风。全天都将是宜人的天气,请尽情享受!"},  
    {"input":"请总结经济新闻。\n","summary":"全球股市因积极的经济数据而上涨;"\  
    "但通胀担忧依然存在。科技行业表现突出;央行密切监控。"},  
    {"input":"请总结零售新闻。\n","summary":"主要零售商宣布在假期购物季创下销售纪录。"},  
    {"input":"股市趋势是什么?\n","summary":"随着全球贸易紧张局势的缓解,投资者的乐观情绪正在增强"},

如果你的问题是关于LLM应用程序的,想了解这周的经济动态和天气,

这周的经济趋势和天气,我想了解一下。

示例选择器功能从提供的示例中选择经济和天气的摘要,并将其插入提示中,如下所示。

    输入:请总结天气新闻。
    概要:今日天气:晴朗、气温温和、微风。全天天气宜人。
    输入:股市趋势是什么?
    概要:随着全球贸易紧张局势的缓解,投资者的信心正在增强。
    输入:我想知道本周的经济趋势和天气。
    概要:

<图:用选定示例插入的提示>

1.4 大规模语言模型(LLM,Large Language Model)

一旦提示语经过安全过滤器、提示模板和示例选择器的处理后,就可以调用LLM。

存在诸如ChatGPT、Mistral、Gemini和Antropic的Claude模型等各种模型,但这些模型的准确性和响应时间各不相同,输入和输出的令牌数量尤其是价格差异尤其显著。

所以,只能使用单一的LLM,但在某些情况下,可以共同使用多个LLM。

1.4 管弦乐编排

在调用这些大型语言模型(LLM)时,可以将LLM的输出重新输入到LLM中作为新的查询。根据输出内容,可以通过诸如路由等技术改变问题并再次提出,或者同时提出。实际上,在操作环境级别实现LLM应用,例如并行处理两个问题的方式,以调用各种LLM多次并采用不同结构的方式呈现工作流。处理此类复杂工作流的功能被称为编排。

以下是一个示例,用于帮助解释,在获得“关于韩国最著名的旅游景点的信息”之后,“该旅游景点附近的著名餐厅的信息”,“该餐厅著名菜单的信息”,以及平行地“到达该旅游景点的公共信息(如交通指南等)”。在获得“交通方式”的信息之后,这是一个最终收集三个信息点的工作流程结构。

图。编排(Orchestration)管道示例

当然,你可以将所有内容一次性查询,但由于输入/输出令牌数量有限,你可以通过分别查询每个内容,可以获得更具体的问题和答案。

1.5 代理人

因为LLM仅拥有在训练期间获得的知识,它并不具备最新的信息。因此,你可以与外部系统连接,例如使用外部的搜索引擎进行搜索和利用外部数据,或者从公司的内部数据库中搜索和使用信息。执行这些功能的组件称为Agent-Tool。Tool是一个连接外部系统的工具,而Agent则根据问题决定使用哪个外部工具并调用该工具。

1.6 向量数据库

与外部系统连接的一种方式是搜索与问题相关的文档,并将这些文档作为提示的上下文信息。这种方法被称为检索与生成(RAG)技术。

此方法将文档存储在文档数据库中,搜索文档中与问题相关的段落或页面,将找到的相关内容添加到提示中,并基于添加的内容生成答案。

例如,如果所有的维基百科文档都被存储在一个文档数据库里,并且发出查询,“请解释朝鲜战争”,LLM将仅从存储在数据库中的文档中提取与朝鲜战争相关的文档页面,并返回提取的文档内容。然后将提取的内容插入提示中,您必须仅根据文档内容来回答。

RAG的确将在后面详尽说明。

1.7 缓存

在向LLM提问时,有时会多次提出相同或相似的问题。例如,在调试过程中,您可能会多次使用相同的提示来调用LLM。会得到相同的结果,但由于每次调用都会被计费,因此即使问题相同,调用成本也会重复计算。

在类似场景中,如果类似的问题被类似的用户提出,可能无需再次调用LLM模型。例如,“首尔有哪些著名的旅游景点?”。“首尔有哪些必游的地方?”由于这些问题需要相同类型的答案,可以通过缓存机制减少LLM调用次数。

这称为缓存策略,缓存可以存储在LLM应用程序的内存中,或者存储在外部数据库如Redis或关系型数据库管理系统如MySQL中。

1.9 记忆

对于聊天机器人而言,它必须记住之前对话的内容,并根据之前的对话内容继续对话。为此,可以将之前的对话内容插入到提示中,并将其作为上下文来继续对话。

然而,LLM模型无法存储所有对话内容,因为输入令牌的数量有限,存在几种技术来解决这个问题。例如,这是一种分别存储旧对话内容和最近对话内容的方法。旧对话内容会被总结后存储在LTM(长期记忆)中,而最近的对话内容则会无损地存储在STM(短期记忆)中。

用于存储现有对话内容的功能称为记忆模块。

图1:短期记忆和长期记忆的概念

开发这样一个LLM应用不仅需要LLM模型,还需要各种附加功能。虽然你可以自己开发这些功能,但Langchain是一个将这些常用模式转化为组件的框架。

从下一章起,让我们逐一了解Langchain的功能。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消