上篇文章《5分钟了解LangChain的路由链》里主要介绍了路由链,核心类是LLMRouterChain和MultiPromptChain。本文介绍LangChain里的另外1个重要的链:转换链。
在开发AI Agent(智能体)时,我们经常需要对输入数据进行预处理,这样可以更好地利用LLM。LangChain提供了一个强大的工具——转换链(TransformChain),它可以帮我们轻松实现这一任务。
转换链(TransformChain)主要是将 给定的数据 按照某个函数进行转换,再将 转换后的结果 输出给LLM。 所以转换链的核心是:根据业务逻辑编写合适的转换函数。
其实,转换链的设计也很精妙,从源码可以看出,它只是做了一条链,然后具体的任务完全丢给了外部的函数来实现。在LangChain里只要是链,就可以随处链接。
转换链只有1个核心类,TransformChain。
有时,我们在将数据发送给LLM之前,希望对其做一些操作时(比如替换一些字符串、截取部分文本等等),就会用到转换链。TransformChain 在 NLP 中很重要,有些场景还很实用。
一般使用转换链有几个固定步骤:
比如,给定LLM一篇很长的文章,但是我只想让LLM帮我总结文章前3自然段的内容,同时,总结之前,我还需要将自然段里的 部分字段 替换成 给定字段。
具体代码如下:
from langchain.prompts import PromptTemplatefrom langchain.chains import LLMChain, TransformChain, SimpleSequentialChainfrom langchain_openai import OpenAI, ChatOpenAIfile_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,)# 定义LLMmodel = 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)
代码执行结果符合预期。总结的结果很精通,同时也是按照给定的字符串返回的。
这篇博客主要介绍了LangChain中的转换链(TransformChain)的概念,它主要用在需要对输入的内容进行转换的场景下。希望对你有帮助!
本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-96420-0.htmlLangChain转换链:让数据处理更精准
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: Java 流式编程的七个必学技巧