最简单的链式架构-顺序链

顺序链是最简单、也是最常用的的链式架构,它的作用是将多个链按照顺序串起来。

顺序链-SimpleSequentialChain

 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
31
32
33
34
35
36
37
38
from langchain.chat_models import ChatOpenAI  # 从 langchain 导入 ChatOpenAI,用于与 OpenAI 的聊天模型交互
from langchain.prompts import PromptTemplate  # 从 langchain 导入 PromptTemplate,用于定义提示模板
from langchain.chains import LLMChain  # 从 langchain 导入 LLMChain,用于封装单个链
from langchain.chains import SimpleSequentialChain  # 从 langchain 导入 SimpleSequentialChain,用于将多个链按顺序连接
import os  # 导入 os 模块,用于操作系统相关功能

OPENAIKEY = os.getenv("OPENAI_API_KEY")  # 从环境变量中获取 OpenAI 的 API 密钥

# 初始化一个 ChatOpenAI 对象,指定模型、温度、API 密钥和代理地址。因为openAi国内没有办法直接访问,这里我们使用代理地址。
llm = ChatOpenAI(model='gpt-3.5-turbo-0125', temperature=0.9, api_key=OPENAIKEY,
base_url="https://api.openai-proxy.org/v1")

# 定义一个提示模板,用于为公司生成中文名字
name_prompt = PromptTemplate(
    input_variables=["company"],  # 定义输入变量为 "company"
    template="为这家{company}公司取一个中文名字:",  # 提示模板内容
)

# 创建一个 LLMChain,将提示模板与聊天模型绑定
name_chain = LLMChain(llm=llm, prompt=name_prompt)

# 定义另一个提示模板,用于为公司生成 Slogan
slogan_prompt = PromptTemplate(
    input_variables=["name"],  # 定义输入变量为 "name"
    template="为名为{name}的公司起一个Slogan,输出格式 name:slogan",  # 提示模板内容
)

# 创建另一个 LLMChain,将提示模板与聊天模型绑定
slogan_chain = LLMChain(llm=llm, prompt=slogan_prompt)

# 创建一个顺序链,将 name_chain 和 slogan_chain 按顺序连接
overall_chain = SimpleSequentialChain(
    chains=[name_chain, slogan_chain],  # 定义链的顺序
    verbose=True  # 设置为 True,打印链的执行过程
)

# 运行顺序链,输入 "咨询",并打印结果
print(overall_chain.run("咨询"))

输出:

1
2
3
4
5
6
> Entering new SimpleSequentialChain chain...
智慧咨询consulting
智慧咨询consulting: 解决问题,创造价值

> Finished chain.
智慧咨询consulting: 解决问题,创造价值

可以看到,顺序链使用十分简单,前一个链的输出作为后一个链的输入,直到所有的链都执行完毕,输出最终结果。 但是,要注意,如果链比较多,可能会出现超时的情况。这个怎么处理,咱们后面再说。