-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
318 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,152 @@ | ||
--- | ||
title: "工作流" | ||
slug: workflow | ||
--- | ||
|
||
![](https://blog.langchain.dev/content/images/2024/01/supervisor-diagram.png) | ||
|
||
## 为什么需要工作流 | ||
|
||
随着Agent能力越来越强大,已经可以协助甚至替代人类进行思考、决策,进而逐渐[替代人类的部分工作](https://www.deeplearning.ai/the-batch/the-dawning-age-of-agents/), | ||
|
||
:::info 友情提示 | ||
|
||
此时掌握Agent的底层原理以及如何运用它至关重要,会成为未来有竞争力的技能之一。 | ||
|
||
::: | ||
|
||
而当Agent深入到各行各业当中后,会发现能力远远不足以满足要求,此时就需要在当前有限的能力场景下完成复杂的功能,沿用人类的思维方式就需要:将一个复杂的问题拆分成多个简单的子问题,此时将大大提升解决问题的成功率,那这种将复杂问题根据业务逻辑拆分成多个子问题的方法论就叫做:`Agent Workflow`。 | ||
|
||
**强烈推荐大家先看吴恩达老师的这篇演讲来入门了解** Agent Workflow: | ||
|
||
<iframe | ||
width="100%" | ||
height="515px" | ||
src="https://www.youtube.com/embed/sal78ACtGTc" | ||
frameborder="0" | ||
allow="autoplay; encrypted-media" | ||
allowfullscreen> | ||
</iframe> | ||
|
||
所以,当面对复杂的业务场景,`Agent Workflow Is All You Need`。 | ||
|
||
### 自动化的进化 | ||
|
||
从历史发展的角度来看,自动化能够大大提高人类的生产力,而当前绝大多数的自动化都是rule-based,通过在限定场景下编写一套规则来让机器自动运行,一旦超出预设场景时,大概率将无法正常工作,这对于企业而言是一个不可预估的潜在风险成本。 | ||
|
||
以上自动化流程毫无智能性而言,而当前是人工智能发展的元年,人工智能正在像二维码一样在中国疯狂生长,生根发芽,逐渐形成一个庞大的产业链。 | ||
|
||
### Agent 应用场景 | ||
|
||
目前 Agent 在业务场景中的主要应用场景为: | ||
|
||
* 执行固定业务操作:例如,当用户轻声一句“我要回家了”,此时Agent便如一位贴心的管家,依据用户的偏好,悄然点亮房间的灯光,调节空调至宜人的温度,启动炊具开始煮饭,甚至播放起今日的热门歌曲,营造温馨的归家氛围。 | ||
* 做出关键决策:当用户询问关于产品的信息时,Agent则化身智者,根据用户的当前状态与需求,审慎决定是否深入探索私有产品数据库的奥秘,或直接以精准的信息回应用户。这一系列过程,皆是Decision-Making智慧的展现。 | ||
* 知识库问答:在多数场景下,Agent需在企业或个人的知识宝库中精准挖掘,以解答用户的每一个疑问。 | ||
* 数据驱动的新场景应对:面对错综复杂的场景,尤其是当LLM需遵循新的范式时,便需以丰富的训练数据为养分,让模型在学习的旅程中不断成长,掌握新的范式与知识,进而在业务垂类中展现出更卓越的能力。 | ||
* 私人助手的未来愿景:未来已来,每位用户都将拥有一位专属的私人助手,如同身边的贾维斯,无论是生活的琐碎、工作的挑战还是学习的困惑,它都能一一化解。私人助手深谙每位用户的喜好、研究方向与生活习惯,以更加智能、个性化的方式助力人们的生活。 | ||
* 自动化执行的魅力:在制造业与物流的广阔舞台上,AI助手犹如一位精明的调度师,根据物品的状态、运输的进度以及用户的需求,精心规划出一条条高效的自动化流程。在它的指挥下,货物的传输与流转变得井然有序,工作效率随之飙升。 | ||
|
||
那具体通过什么方式来集成到现有的业务系统当中去呢? | ||
|
||
* `数据流转`:通过在关键数据处理的节点中加入 Agent 处理机制,进而提升对于对多数据源、复杂场景下的数据处理效率,从而提升数据监控和决策的过程。 | ||
* `智能决策`:Agent 非常擅长处理复杂的数据,基于不同的数据源分析并给出一个符合业务偏好的决策。 | ||
* `反馈机制`:对于安全场景或者需要人类对流程或数据进行监控的业务流程当中,可以使用Agent来对数据进行分析并报警,提取出关键信息进而让人类专家进行干预,从而不断提高系统的安全和稳定性。 | ||
|
||
### 落地场景 | ||
|
||
从理论上而言,所有涉及到决策的业务系统中,都可以使用 Agent 来重构,进而降低商业场景下的决策效率、人力成本。 | ||
|
||
* **金融** | ||
|
||
Agent 可以应用在量化交易、风险控制以及欺诈检测等场景,在实时交易的过程中,能够根据大量的交易数据来做智能决策,甚至是识别异常情况,进而让用户规避异常风险的发生。 | ||
|
||
* **医疗健康** | ||
|
||
Agent 能够根据患者的历史病情,当前检查报告以及症状表现给出患者的治疗方案。 | ||
|
||
这一切都可以发生在患者的家庭里面:以后每一个人都可以拥有一个AI健康医生,时刻给出健康建议。 | ||
|
||
* **制造业** | ||
|
||
传统制造业的流水线当中都是预设好的流程,而Agent能够根据每个流程中的平均执行时间以及依赖关系来动态优化产品线,进而提升产品制造效率。 | ||
|
||
甚至能够制造各种智能机械手臂、智能塑性器等,针对于异常产品能够进行智能调整,进而提升生产线的良品率。 | ||
|
||
* **教育** | ||
|
||
我们总是很担心AI 会替代人类,可是在教育行业,Agent 可以根据你的学习内容对你进行提问,逐步引导你掌握ground truth 的知识点。 | ||
|
||
:::info 担忧 | ||
|
||
有了Agent之后,孩子的学习方式很可能会发生变化,甚至考试内容也会加入 写Prompt 的项目。 | ||
|
||
::: | ||
|
||
对于教育,Agent可以做的产品很多,从人类的记忆、知识点获取、知识运用以及思维锻炼等不同层面来辅助人类更好的成长。 | ||
|
||
* **创造** | ||
|
||
AIGC 时代来临之后,人类可创造的内容就越多,人人都是内容的制造者,可以通过各种AI工具发布自己的想法,从而让世界每个人都知道自己。 | ||
|
||
## 工作流的原理 | ||
|
||
### 规划(Planning) | ||
|
||
LLM作为Agent系统的大脑,负责规划任务执行的步骤。它可以根据输入的指令或问题,自主决定如何拆分任务为更小的子任务,并确定执行顺序。 | ||
规划过程可能涉及任务分解、自我反思、记忆(包括短期记忆和长期记忆)以及工具使用等关键功能。 | ||
|
||
### 执行(Execution) | ||
|
||
每个Agent根据规划的结果,执行分配给自己的子任务。这些任务可能包括数据收集、处理、分析以及生成响应等。 | ||
Agent之间通过自然语言或其他通信协议进行交互,确保任务执行的协同性和一致性。 | ||
|
||
### 反馈(Feedback) | ||
|
||
在任务执行过程中,Agent可以收集反馈信息,包括任务执行的结果、遇到的问题以及用户反馈等。 | ||
这些反馈信息被用于评估任务执行的效果,并为后续的调整和优化提供依据。 | ||
|
||
### 反思(Reflection) | ||
根据反馈结果,LLM对规划进行调整,优化任务执行的策略和步骤。 | ||
Agent的行为和规则也可能根据性能反馈和环境变化进行调整,以确保任务的高效完成。 | ||
|
||
### 多智能体协作 | ||
在多智能体协作工作流中,每个Agent都有其专长和角色,通过协作完成整体任务。 | ||
这种协作方式不仅提高了任务执行的效率和质量,还增强了系统的鲁棒性和适应性。 | ||
|
||
## 优势和挑战 | ||
|
||
### 优势 | ||
|
||
高效性:通过任务分解和并行执行,提高了任务处理的效率。 | ||
准确性:通过引入反馈循环和迭代优化,提高了任务执行的准确性。 | ||
灵活性:Agent可定制和可扩展,能够适应不同的任务需求和环境变化。 | ||
|
||
### 挑战 | ||
复杂性:规划过程的复杂性可能导致难以预测的结果。 | ||
计算资源:训练和维护大型语言模型需要消耗大量的计算资源。 | ||
公平性与偏见:训练数据中的偏见可能反映在模型生成的内容中,需要采取措施确保生成内容的公平性和无偏见。 | ||
|
||
## 开源项目 | ||
|
||
ChatDev:一个虚拟聊天驱动的软件开发公司,利用LLMs推动软件开发过程,将开发过程细分为设计、编码、测试和文档编制四个阶段,每个阶段由不同的Agent协作完成。 | ||
MetaGPT:一个基于元编程框架的多智能体协作系统,通过引入结构化的工作流程和专门化的角色分配,提升了任务分解和执行的效率。 | ||
AutoGen:一个开源框架,旨在通过多代理对话来构建LLM应用程序,代理可基于LLM、人类输入和工具进行操作,以简化复杂任务的解决。 | ||
|
||
## Agent 和 Agent Workflow 的关系 | ||
|
||
首先LLM 是生成能力的底座能力。 | ||
|
||
其次,Agent 是基于LLM构建的具备一定原子业务功能的模块,比如说 判断当前用户意图、判断是否要调用某一个工具来完成用户意图、是否要更新当前用户状态、是否要更新记忆内容等。 | ||
|
||
最后,Agent Workflow 是一个基于Agent构建的一套业务工作流,旨在完成一个复杂的业务流程。 | ||
|
||
所以,LLM、Agent和Agent Workflow 是一个递进依赖的关系。 | ||
|
||
## Agent Workflow 的未来趋势 | ||
|
||
首先可以确定的是 Agent 未来是要赋能各行各业,所以如何将其落地在实际场景中是一个需要时代验证的问题,不过通过目前的经验来看,Workflow 是一个具备高可行性、高适配性的技术方向,通过构建有向图的方式来解决实际业务中的If-Else 逻辑(至少绝大部分的业务逻辑就是 If-Else)。 | ||
|
||
## 参考文章 | ||
|
||
* [The Integration of AI Agents in Enterprise Systems: A Guide to Agentic Workflows](https://www.quixl.ai/blog/the-integration-of-ai-agents-in-enterprise-systems-a-guide-to-agentic-workflows/) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
label: "Agent 介绍" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,151 @@ | ||
--- | ||
sidebar_position: 1 | ||
--- | ||
|
||
# Transformer | ||
|
||
## 介绍 | ||
|
||
### 自然语言处理 | ||
|
||
自然语言处理(Natural Language Process)是研究如何让计算机理解、生成和处理人类自然语言的技术。自然语言包括各种人类日常交流的语言,如汉语、英语、日语等。NLP的目标是实现人类与计算机之间的有效沟通,使计算机能够理解和响应人类的语言输入。 | ||
|
||
传统NLP的核心任务包括但不限于文本分类、情感分析、命名实体识别、语义角色标注、语义解析、语言翻译、语音识别、语音合成等。这些任务涉及语言的各个层面,从词汇、语法到语义和语用,旨在使计算机能够全面理解和处理人类语言。 | ||
|
||
### 语言模型(Language Model, LM) | ||
|
||
![](https://cdn.prod.website-files.com/6082f2094ccb2d6ff32eb5d8/63f8c8b714add0ec31600cd0_https%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252Fd0c944f4-218f-4730-b988-15bcb3aecb5e%252FUntitled.png) | ||
|
||
> 图片来源于:https://attri.ai/blog/introduction-to-large-language-models | ||
自然语言处理(Natural Language Processing, NLP)中的语言模型(Language Model, LM)主要用于预测给定上下文中的下一个词或词序列的概率,故也可以认为它也是一个统计模型,以前被广泛应用于文本生成、语音识别、机器翻译等任务中。 | ||
|
||
### 大型语言模型(Large Language Model, LLM) | ||
|
||
从字面上来看,大语言模型相比语言模型主要在**大**字上,也就是模型的参数量上要更大。这其实就带来了很多问题: | ||
|
||
* 所需要的训练数据量更大,语料覆盖范围更广。 | ||
* 需要更多的算力来训练模型。 | ||
* 需要更多的机器来得以支撑整个大模型的训练。 | ||
* 如何在有限的计算资源下有效的进行模型,此时就需要多种模型训练策略。 | ||
|
||
这些问题在大语言模型时代都是需要解决的。 | ||
|
||
也正是因为模型更大,训练语料更多,大语言模型的各种能力就涌现出来了,可以说是大力出奇迹。 | ||
|
||
## Transformer的基础理论 | ||
|
||
Transformer是2017年Google提出的一种基于注意力机制的序列到序列模型,它被广泛应用于自然语言处理任务中。Transformer在NLP领域中的地位和影响力不言而喻。 | ||
|
||
同时也是Bert、GPT、Llama等模型的基座方法,只是不同模型可能在一些细节上不一样,比如说位置编码、LayerNorm、FFN 等模块,整体上还是沿用 Transformer 的架构,接下来我来详细介绍一下Transformer中的每一个核心模块方法。 | ||
|
||
### 自注意力机制(Self-Attention) | ||
|
||
自注意力机制是Transformer的核心,也是其最主要的创新点。自注意力机制可以看作是一种特殊的注意机制,它能够捕捉输入序列中不同位置的语义信息,并利用这些信息对输出序列进行编码。以下为自注意力机制的计算结构图: | ||
|
||
![](https://vaclavkosar.com/images/expire-span-attention-recap.png) | ||
|
||
其核心的计算公式为: | ||
|
||
![](https://benjaminwarner.dev/img/2022/tinkering-with-attention-pooling/self-attention-matrix-calculation-attention.webp) | ||
|
||
$$ | ||
\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V | ||
$$ | ||
|
||
其中,$Q$、$K$、$V$分别代表查询(Query)、键(Key)、值(Value)矩阵,它们是通过输入序列与不同的权重矩阵相乘得到的。$d_k$是键(Key)向量的维度,用于缩放点积结果,防止其过大导致softmax函数的梯度消失问题。$\text{softmax}$函数用于将点积结果转换为概率分布,最后通过与值(Value)矩阵相乘,得到加权求和的输出。 | ||
|
||
```python https://github.com/huggingface/transformers/blob/main/src/transformers/models/bert/modeling_bert.py#L222 | ||
|
||
``` | ||
|
||
Self-Attention 是双向编码机制,第 i 个token 可以看到当前输入文本中的所有token(i 前面的、i 后面的甚至i自己也是可以看得到的),其中手绘示意效果图如下所示: | ||
|
||
![](https://vaclavkosar.com/images/self-attention-calculation-visualisation.png) | ||
|
||
|
||
大家也可以详细阅读一下优秀博客: | ||
* [Transformer's Self-Attention Mechanism Simplified](https://vaclavkosar.com/ml/transformers-self-attention-mechanism-simplified) | ||
* [超详细图解Self-Attention](https://zhuanlan.zhihu.com/p/410776234) | ||
|
||
- 自注意力机制的基本原理 | ||
- Query、Key、Value的计算过程 | ||
- 多头注意力机制(Multi-Head Attention)的引入与优势 | ||
|
||
- **2.2 位置编码(Positional Encoding)** | ||
- 位置编码的必要性 | ||
- 正弦和余弦函数在位置编码中的应用 | ||
- 位置编码与词嵌入的结合方式 | ||
|
||
- **2.3 Transformer整体架构** | ||
- Encoder-Decoder结构概述 | ||
- Encoder的组成与工作原理 | ||
- Decoder的组成与工作原理 | ||
- 残差连接与层归一化在Transformer中的作用 | ||
|
||
### 第三章:Transformer的核心组件 | ||
- **3.1 输入层** | ||
- 文本分词与Tokenization | ||
- Byte Pair Encoding(BPE)算法的应用 | ||
- 词嵌入(Word Embedding)的生成 | ||
|
||
- **3.2 自注意力层** | ||
- 自注意力层的详细工作流程 | ||
- 自注意力机制在处理长距离依赖上的优势 | ||
- 自注意力层的并行计算能力 | ||
|
||
- **3.3 前馈神经网络层(Feed Forward Neural Network Layer)** | ||
- 前馈神经网络层的作用与功能 | ||
- 非线性变换对模型性能的提升 | ||
- 前馈神经网络层与自注意力层的结合方式 | ||
|
||
### 第四章:Transformer的变种与扩展 | ||
- **4.1 基于Transformer的预训练语言模型(Pretrained Language Model, PLM)** | ||
- GPT系列模型介绍 | ||
- BERT模型及其特点 | ||
- 其他基于Transformer的预训练模型概览 | ||
|
||
- **4.2 Transformer在特定任务中的应用** | ||
- 机器翻译 | ||
- 文本生成 | ||
- 文本分类与情感分析 | ||
- 对话系统 | ||
|
||
- **4.3 Transformer的优化与改进** | ||
- 模型参数的压缩与剪枝 | ||
- 训练效率的提升方法 | ||
- 跨语言与多模态处理能力的扩展 | ||
|
||
### 第五章:Transformer的实际应用案例 | ||
- **5.1 在搜索引擎中的应用** | ||
- 基于Transformer的语义搜索技术 | ||
- 搜索结果的相关性与准确性提升 | ||
|
||
- **5.2 在语音识别中的应用** | ||
- Transformer在语音识别模型中的构建 | ||
- 识别准确率的提升与实时性优化 | ||
|
||
- **5.3 在推荐系统中的应用** | ||
- 基于Transformer的用户兴趣建模 | ||
- 个性化推荐算法的改进 | ||
|
||
### 第六章:未来展望与挑战 | ||
- **6.1 Transformer技术的未来发展趋势** | ||
- 更高效的模型架构与训练方法 | ||
- 更广泛的应用场景拓展 | ||
|
||
- **6.2 面临的挑战与问题** | ||
- 计算资源消耗与模型可解释性 | ||
- 数据隐私与安全保护 | ||
- 多语言与跨文化的处理能力提升 | ||
|
||
### 第七章:结论 | ||
- **7.1 总结Transformer在LLM中的核心作用** | ||
- **7.2 强调Transformer对NLP领域的重要意义** | ||
- **7.3 展望未来NLP与AI领域的发展前景** | ||
|
||
这个大纲涵盖了Transformer在LLM中的基础理论、核心组件、变种与扩展、实际应用案例以及未来展望与挑战等多个方面,力求全面且详细地介绍Transformer在LLM中的重要作用与影响。 | ||
|
||
## 参考文章 | ||
|
||
* [Transformer's Self-Attention Mechanism Simplified](https://vaclavkosar.com/ml/transformers-self-attention-mechanism-simplified) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
label: "大语言模型" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
label: "提示词工程" |
10 changes: 10 additions & 0 deletions
10
docs/03-agent-application/01-retrieval-augmented-generation.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
--- | ||
title: "Retrieval Augmented Generation" | ||
--- | ||
|
||
## 介绍 | ||
|
||
## 参考文章 | ||
|
||
* [Retrieval Augmented Generation: Streamlining the creation of intelligent natural language processing models](https://ai.meta.com/blog/retrieval-augmented-generation-streamlining-the-creation-of-intelligent-natural-language-processing-models/) | ||
* [检索增强生成 (RAG)](https://www.promptingguide.ai/zh/techniques/rag) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
label: "Agent 应用" |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
label: "论文领读" |