LangChain转换链:让数据处理更精准

langchain · 浏览次数 : 0

小编点评

本文主要介绍了LangChain中的转换链(TransformChain)概念及其在实际应用中的使用场景。 转换链是一种用于对输入数据进行预处理的工具,它可以根据业务逻辑编写合适的转换函数,实现对数据的转换。转换链的核心是编写合适的转换函数,而具体的任务则交给外部函数来实现。在LangChain中,转换链可以随意链接,形成一个链条,使得数据处理更加灵活。 在实际应用中,转换链主要用于对输入数据进行预处理,以满足特定需求。例如,在NLP任务中,用户可能需要将文章的前几段内容进行处理后输入到LLM模型中。这时,可以使用转换链来实现这一需求。转换链的使用包括定义转换函数、实例化转换链和LLMChain,以及将它们串联起来完成任务。 本文给出了一个具体的案例,其中要求对一篇文章进行预处理,包括截取前3自然段内容并替换部分字段。通过定义转换函数和LLMChain,以及使用SimpleSequentialChain将它们串联起来,实现了这一需求。最终,代码执行结果符合预期,总结的结果也符合预期。 总之,转换链是LangChain中一种重要的链类型,可用于满足各种数据处理需求。通过编写合适的转换函数,可以实现灵活的数据处理任务。

正文

上篇文章《5分钟了解LangChain的路由链》里主要介绍了路由链,核心类是LLMRouterChainMultiPromptChain。本文介绍LangChain里的另外1个重要的链:转换链

1. 转换链的概念

在开发AI Agent(智能体)时,我们经常需要对输入数据进行预处理,这样可以更好地利用LLM。LangChain提供了一个强大的工具——转换链(TransformChain),它可以帮我们轻松实现这一任务。

转换链(TransformChain)主要是将 给定的数据 按照某个函数进行转换,再将 转换后的结果 输出给LLM。 所以转换链的核心是:根据业务逻辑编写合适的转换函数。

其实,转换链的设计也很精妙,从源码可以看出,它只是做了一条链,然后具体的任务完全丢给了外部的函数来实现。在LangChain里只要是链,就可以随处链接。

2. 转换链的使用场景

转换链只有1个核心类,TransformChain

有时,我们在将数据发送给LLM之前,希望对其做一些操作时(比如替换一些字符串、截取部分文本等等),就会用到转换链TransformChain 在 NLP 中很重要,有些场景还很实用。

一般使用转换链有几个固定步骤:

  1. 根据需求定义转换函数transform_func,入参和出参都是字典。
  2. 实例化转换链TransformChain
  3. 因为转换链只能做内容转换的事情,后续的操作还需要LLM介入,所以需要实例化LLMChain
  4. 最终通过顺序连SimpleSequentialChainTransformChainLLMChain串起来完成任务。

3. 使用转换链的案例

比如,给定LLM一篇很长的文章,但是我只想让LLM帮我总结文章前3自然段的内容,同时,总结之前,我还需要将自然段里的 部分字段 替换成 给定字段。

具体代码如下:

from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain, TransformChain, SimpleSequentialChain
from langchain_openai import OpenAI, ChatOpenAI

file_content = ""
with open("./file_data.txt", "r") as file:
    file_content = file.read()


# 定义转换函数,截取文章前8段,再替换部分字符串
def transform_func(data):
    text = data["input_text"]
    shortened_text = "\n".join(text.split("\n")[:7])
    transform_shortened_text: str = shortened_text.replace(
        "PVC", "PersistentVolumeClaim"
    ).replace("PV", "PersistentVolume")
    return {"output_text": transform_shortened_text}


# 定义转换链
transform_chain = TransformChain(
    input_variables=["input_text"],
    output_variables=["output_text"],
    transform=transform_func,
)

# 定义LLM
model = ChatOpenAI(
    model_name="gpt-3.5-turbo",
    openai_api_key="sk-xxxxxx",
    openai_api_base="https://api.302.ai/v1",
)

# 定义提示词模板 和 LLM链
prompt_template = """
请你对下面的文字进行总结:
{output_text}

总结:
"""

prompt = PromptTemplate(input_variables=["output_text"], template=prompt_template)
llm_chain = LLMChain(
    llm=model,
    prompt=prompt,
)


# 使用顺序链连接起来
final_chain = SimpleSequentialChain(chains=[transform_chain, llm_chain])
res = final_chain.run(file_content)
print(res)

代码执行结果符合预期。总结的结果很精通,同时也是按照给定的字符串返回的。

4. 总结

这篇博客主要介绍了LangChain中的**转换链(TransformChain)**的概念,它主要用在需要对输入的内容进行转换的场景下。希望对你有帮助!

=====>>>>>> 关于我 <<<<<<=====

本篇完结!欢迎点赞 关注 收藏!!!

原文链接:https://mp.weixin.qq.com/s/Kz1cdBBPNt1JzZTaQeGd5g

与LangChain转换链:让数据处理更精准相似的内容:

LangChain转换链:让数据处理更精准

在开发AI Agent(智能体)时,我们经常需要对输入数据进行预处理,这样可以更好地利用LLM。LangChain提供了一个强大的工具——转换链(TransformChain),它可以帮我们轻松实现这一任务。

拆解LangChain的大模型记忆方案

之前我们聊过如何使用LangChain给LLM(大模型)装上记忆,里面提到对话链ConversationChain和MessagesPlaceholder,可以简化安装记忆的流程。下文来拆解基于LangChain的大模型记忆方案。

5分钟了解LangChain的路由链

路由链(RouterChain)是由LLM根据输入的Prompt去选择具体的某个链。路由链中一般会存在多个Prompt,Prompt结合LLM决定下一步选择哪个链。

5分钟明白LangChain 的输出解析器和链

本文介绍 LangChain 的输出解析器OutputParser的使用,和基于LangChain的LCEL构建链。 1. 输出解析器OutputParser 1.1、为什么需要OutputParser 常规的使用LangChain构建LLM应用的流程是:Prompt 输入、调用LLM 、LLM输出

Langchain 与 LlamaIndex:LLM 应用开发框架的比较与使用建议

Langchain 和 Llamaindex 是两种广泛使用的主流 LLM 应用开发框架。两者有什么不同?我们该如何使用?以下我根据各类资料和相关文档做了初步选型。 一、Langchain 1. 适用场景 (1)需要构建灵活、可扩展的通用应用程序。 (2)需要复杂的工作流程支持。 (3)需要复杂的交

LangChain和Hub的前世今生

作为LLM(大模型)开发框架的宠儿,LangChain在短短几年内迅速崛起,成为开发者们不可或缺的工具。本文将带你探讨LangChain和LangChainHub的发展历程。

LangChain结合LLM做私有化文档搜索

我们知道LLM(大语言模型)的底模是基于已经过期的公开数据训练出来的,对于新的知识或者私有化的数据LLM一般无法作答,此时LLM会出现“幻觉”。针对“幻觉”问题,一般的解决方案是采用RAG做检索增强。

5分钟理透LangChain的Chain

LangChain几乎是LLM应用开发的第一选择,它的野心也比较大,它致力于将自己打造成LLM应用开发的最大社区。而LangChain最核心的部分非 Chain 莫属。

LangChain让LLM带上记忆

最近两年,我们见识了“百模大战”,领略到了大型语言模型(LLM)的风采,但它们也存在一个显著的缺陷:没有记忆。在对话中,无法记住上下文的 LLM 常常会让用户感到困扰。本文探讨如何利用 LangChain,快速为 LLM 添加记忆能力,提升对话体验。

一文教你基于LangChain和ChatGLM3搭建本地知识库问答

借助ModelArts提供的AI开发能力,实现基于LangChain+ChatGLM3的本地知识库问答,通过具体案例让开发者更加清晰的了解大模型AI应用开发过程。