AI学习
1.什么是AI?
人工智能(Artificial Intelligence),英文缩写为AI。 是新一轮科技革命和产业变革的重要驱动力量, 是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。
人工智能是智能学科重要的组成部分,它企图了解智能的实质,并生产出一种新的能以与人类智能相似的方式做出反应的智能机器。人工智能是十分广泛的科学,包括机器人、语言识别、图像识别、自然语言处理、专家系统、机器学习,计算机视觉等。
2.什么是大模型?
AI大模型(Large AI Models)是指具有大量参数和复杂结构的人工智能模型。这些模型通常基于深度学习技术,能够处理大量数据并从中学习复杂的模式和关系。大模型的出现,极大地提升了AI在各个领域的表现能力。
典型的大模型例子:
- GPT-3:由OpenAI研发的自然语言处理模型,拥有1750亿参数,能够生成高质量的文本。
- BERT:由Google研发的双向编码器表示模型,在多种自然语言处理任务中表现出色。
- DALL-E:由OpenAI研发的图像生成模型,能够根据文本描述生成图像。
模型分类:

我们在了解智能体之前先了解一下大语言模型(LLM),大语言模型可以接受输入、进行分析或推理,最终进行输出,就好比我们现在常用的 ChatGPT 和 Kimi。
然而,大语言模型无法像人类一样,拥有规划思考能力、运用各种工具与物理世界互动,以及拥有人类的记忆能力。
- LLM:接受输入、思考、输出
- 人类:LLM(接受输入、思考、输出)+ 记忆 + 规划 + 工具
3.AI训练概念
预训练:
预训练是指将一个模型在大量通用数据上进行初步训练,使其学习到一些普遍适用的知识,尤其是在自然语言处理(NLP)中。
LLM 预训练阶段是教给大型语言模型(LLM)如何理解和生成文本的第一阶段。
可以把它看作是阅读大量书籍、文章和网站,以学习语法、事实和语言中的常见模式。在这个阶段,模型通过不同的预训练策略(如自回归语言建模和掩码语言建模)学习文本结构。
例如,自回归模型(如 GPT) 通过预测下一个 token 来学习文本连贯性,而 BERT 等模型则通过遮盖部分 token 并预测它们的原始值,来增强对上下文的理解。
在这一点上,它并没有像人类那样完全“理解”意义——它只是识别模式和概率。
预训练的目标是让模型学习广泛的语言表示,包括语法、语义、上下文关系等,使其在多种下游任务(如文本分类、生成、翻译等)中具备更强的泛化能力。
SFT(监督微调):
“有监督微调”意味着使用有标签的数据来调整一个已预训练好的语言模型(LLM),使其更适应某一特定任务。通常LLM的预训练是无监督的,但微调过程往往是有监督的。
当进行有监督微调时,模型权重会根据与真实标签的差异进行调整。通过这个微调过程,模型能够捕捉到标签数据中特定于某一任务的模式和特点。使得模型更加精确,更好地适应某一特定任务。
以一个简单的例子来说,你有一个已经预训练好的LLM。当输入“我不能登录我的账号,我该怎么办?”时,它可能简单地回答:“尝试使用‘忘记密码’功能来重置你的密码。”这个回答很直接,适用于一般问题,但如果是客服场景,可能就不太合适了。一个好的客服回答应该更有同情心,并且可能不会这么直接,甚至可能包含联系信息或其他细节。这时候,有监督微调就显得非常重要了。经过有监督微调后,你的模型可以提供更加符合特定指导原则的答案。例如,经过一系列专业的培训示例后,你的模型可以更有同情心地回答客服问题。
RLHF(基于人类强化反馈学习):
让AI输出的内容符合人类的价值观,直白点说就是屏蔽黄赌毒等非法信息。
4.大模型的工作流程
1.分词化(Tokenization):

大模型会将我们输入的指令进行分词,如:你好中国。大模型会将这个指令分词为你、好、你好、中、国、中国,。等词组,并把这些词汇映射为ID(相当于词汇在中文字典里面的位置信息),如45、862、1325、752、2694、154。
2.推理:

大模型会根据分词的ID推测下一个可能的出现的词汇,将这些推测出来的词汇组合到一起组成一个句子。
大模型运行过程基本就是线性代数 + 概率论。
5.AGENT
5.1 AGENT是什么?
Agent 可以翻译为代理人、代理商,可以帮助我们完成一些事情的实体,可以是人或机器。
我们可以理解为一个智能助手,只需要我们给出任务,他就可以自己作出决策并执行的智能助手。
在没有智能体之前,我们先考虑一个场景:我们需要写一篇智能体的科普文
- 第一步:先打开搜索引擎搜索一些相关书籍相关文章来进行阅读,打开我们的思路。
- 第二步:参考了大量的书籍和文章后,形成自己的思路,创建文章的大纲。
- 第三步:针对我们的大纲,对每个段落进行编写,编写过程中不断调整。
- 第四步:编写之后需要对文章进行排版,对文章进行校对,也需要对前文进行修改。
- 第五步:写完之后,找朋友帮忙看看,预览一下,看下有什么问题,不合理的地方进行修改。
- 第六步:冥思苦想一个容易爆火的标题,增加浏览量。
没有智能体前,我们要不就是人工处理,每一步都人工去做,要么写一段提示词,让大模型进行信息整理,写大纲,写章节,起标题,并进行修改。
但是有以下缺点:
- 我们需要用不同的提示词来完成不同的任务。
- 大模型没有记忆能力,有上下文限制。
- 提示词会非常复杂,不利于维护。所以我们引出智能体的概念。
智能体核心公式:
我们直接给出智能体的核心公式。Agent(智能体)=LLM(大模型)+ Planning(规划)+Memory(记忆)+ Tools(工具)

人类:LLM(接受输入、思考、输出)+ 记忆 + 规划 + 工具 我们可以看到智能体越来越像人了,但是没有情感。
我们来解读一下上面这张图,以便大家更好地理解。
- 记忆(Memory)
短期记忆:执行任务过程中的上下文,会在子任务的执行过程产生和暂存,在任务完结后被清空。
长期记忆:长时间保留的信息,一般是指外部知识库。 - 规划(Planning)
智能体会把大型任务分解为子任务,并规划执行任务的流程;智能体能体会对任务执行的过程进行思考和反思,从而决定是继续执行任务,或判断任务完结并终止运行。
简单来说,就是我们上面提到的写作流程,收集、写大纲,写章节等等,俗称工作流。 - 工具(Tools)
为智能体配备工具 API,比如:计算器、搜索工具、代码执行器、数据库查询工具等。有了这些工具 API,智能体就可以和物理世界交互,解决实际的问题。
AGENT总的来说就是让AI更聪明。
5.2 思维链
思维链(Chain of Thought, CoT)是一种推理方法,它允许大型语言模型(LLM)在回答复杂问题时,逐步地展现自己的推理过程。
这种方法模拟人类思考的过程,即通过分解问题,一步步推导最终答案,而不是直接给出结果。
CoT 的核心思想是让 AI 在生成答案时显式地展示推理步骤,从而提高复杂推理任务的准确性。
工作原理
思维链的工作方式可以分为以下几个步骤:
- 问题解析:AI 识别问题的核心内容。
- 拆解步骤:将复杂问题分解为多个小步骤,每个步骤都有清晰的逻辑。
- 逐步推理:AI 依次推导出每一步的结果,使得整体推理链更加透明。
- 得到最终答案:在所有步骤完成后,综合各步骤结果,得出最终答案。

思维链(Chain of Thought, CoT)的作用
思维链(CoT)是一种线性推理方法,让 AI 逐步拆解问题、依次推理得出最终答案,适用于确定性问题,比如数学计算、逻辑推理、代码生成等。
🔹 思维链在 AI Agent 中的作用:
- 增强推理能力:让 AI 逐步解释其思维过程,提高可解释性和准确性。
- 提高长程推理效果:适用于数学题、逻辑推理、复杂问答等多步推理任务。
- 优化任务执行流程:帮助 AI 分解任务,按照逻辑顺序执行每一步。
- 提升语言理解能力:让 AI 在文本理解、摘要生成、对话管理中更连贯地推理。
示例:
- 传统方法(无CoT):
Q: 如果一个苹果的价格是 2 元,那么 5 个苹果的价格是多少?
A: 10 元。 - 思维链方法(CoT):
Q: 如果一个苹果的价格是 2 元,那么 5 个苹果的价格是多少?
A: 我们知道 1 个苹果的价格是 2 元。
5 个苹果的总价 = 2 × 5 = 10 元。
所以答案是 10 元。
这样做的好处是让 AI 解释自己的推理过程,从而提高准确性。
5.3 思维树
思维树(Tree of Thought, ToT)是一种增强 AI 逻辑推理能力的方法,它允许 AI 通过分支探索不同的推理路径,类似于人类在解决复杂问题时考虑多个可能的方案,而不是按照单一线性思维进行推理。

思维树(Tree of Thought, ToT)的作用
思维树(ToT)是一种分支推理方法,让 AI 探索多个可能的推理路径,选择最优解,适用于不确定性问题,比如博弈决策、路径规划、策略优化等。
🔹 思维树在 AI Agent 中的作用:
- 支持多路径探索:让 AI 在不同决策路径中评估最佳方案,提高决策质量。
- 优化复杂问题求解:适用于棋类 AI、自动驾驶、供应链优化等任务。
- 增强自适应能力:AI 可以在不同环境中动态调整推理路径,提高适应性。
- 提高长期规划能力:适用于多步规划、优化问题,如投资策略、游戏 AI。
示例:
问题:“AI 在一个棋局中,该如何选择最佳走法?”
思维树推理:
- 计算当前局势的所有可能走法
- 评估每种走法的潜在收益和风险
- 剪枝(去掉明显不利的走法)
- 选择胜率最高的路径
- 执行最佳走法
5.4 ReAct
5.4.1 为什么需要ReAct
我们知道,LLM在训练完毕后,会具备较强的推理能力,但是他的知识随着时间的推移会过时,但是又不可能经常性的去训练LLM,毕竟每次训练的成本太高了。
那怎么解决这个问题?机器可以像人一样自己主动去学习和搜索新知识呀。
那机器怎么知道什么时候该去搜索知识?什么时候时候该去调用什么样的工具解决当前的问题呢?
ReAct应运而生。ReAct的核心在于,推理和行动。
5.4.2 ReAct的定义
ReAct(Reasoning and Action)是一个框架,其概念来源于一篇论文,其核心思想,就是通过思维链的方式,引导模型将复杂问题进行拆分,一步一步地进行推理(Reasoning)和行动(Action),同时还引入了观察(Observation)环节,在每次执行(Action)之后,都会先观察(Observation)当前现状,然后再进行下一步的推理(Reason)。
ReAct这个框架,就是要让LLM,进行推理,然后采取行动与外界环境互动。
ReAct这个框架,就是要让开发者一步步引导LLM进行推理,然后根据推理的结果,判断采取哪个行动。
5.4.3 ReAct的核心组件
ReAct框架的核心组件包括:
- 思维链(Chain of Thought):将一个大的复杂任务进行拆解,拆解成多个思维步骤。
- 推理(Reasoning):负责分析和处理输入的数据,生成有效的决策。
- 行动(Action):执行具体的操作,比如搜索、执行代码,或者其余自定义的行动。
- 观察(Observation):监控和收集环境反馈的数据,为下一步的推理和行动提供依据。
5.4.5 ReAct工作流程
ReAct框架的工作流程如下:
- 输入数据:接收用户输入或环境数据。
- 推理阶段:分析输入数据,生成决策和计划。
- 行动阶段:根据决策执行具体操作。
- 观察阶段:监控操作结果,收集反馈数据。
- 循环迭代:根据反馈数据调整推理和行动,持续优化结果。
ReAct是一个思维链框架。
5.5 记忆
短记忆:就像电脑的内存,负责存储当前对话中的信息,帮助 AI 理解用户的实时意图。例如,用户问“第二个选项怎么样?”,AI 需要记住之前讨论过的选项才能给出合适的回答。
短记忆的特点:
- 维持当前对话的上下文,通常只针对一个会话。
- 依赖对话历史或会话状态实现。
- 受限于 token 长度(通常 4k 到 32k tokens)或会话时长。
- 会话结束后,自动清空。
长记忆: 就像电脑的硬盘,负责存储用户的身份、偏好、历史互动等信息,让 AI 产品能够像个知己一样,在每一次互动中都能更贴心更有温度。例如,AI 可以记住用户喜欢简单的解释,在某些事情上遇到过困难等等。
长记忆的特点:
- 跨会话保存:不局限于当前对话。
- 需要结构化存储和高效的检索机制。
- 用于存储模式、偏好和历史互动信息。
- 需要定期更新和维护。
6.RAG
6.1 RAG是什么?
RAG检索增强生成(RAG, Retrieval-Augmented Generation):在某些问题上AI也并不能给出准确答案;RAG为AI整合庞大知识库中检索到的相关信息,并以此为基础,指导大型语言模型生成更为精准的答案。
6.2 RAG的工作流程
RAG 是一个完整的系统,其工作流程可以简单地分为数据处理、检索、增强和生成四个阶段:
- 数据处理阶段
- 对原始数据进行清洗和处理。
- 将处理后的数据转化为检索模型可以使用的格式。
- 将处理后的数据存储在对应的数据库中。
- 检索阶段
- 将用户的问题输入到检索系统中,从数据库中检索相关信息。
- 增强阶段
- 对检索到的信息进行处理和增强,以便生成模型可以更好地理解和使用。
- 生成阶段
- 将增强后的信息输入到生成模型中,生成模型根据这些信息生成答案。
6.3 RAG和微调的区别
在提升大语言模型效果中,RAG 和 微调(Finetune)是两种主流的方法。
微调: 通过在特定数据集上进一步训练大语言模型,来提升模型在特定任务上的表现。
RAG 和 微调的对比可以参考下表:
| 特征比较 | RAG | 微调 |
|---|---|---|
| 知识更新 | 直接更新检索知识库,无需重新训练。信息更新成本低,适合动态变化的数据。 | 通常需要重新训练来保持知识和数据的更新。更新成本高,适合静态数据。 |
| 外部知识 | 擅长利用外部资源,特别适合处理文档或其他结构化/非结构化数据库。 | 将外部知识学习到 LLM 内部。 |
| 数据处理 | 对数据的处理和操作要求极低。 | 依赖于构建高质量的数据集,有限的数据集可能无法显著提高性能。 |
| 模型定制 | 侧重于信息检索和融合外部知识,但可能无法充分定制模型行为或写作风格。 | 可以根据特定风格或术语调整 LLM 行为、写作风格或特定领域知识。 |
| 可解释性 | 可以追溯到具体的数据来源,有较好的可解释性和可追踪性。 | 黑盒子,可解释性相对较低。 |
| 计算资源 | 需要额外的资源来支持检索机制和数据库的维护。 | 依赖高质量的训练数据集和微调目标,对计算资源的要求较高。 |
| 推理延迟 | 增加了检索步骤的耗时 | 单纯 LLM 生成的耗时 |
| 降低幻觉 | 通过检索到的真实信息生成回答,降低了产生幻觉的概率。 | 模型学习特定领域的数据有助于减少幻觉,但面对未见过的输入时仍可能出现幻觉。 |
| 伦理隐私 | 检索和使用外部数据可能引发伦理和隐私方面的问题。 | 训练数据中的敏感信息需要妥善处理,以防泄露。 |
7.LangChain
7.1 LangChain是什么?
LangChain是一个开源框架,旨在帮助开发者们快速构建基于大型语言模型的端到端应用程序或工作流程。
充分利用了大型语言模型的强大能力,以便开发各种下游应用。它的目标是为各种大型语言模型应用提供通用接口,从而简化应用程序的开发流程。具体来说,LangChain 框架可以实现数据感知和环境互动,也就是说,它能够让语言模型与其他数据来源连接,并且允许语言模型与其所处的环境进行互动。
7.2 LangChain的核心组件
LangChian 作为一个大语言模型开发框架,可以将 LLM 模型(对话模型、embedding 模型等)、向量数据库、交互层 Prompt、外部知识、外部代理工具整合到一起,进而可以自由构建 LLM 应用。 LangChain 主要由以下 6 个核心组件组成:
- 模型输入/输出(Model I/O):与语言模型交互的接口
- 数据连接(Data connection):与特定应用程序的数据进行交互的接口
- 链(Chains):将组件组合实现端到端应用。比如后续我们会将搭建
检索问答链来完成检索问答。 - 记忆(Memory):用于链的多次运行之间持久化应用程序状态;
- 代理(Agents):扩展模型的推理能力。用于复杂的应用的调用序列;
- 回调(Callbacks):扩展模型的推理能力。用于复杂的应用的调用序列;
在开发过程中,我们可以根据自身需求灵活地进行组合。
7.3 LangChain的生态
- LangChain Community: 专注于第三方集成,极大地丰富了 LangChain 的生态系统,使得开发者可以更容易地构建复杂和强大的应用程序,同时也促进了社区的合作和共享。
- LangChain Core: LangChain 框架的核心库、核心组件,提供了基础抽象和 LangChain 表达式语言(LCEL),提供基础架构和工具,用于构建、运行和与 LLM 交互的应用程序,为 LangChain 应用程序的开发提供了坚实的基础。我们后续会用到的处理文档、格式化 prompt、输出解析等都来自这个库。
- LangChain CLI: 命令行工具,使开发者能够通过终端与 LangChain 框架交互,执行项目初始化、测试、部署等任务。提高开发效率,让开发者能够通过简单的命令来管理整个应用程序的生命周期。
- LangServe: 部署服务,用于将 LangChain 应用程序部署到云端,提供可扩展、高可用的托管解决方案,并带有监控和日志功能。简化部署流程,让开发者可以专注于应用程序的开发,而不必担心底层的基础设施和运维工作。
- LangSmith: 开发者平台,专注于 LangChain 应用程序的开发、调试和测试,提供可视化界面和性能分析工具,旨在帮助开发者提高应用程序的质量,确保它们在部署前达到预期的性能和稳定性标准。
7.4 案例
7.4.1 创建一个聊天机器人
def main():
# 创建一个ChatOpenAI实例
llm = ChatOpenAI(
model="deepseek-chat",
temperature=0.7,
n=1,
max_tokens=1000,
streaming=True,
api_key=SecretStr("key"),
base_url="https://api.deepseek.com",
)
# 设置缓存
cache = SQLiteCache(database_path="../langchain.db")
set_llm_cache(cache)
# 创建提示词模板
prompt = ChatPromptTemplate([
("system", "你是一个资深程序员,你能解决任何软件开发中遇到的问题,你的名字叫小猿"),
("user", "{user_input}"),
])
output = StrOutputParser()
chain = prompt | llm | output
result = chain.stream(
{
"user_input": "你是谁"
}
)
for e in result:
print(e, end="")