Skip to content

Commit 0bde058

Browse files
committed
translate readme.md in Chinese between chapter16 to chapter 21
1 parent b88b09e commit 0bde058

File tree

6 files changed

+1142
-0
lines changed

6 files changed

+1142
-0
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
[![开放原始码模型](../../images/16-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson16-gh?WT.mc_id=academic-105485-koreyst)
2+
3+
## 简介
4+
5+
开放原始码 LLMs 的世界令人兴奋且不断演变。本课程旨在深入了解开放原始码模型。如果您正在寻找有关专有模型与开放原始码模型比较的信息,请参阅["探索和比较不同的 LLMs" 课程](../../../02-exploring-and-comparing-different-llms/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)。本课程还将涵盖微调的主题,但更详细的解释可以在["微调 LLMs" 课程](../../../18-fine-tuning/translations/tw/README.md?WT.mc_id=academic-105485-koreyst)中找到。
6+
7+
## 学习目标
8+
9+
- 了解开放原始码模型
10+
- 了解使用开放原始码模型的好处
11+
- 探索 Hugging Face 和 Azure AI Studio 上可用的开放模型
12+
13+
## 什么是开放原始码模型?
14+
15+
开放原始码软件在各个领域的技术发展中扮演了至关重要的角色。开放原始码倡议(OSI)已经定义了[软件的10个标准](https://web.archive.org/web/20241126001143/https://opensource.org/osd?WT.mc_id=academic-105485-koreyst),以将其归类为开放原始码。源程序必须在OSI批准的许可下公开共享。
16+
17+
虽然 LLMs 的开发与软件开发有相似的元素,但过程并不完全相同。这在社区中引发了许多关于 LLMs 背景下开放原始码定义的讨论。要使模型符合传统的开放原始码定义,以下信息应该公开可用:
18+
19+
- 用于训练模型的数据集。
20+
- 作为训练的一部分的完整模型权重。
21+
- 评估代码。
22+
- 微调代码。
23+
- 完整模型权重和训练指标。
24+
25+
目前只有少数模型符合此标准。[由Allen Institute for Artificial Intelligence (AllenAI) 创建的OLMo模型](https://huggingface.co/allenai/OLMo-7B?WT.mc_id=academic-105485-koreyst) 就是其中之一。
26+
27+
在本课程中,我们将这些模型称为「开放模型」,因为在撰写时它们可能不符合上述标准。
28+
29+
## 开放模型的好处
30+
31+
**高度可定制** - 由于开放模型发布时附有详细的训练信息,研究人员和开发人员可以修改模型的内部结构。这使得能够建立即高度专门化的模型,针对特定任务或研究领域进行微调。一些范例包括程序生成器、数学运算和生物学。
32+
33+
**成本** - 使用和部署这些模型的每个 token 成本低于专有模型。在构建生成式 AI 应用程序时,应该在您的使用案例中考量这些模型的性能与价格。
34+
35+
![Model Cost](../../images/model-price.png?WT.mc_id=academic-105485-koreyst)
36+
来源: 人工分析
37+
38+
**灵活性** - 使用开放模型使您在使用不同模型或结合它们方面更加灵活。一个范例是 [HuggingChat Assistants](https://huggingface.co/chat?WT.mc_id=academic-105485-koreyst),用户可以直接在用户界面中选择所使用的模型:
39+
40+
![选择模型](../../images/choose-model.png?WT.mc_id=academic-105485-koreyst)
41+
42+
## 探索不同的开放模型
43+
44+
### Llama 2
45+
46+
[LLama2](https://huggingface.co/meta-llama?WT.mc_id=academic-105485-koreyst), 由 Meta 开发,是一个针对聊天应用程序优化的开放模型。这是由于其微调方法,包括大量的对话和人类反馈。通过这种方法,模型产生更多符合人类期望的结果,从而提供更好的用户体验。
47+
48+
一些经过微调的Llama版本范例包括专门用于日语的[Japanese Llama](https://huggingface.co/elyza/ELYZA-japanese-Llama-2-7b?WT.mc_id=academic-105485-koreyst)和增强版基础模型的[Llama Pro](https://huggingface.co/TencentARC/LLaMA-Pro-8B?WT.mc_id=academic-105485-koreyst)
49+
50+
### Mistral
51+
52+
[Mistral](https://huggingface.co/mistralai?WT.mc_id=academic-105485-koreyst)是一个专注于高性能和效率的开放模型。它使用专家混合方法,将一组专门的专家模型组合成一个系统,根据输入选择特定的模型来使用。这使得计算更加有效,因为模型只处理它们专门的输入。
53+
54+
一些微调版本的Mistral范例包括专注于医疗领域的[BioMistral](https://huggingface.co/BioMistral/BioMistral-7B?text=Mon+nom+est+Thomas+et+mon+principal?WT.mc_id=academic-105485-koreyst)和进行数学计算的[OpenMath Mistral](https://huggingface.co/nvidia/OpenMath-Mistral-7B-v0.1-hf?WT.mc_id=academic-105485-koreyst)
55+
56+
### Falcon
57+
58+
[Falcon](https://huggingface.co/tiiuae?WT.mc_id=academic-105485-koreyst) 是由技术创新研究所(**TII**)创建的 LLM。Falcon-40B 在 400 亿个参数上进行了训练,已显示出在较少计算预算下比 GPT-3 表现更好。这是由于其使用了 FlashAttention 算法和多查询注意力,使其能够在推理时减少内存需求。由于这种减少的推理时间,Falcon-40B 适用于聊天应用程序。
59+
60+
一些 Falcon 微调版本的范例包括 [OpenAssistant](https://huggingface.co/OpenAssistant/falcon-40b-sft-top1-560?WT.mc_id=academic-105485-koreyst),一个基于开放模型的助手和 [GPT4ALL](https://huggingface.co/nomic-ai/gpt4all-falcon?WT.mc_id=academic-105485-koreyst),其性能高于基础模型。
61+
62+
## 如何选择
63+
64+
选择开放模型没有唯一的答案。一个好的开始是使用 Azure AI Studio 的任务筛选功能。这将帮助你了解模型已经被训练用于哪些类型的任务。Hugging Face 也维护了一个 LLM 排行榜,显示基于某些指标的最佳表现模型。
65+
66+
在比较不同类型的LLM时,[Artificial Analysis](https://artificialanalysis.ai/?WT.mc_id=academic-105485-koreyst) 是另一个很好的资源:
67+
68+
![模型质量](../../images/model-quality.png?WT.mc_id=academic-105485-koreyst)
69+
来源: 人工分析
70+
71+
如果处理特定用例,搜索专注于相同领域的微调版本可能会很有效。尝试多个开放模型,看看它们如何根据你和你的用户的期望表现,也是另一个好做法。
72+
73+
## 下一步
74+
75+
开放模型最棒的部分是你可以很快地开始使用它们。查看 [Azure AI Studio Model Catalog](https://ai.azure.com?WT.mc_id=academic-105485-koreyst),其中包含我们在此讨论的特定 Hugging Face 集合。
76+
77+
## 学习不止于此,继续旅程
78+
79+
完成本课程后,请查看我们的[生成式 AI 学习集合](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以继续提升您的生成式 AI 知识!
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
[![开放源码模型](../../images/17-lesson-banner.png?WT.mc_id=academic-105485-koreyst)](https://aka.ms/gen-ai-lesson17-gh?WT.mc_id=academic-105485-koreyst)
2+
3+
## 简介
4+
5+
AI 智能体代表了生成式AI的一个令人兴奋的发展,使大型语言模型(LLMs)从助手演变为能够采取行动的智能体。AI 智能体框架使开发者能够建立应用程序,让LLMs能够访问工具和状态管理。这些框架还增强了可见性,使用户和开发者能够监控LLMs计划的行动,从而改善体验管理。
6+
7+
这节课将涵盖以下领域:
8+
9+
- 理解什么是 AI Agent - AI Agent 到底是什么?
10+
- 探索四种不同的 AI Agent 框架 - 它们有什么独特之处?
11+
- 将这些 AI Agent 应用于不同的使用案例 - 我们应该何时使用 AI Agent?
12+
13+
## 学习目标
14+
15+
完成这节课后,你将能够:
16+
17+
- 解释什么是 AI 智能体以及它们如何使用。
18+
- 了解一些流行的 AI 智能体框架之间的差异,以及它们的不同之处。
19+
- 了解 AI 智能体如何运作,以便使用它们构建应用程序。
20+
21+
## 什么是 AI 智能体?
22+
23+
AI 智能体是一个在生成式AI世界中非常令人兴奋的领域。随着这种兴奋,有时会出现术语和其应用的混淆。为了保持简单并包含大多数提到AI 智能体的工具,我们将使用这一定义:
24+
25+
AI Agents 允许大型语言模型(LLMs)通过提供**状态****工具**来执行任务。
26+
27+
![智能体模型](../../images/what-agent.png?WT.mc_id=academic-105485-koreyst)
28+
29+
让我们定义这些术语:
30+
31+
**大型语言模型** - 这些是本课程中提到的模型,例如 GPT-3.5、GPT-4、Llama-2 等。
32+
33+
**状态** - 这指的是LLM正在工作的上下文。LLM使用其过去行动的上下文和当前上下文,指导其后续行动的决策。AI 智能体框架允许开发人员更容易地维护此上下文。
34+
35+
**工具** - 为了完成用户请求的任务以及 LLM 所规划的任务,LLM 需要访问工具。一些工具的例子可以是数据库、API、外部应用程序甚至是另一个 LLM!
36+
37+
这些定义希望能在我们了解它们如何实现时,为你打下良好的基础。让我们来探索几个不同的 AI Agent 框架:
38+
39+
## LangChain Agents
40+
41+
[LangChain Agents](https://python.langchain.com/docs/how_to/#agents?WT.mc_id=academic-105485-koreyst) 是我们上述定义的实现。
42+
43+
要管理**状态**,它使用一个名为 `AgentExecutor` 的内置函数。这个函数接受定义的 `agent` 和可用的 `tools`
44+
45+
`Agent Executor` 也存储聊天记录以提供聊天的上下文。
46+
47+
![Langchain Agents](../../images/langchain-agents.png?WT.mc_id=academic-105485-koreyst)
48+
49+
LangChain 提供一个[工具目录](https://integrations.langchain.com/tools?WT.mc_id=academic-105485-koreyst),可以导入到您的应用程序中,LLM 可以访问这些工具。这些工具由社区和 LangChain 团队制作。
50+
51+
然后你可以定义这些工具并将它们传递给 `Agent Executor`
52+
53+
可见性是讨论 AI 智能体时另一个重要方面。应用程序开发人员需要了解 LLM 使用的是哪种工具以及为什么。为此,LangChain 团队开发了 LangSmith。
54+
55+
## AutoGen
56+
57+
下一个我们将讨论的 AI Agent 框架是 [AutoGen](https://microsoft.github.io/autogen/?WT.mc_id=academic-105485-koreyst)。AutoGen 的主要焦点是对话。Agents 既是**可对话的**也是**可定制的**
58+
59+
**Conversable -** LLMs 可以启动并继续与另一个 LLM 的对话以完成任务。这是通过建立 `AssistantAgents` 并给予它们特定的系统消息来完成的。
60+
61+
```python
62+
autogen.AssistantAgent( name="Coder", llm_config=llm_config, )
63+
pm = autogen.AssistantAgent(
64+
name="Product_manager",
65+
system_message="Creative in software product ideas.",
66+
llm_config=llm_config,
67+
)
68+
```
69+
70+
**可自订** - Agent 不仅可以定义为 LLMs,也可以是用户或工具。作为开发者,你可以定义一个 `UserProxyAgent`,负责与用户互动以获取完成任务的反馈。这些反馈可以继续执行任务或停止它。
71+
72+
```python
73+
user_proxy = UserProxyAgent(name="user_proxy")
74+
```
75+
76+
### 状态和工具
77+
78+
为了改变和管理状态,助手智能体生成 Python 代码来完成任务。
79+
80+
这里是一个过程的示例:
81+
82+
![AutoGen](../../images/autogen.png?WT.mc_id=academic-105485-koreyst)
83+
84+
#### 定义 LLM 的系统消息
85+
86+
```python
87+
system_message="对于天气相关的任务,只使用提供给你的函数。任务完成后回复 TERMINATE。"
88+
```
89+
90+
此系统信息指导此特定 LLM 哪些函数与其任务相关。请记住,使用 AutoGen 时,您可以有多个具有不同系统信息的 AssistantAgents。
91+
92+
#### 聊天由用户发起
93+
94+
```python
95+
user_proxy.initiate_chat( chatbot, message="我计划下周去纽约旅行,你能帮我选择穿什么吗?", )
96+
```
97+
98+
此消息来自 user_proxy (人类) 是启动智能体探索应执行的可能函数的过程。
99+
100+
#### 函数被执行
101+
102+
```bash
103+
聊天机器人 (to user_proxy):
104+
105+
***** 建议的工具调用: get_weather ***** 参数: {"location":"New York City, NY","time_periond:"7","temperature_unit":"Celsius"} ******************************************************** --------------------------------------------------------------------------------
106+
107+
>>>>>>>> 执行函数 get_weather... user_proxy (to 聊天机器人): ***** 调用函数 "get_weather" 的回应 ***** 112.22727272727272 EUR ****************************************************************
108+
109+
```
110+
111+
一旦初始聊天处理完成,智能体将发送建议的工具来调用。在这种情况下,它是一个名为 `get_weather` 的函数。根据您的配置,这个函数可以由智能体自动执行和读取,或者可以根据用户输入来执行。
112+
113+
你可以找到[AutoGen 代码示例](https://microsoft.github.io/autogen/docs/Examples/?WT.mc_id=academic-105485-koreyst)来进一步探索如何开始构建。
114+
115+
## Taskweaver
116+
117+
接下来我们将探讨的智能体框架是 [Taskweaver](https://microsoft.github.io/TaskWeaver/?WT.mc_id=academic-105485-koreyst)。它被称为「代码优先」智能体,因为它不仅仅是严格地与 `strings` 一起工作,它还可以与 Python 中的 DataFrames 一起工作。这对于资料分析和生成任务变得非常有用。这可以是建立图表或生成随机数等事情。
118+
119+
### 状态和工具
120+
121+
为了管理对话的状态,TaskWeaver 使用了 `Planner` 的概念。`Planner` 是一个 LLM,它接收用户的请求并规划出需要完成的任务,以满足这些请求。
122+
123+
为了完成任务,`Planner` 会接触到称为 `Plugins` 的工具集合。这可以是 Python 类别或一般的代码解释器。这些插件被储存为嵌入,以便 LLM 能够更好地搜索正确的插件。
124+
125+
![Taskweaver](../../images/taskweaver.png?WT.mc_id=academic-105485-koreyst)
126+
127+
这里是一个处理异常检测的插件示例:
128+
129+
```python
130+
class AnomalyDetectionPlugin(Plugin):
131+
def __call__(self, df: pd.DataFrame, time_col_name: str, value_col_name: str):
132+
```
133+
134+
代码在执行前会被验证。Taskweaver 中管理上下文的另一个功能是 `experience`。Experience 允许将对话的上下文长期存储在 YAML 文件中。这可以配置,使得 LLM 随着时间的推移在某些任务上有所改进,前提是它接触到先前的对话。
135+
136+
## JARVIS
137+
138+
最后我们将探讨的智能体框架是 [JARVIS](https://github.com/microsoft/JARVIS?tab=readme-ov-file?WT.mc_id=academic-105485-koreyst)。JARVIS 的独特之处在于它使用 LLM 来管理对话的 `state`,而 `tools` 是其他 AI 模型。每个 AI 模型都是专门的模型,执行某些任务,例如物体检测、转录或图像标注。
139+
140+
![JARVIS](../../images/jarvis.png?WT.mc_id=academic-105485-koreyst)
141+
142+
LLM 作为一个通用模型,接收来自用户的请求并识别特定任务及完成任务所需的任何参数/资料。
143+
144+
```python
145+
[{"task": "物体-detection", "id": 0, "dep": [-1], "args": {"image": "e1.jpg" }}]
146+
```
147+
148+
LLM 然后以专门的 AI 模型能够解释的方式格式化请求,例如 JSON。一旦 AI 模型根据任务返回其预测,LLM 便会接收回应。
149+
150+
如果需要多个模型来完成任务,它还会解释这些模型的回应,然后将它们整合起来生成对用户的回应。
151+
152+
范例如下显示当用户请求描述和计算图片中的物体时,这将如何运作:
153+
154+
## 作业
155+
156+
为了继续学习可以使用 AutoGen 构建的 AI 智能体:
157+
158+
- 一个模拟教育初创公司不同部门商务会议的应用程序。
159+
- 建立系统信息,引导LLM理解不同角色和优先事项,并使用户能够提出新的产品创意。
160+
- 然后,LLM应从每个部门生成后续问题,以完善和改进提案和产品创意。
161+
162+
## 学习不止于此,继续旅程
163+
164+
完成本课程后,请查看我们的[生成式 AI 学习合集](https://aka.ms/genai-collection?WT.mc_id=academic-105485-koreyst)以继续提升您的生成式 AI 知识!
165+
166+

0 commit comments

Comments
 (0)