大模型应用开发基础

本章主要是从开发的角度,认识大模型的底层机制及常用的

LLMS 的输入处理

LLMs 的输入对于使用者来是 prompt,但是实际开发不是直接将文本输入到 LLMs,而是经过分词、嵌入两个步骤。分词就是将句子划分为语义最小单元 (token),嵌入是获得 token 的高维嵌入

在实际进行嵌入时,还涉及句子嵌入,一般通过以下方式获得

  • 将句子填充到固定长度,并使用模型提取所有 token 的向量。然后将相同位置的向量加起来并归一化和标准化,得到最终的句子向量
  • 在输入时设计一个 token 位置汇总其他 token 位置的信息,最后取这个特殊位置的 token embedding 作为句子嵌入,如模型 vit

LLMs 的结构化输出

如果 LLMs 的输出是随机的,那么就无法预估其输出,也就无法在 LLMs 后接入流程,导致 LLMs 应用场景有限。因此需要设计方法从 LLMs 获得固定的输出,在 langchian 中,通过继承 BaseModel 控制模型输出

LLMs 的函数调用

LLMs 浓缩了大量的知识在自己身上,但是这些知识存在延迟性,错误性,如果只是让 LLMs 从自己的知识获得答案,答案可能是过时的、不准确的。因此通过 “函数调用” 的方式,给 LLMs 装上手脚,让它能去获取最新数据,能使用计算器工具

LLMs 的代理

使用工具可以一定程度解决 LLMs 的幻觉与及时性,但是无法解决:复杂的、需要多次 FuntionCalling 的问题?这就需要 Agent ,一个用于知识,记忆,工具及自主行动能力的概念

Agent = 大语言模型(LLM) + 观察 + 思考 + 行动 + 记忆

这个公式概括了智能体的功能本质。为了理解每个组成部分,让我们将其与人类进行类比:

  1. 大语言模型(LLM):LLM 作为智能体的 “大脑” 部分,使其能够处理信息,从交互中学习,做出决策并执行行动。
  2. 观察:这是智能体的感知机制,使其能够感知其环境。智能体可能会接收来自另一个智能体的文本消息、来自监视摄像头的视觉数据或来自客户服务录音的音频等一系列信号。这些观察构成了所有后续行动的基础。
  3. 思考:思考过程涉及分析观察结果和记忆内容并考虑可能的行动。这是智能体内部的决策过程,其可能由 LLM 进行驱动。
  4. 行动:这些是智能体对其思考和观察的显式响应。行动可以是利用 LLM 生成代码,或是手动预定义的操作,如阅读本地文件。此外,智能体还可以执行使用工具的操作,包括在互联网上搜索天气,使用计算器进行数学计算等。
  5. 记忆:智能体的记忆存储过去的经验。这对学习至关重要,因为它允许智能体参考先前的结果并据此调整未来的行动。

LLMs 的多代理

多个智能体按照标准流程解决问题

多智能体 = 智能体 + 环境 + 标准流程(SOP) + 通信 + 经济

这些组件各自发挥着重要的作用:

  1. 智能体:在上面单独定义的基础上,在多智能体系统中的智能体协同工作,每个智能体都具备独特有的 LLM、观察、思考、行动和记忆。
  2. 环境:环境是智能体生存和互动的公共场所。智能体从环境中观察到重要信息,并发布行动的输出结果以供其他智能体使用。
  3. 标准流程(SOP):这些是管理智能体行动和交互的既定程序,确保系统内部的有序和高效运作。例如,在汽车制造的 SOP 中,一个智能体焊接汽车零件,而另一个安装电缆,保持装配线的有序运作。
  4. 通信:通信是智能体之间信息交流的过程。它对于系统内的协作、谈判和竞争至关重要。
  5. 经济:这指的是多智能体环境中的价值交换系统,决定资源分配和任务优先级。

LLMs 的工作流

由事件驱动的多 Agent 软件架构,通过定义事件的起点、中间流转规则及终点,既包含一定的人工流程也包含由 Agent 自主决定的流程,和多 Agent 的概念有很大程度重叠