12 LangChain组件之链和节点概述

在上一篇中,我们讨论了LangChain的基本用法,包括调试与测试。一旦你熟悉了如何调试和测试你的模型,接下来,我们需要了解LangChain的核心组件之一:(Chains)和节点(Nodes)。

什么是链和节点?

在LangChain的框架中,链和节点构成了工作流的基本单元。

简而言之,节点是数据处理的基本单元,而链则是由多个节点组合而成的一条完整的数据处理路径。

节点(Nodes)

节点代表了数据处理过程中的单个操作,可能是输入数据的获取、对数据进行某种处理,或是输出结果。每个节点通常可以看成是一个函数或方法,它接收输入并返回输出。

在 LangChain 中,节点通常指的是 LLM(语言模型)、数据处理、API 调用 等操作。

2个节点:

1
2
3
4
5
6
7
8
9
# 1. 一个LLM实例节点
llm = OpenAI(temperature=0.5, api_key='你的API密钥')

prompt_template = """
请为以下文本生成一个简短的摘要:
{input_text}
"""
# 2. 模板节点
pt = PromptTemplate(template=prompt_template)

链:

1
2
# 使用 LangChain 的 LLMChain 来执行摘要任务
llm_chain = LLMChain(llm=llm, prompt=pt)

节点的类型

在LangChain中,常见的节点类型应用包括:

LangChain常见的节点类型

  • 输入节点:负责接收初始数据。
  • 处理节点:对数据进行特定的转换或处理。
  • 输出节点:生成最终结果。

示例

以下是一个简单的节点实现的例子。我们将定义一个输入节点和一个处理节点:

1
2
3
4
5
6
7
8
9
class InputNode:
def run(self, input_data):
# 假设输入是字符串数据
return input_data

class ProcessingNode:
def run(self, input_data):
# 假设我们对输入数据做一些简单处理
return input_data.upper()

链(Chains)

链是由多个节点按照特定顺序连接起来,形成一个完整的数据处理流程。链的主要作用是将多个节点组合在一起,从而实现复杂的处理逻辑。

示例

以下是创建链的示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Chain:
def __init__(self, nodes):
self.nodes = nodes

def execute(self, input_data):
for node in self.nodes:
input_data = node.run(input_data)
return input_data

# 创建节点
input_node = InputNode()
processing_node = ProcessingNode()

# 创建链并执行
process_chain = Chain([input_node, processing_node])
result = process_chain.execute("hello world")
print(result) # 输出:HELLO WORLD

在这个例子中,我们定义了一个Chain类,接收一个节点列表并执行它们。在execute方法中,我们用输入数据逐一流经每个节点,最终返回处理后的结果。

再看一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from langchain.prompts import PromptTemplate
from langchain.llms import OpenAI
from langchain.chains import SimpleChain

# 1. 输入节点:接收用户输入的文本数据
input_text = "我今天心情非常好,感觉充满了能量!"

# 2. 创建处理节点:使用 LLM 进行情感分析
# 创建 OpenAI 模型实例
llm = OpenAI(temperature=0.5, api_key='你的API密钥')

# 创建 PromptTemplate 模板,告诉模型如何进行情感分析
prompt_template = """
请分析以下文本的情感,并返回情感类别(积极、消极、中立)和简短的分析:
{input_text}
"""

# 3. 格式化提示:将输入文本格式化为模型可以理解的格式
prompt = PromptTemplate(template=prompt_template)
formatted_prompt = prompt.format(input_text=input_text)

# 4. 创建一个简单链(SimpleChain),将 LLM 和提示模板组合成一个链
simple_chain = SimpleChain(llm=llm, prompt=prompt_template)

# 5. 执行分析并获取结果
analysis_result = simple_chain.run(data=input_text)

# 6. 输出节点:显示最终的情感分析结果
print("情感分析结果:")
print(analysis_result)

总结链与节点

在LangChain中,链和节点的设计灵活而强大,让我们能够构建复杂的数据处理工作流。通过将不同的节点组合在一起,我们可以实现不同的业务逻辑,同时保持代码的清晰和可维护性。

接下来,我们会深入探讨LangChain的其他核心组件,包括处理器和存储器。在处理器和存储器章节中,我们将学习如何将这些功能更进一步应用到链和节点中,增强工作流的能力。

希望通过本篇的学习,你能够掌握链和节点的基本概念,并开始应用于各类项目的实现中。

12 LangChain组件之链和节点概述

https://zglg.work/langchain-zero/12/

作者

AI免费学习网(郭震)

发布于

2024-08-10

更新于

2024-11-30

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论