【可能是全网最丝滑的LangChain教程】二十、LangChain进阶之Chains

我们笑着说再见,却深知再见遥遥无期。

01 Chain介绍

在LangChain 中,“Chain” 是指一系列可以串联起来执行特定任务的组件或模型。这些链条可以包括预处理、模型调用、后处理等步骤,它们共同工作以完成一个复杂的语言处理任务。

咱说点人话:Chain 是对我们之前介绍的一系列组件(LLM、Retrieval、Output parsers…)的组合与调用。

如果没有Chain我们能不能实现这些功能?答案是可以!因为再怎么花里胡哨,给到LLM的都是文本或者说都是矢量。(这里还是要提一嘴,技术还是要学到本质~)

02 基本使用

既然是基本使用,这里我们以LLMChain为例。

from langchain import OpenAI, PromptTemplate, LLMChain

# 创建一个提示模板
template = "帮我起一个最好的公司名,要求名字寓意好,与产品相关,这个公司是生产{product}的。"
prompt = PromptTemplate(input_variables=["product"], template=template)

# 初始化语言模型
llm = OpenAI(temperature=0.9)

# 创建 LLMChain
chain = LLMChain(llm=llm, prompt=prompt)

# 运行 Chain
result = chain.run(product="智能手表")
print(result)

03 LangChain内置Chain介绍

之所以有内置的Chain,目的就是为了简化LangChain的使用,将一些可能常用的LLM使用场景封装成Chain,开箱即用,简单方便~

create_stuff_documents_chain

该链获取文档列表并将它们全部格式化为提示,然后将该提示传递给 LLM。它传递所有文档,因此应该确保它适合正在使用的 LLM 的上下文窗口。

create_sql_query_chain

用于从自然语言构造 SQL 数据库的查询。

create_history_aware_retriever

该链接收对话历史记录,然后使用它来生成搜索查询,该查询将传递给底层检索器。

create_retrieval_chain

该链接收用户查询,然后将其传递给检索器以获取相关文档。然后,这些文档(和原始输入)被传递给 LLM 以生成响应。

load_qa_with_sources_chain

对传递的文件进行问题解答,并引用其来源。如果希望答案响应在文本响应中包含源,请使用此选项。当想要直接传入文档(而不是依赖检索器来获取文档)时,请使用 RetrievalQAWithSourcesChain。

load_summarize_chain

用于总结文档。

RetrievalQA

该链首先执行检索步骤以获取相关文档,然后将这些文档传递到 LLM 中以生成响应。

RetrievalQAWithSourcesChain

对检索到的文件进行问答,并引用其来源。如果希望答案响应在文本响应中包含源,请使用此选项。当想使用检索器将相关文档作为链的一部分(而不是传入它们)时,请使用 load_qa_with_sources_chain。

QAGenerationChain

从文档创建问题和答案。用于生成用于评估检索项目的问答对。

04 总结

LangChain 的 Chains 模块是一系列调用的序列,可以涉及 LLM(大型语言模型)、工具或数据预处理步骤。

基于LangChain内置的一些预定义Chain,我们可以非常方便的创建我们的AI应用。比如总结文档、知识库问答等等。但是本篇文章并没有涉及代码的输出,各位在使用的时候还是要自己去看下相关文档,锻炼一下自己阅读源码的能力~为防止有些同学实在需要代码,我这里贴了一部分代码截图,如下:

在这里插入图片描述

如果能帮我点个免费的关注,那就是对我个人的最大的肯定。如果觉得写的还行,分享一下也是我生活的小确幸~

在这里插入图片描述

以上内容依据官方文档编写,官方地址:https://python.langchain.com/docs/modules/chains

Peace Guys~

在这里插入图片描述

### LangChain Chains 组件概述 LangChain 中的 **Chains** 是一种用于构建复杂工作流的核心组件。它本质上是一个模块化工具,能够将多个子任务串联起来形成完整的流程[^2]。通过这种机制,开发者可以轻松实现复杂的逻辑处理和多阶段的任务执行。 #### Chains 的核心功能 Chains 提供了一种灵活的方式来连接不同的组件(如 LLMs、Prompt Templates 和其他自定义函数),从而实现了对大型语言模型(LLMs)的有效编排[^1]。其主要特点如下: - 支持多种类型的链条结构,包括但不限于顺序链、条件分支链以及并行处理链。 - 可以嵌套使用,即在一个 Chain 内部调用另一个 Chain 或者其他基础单元。 - 集成了丰富的内置模板和实用程序,简化了常见场景下的开发过程。 以下是关于如何创建基本 Chain 并运行它的具体实例说明。 --- ### 创建与运行 Chains 示例 下面展示了一个简单的例子来演示如何利用 `SequentialChain` 将两个独立的操作链接在一起完成终目标——生成一篇科技新闻摘要。 ```python from langchain.chains import SequentialChain, LLMChain from langchain.prompts import PromptTemplate from langchain.llms import OpenAI # 初始化大语言模型实例 llm = OpenAI(temperature=0) # 定义第一个链:获取新技术趋势描述 template_one = """You are an expert tech analyst. Given the following topic {topic}, provide a brief overview of recent advancements.""" prompt_one = PromptTemplate(input_variables=["topic"], template=template_one) first_chain = LLMChain(llm=llm, prompt=prompt_one) # 定义第二个链:基于上述信息撰写简洁版新闻报道 template_two = """Write a concise news article based on this summary:{summary}""" prompt_two = PromptTemplate(input_variables=["summary"], template=template_two) second_chain = LLMChain(llm=llm, prompt=prompt_two) # 构建整体序列链 overall_chain = SequentialChain( chains=[first_chain, second_chain], input_variables=["topic"], output_variables=["text"] ) # 执行整个链条操作 result = overall_chain({"topic": "Artificial Intelligence"}) print(result['text']) ``` 此脚本展示了如何依次调用两个不同职责范围内的方法论,并把前者的输出作为后者输入的一部分传递下去直到得出后结论为止。 --- ### 更高级的应用案例 除了上面提到的基础形式外,实际项目里还经常需要用到更复杂的配置方式比如循环迭代或者动态调整参数等等情况。这些都可以借助于 LangChain 提供给我们的 API 接口去达成目的。 例如,在某些情况下可能需要根据用户的反馈实时修改提问策略;又或者是当面对海量数据源检索需求时,则可以通过集成向量存储服务(Vector Store)提高查询效率。 总之,无论多么棘手的问题总能找到合适的解决方案! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值