LangChain 大模型应用开发指南
组件总览
LangChain 的组件与架构图基本描述了其核心抽象层及相互联系。主要包括以下六个部分,基于与传统软件开发的比较,将其分为两个类型:
1. 传统编程思想的 AI 工程化应用
- Chains(链):用于组合组件的结构化方式。
- Agents(代理):用于执行特定任务的组件。
- Callbacks(回调):用于在链中插入自定义逻辑的组件。
2. AI 大模型衍生的新能力
- Model I/O(模型输入输出):用于与语言模型交互的组件。
- Retrieval(检索):用于从外部来源获取上下文的组件。
- Memory(记忆):用于存储和更新上下文的组件。
本文将重点介绍前三个核心概念,并补充后三个部分的说明,最后给出一个综合使用示例。
Chains
做过传统软件开发的小伙伴对链这个名词肯定不陌生,比如 Java 设计模式里的责任链。LangChain 中的 Chain 是用于组合组件的结构化方式,它可以让你按照一定的顺序和逻辑来执行不同的任务。你可以把它想象成语言模型进行流水线作业,每个环节都有一个特定的目标和功能。
Chains 有以下四种主要类型:
| 类型 | 作用 |
|---|---|
| LLMChain | 用于在语言模型周围添加一些功能的简单 Chain,由 PromptTemplate 和语言模型组成,支持格式化 Prompt 并返回输出 |
| RouterChain | 用于动态选择下一个要使用的 Chain 的范式,包含路由器和目标链 |
| SequentialChain | 将多个 Chain 连接起来形成管道,允许将一个调用的输出作为另一个调用的输入 |
| TransformChain | 用于创建通用的转换 Chain,可对输入进行预处理或后处理 |
Chains 是 LangChain 中完成业务逻辑拆解和组装的核心组件,可以灵活构建复杂应用程序。
from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import ChatPromptTemplate
from langchain.schema import BaseOutputParser
class CommaSeparatedListOutputParser(BaseOutputParser):
"""Parse the output of an LLM call to a comma-separated list."""
def parse(self, text: str):
return text.strip().split(", ")
template =
human_template =
chat_prompt = ChatPromptTemplate.from_messages([
(, template),
(, human_template),
])
chain = chat_prompt | ChatOpenAI() | CommaSeparatedListOutputParser()
result = chain.invoke({: })
(result)


