LangChain转换链:让数据处理更精准
创作时间:
作者:
@小白创作中心
LangChain转换链:让数据处理更精准
引用
1
来源
1.
https://developer.aliyun.com/article/1545104
LangChain中的转换链(TransformChain)是一个强大的工具,主要用于在数据发送给LLM之前进行预处理。本文将详细介绍转换链的概念、使用场景,并通过一个具体案例展示其应用。
1. 转换链的概念
在开发AI Agent(智能体)时,我们经常需要对输入数据进行预处理,这样可以更好地利用LLM。LangChain提供了一个强大的工具——转换链(TransformChain),它可以帮我们轻松实现这一任务。
转换链(TransformChain)主要是将给定的数据按照某个函数进行转换,再将转换后的结果输出给LLM。所以转换链的核心是:根据业务逻辑编写合适的转换函数。
其实,转换链的设计也很精妙,从源码可以看出,它只是做了一条链,然后具体的任务完全丢给了外部的函数来实现。在LangChain里只要是链,就可以随处链接。
2. 转换链的使用场景
转换链只有1个核心类,TransformChain。
有时,我们在将数据发送给LLM之前,希望对其做一些操作时(比如替换一些字符串、截取部分文本等等),就会用到转换链。
TransformChain在NLP中很重要,有些场景还很实用。一般使用转换链有几个固定步骤:
- 根据需求定义转换函数transform_func,入参和出参都是字典。
- 实例化转换链TransformChain。
- 因为转换链只能做内容转换的事情,后续的操作还需要LLM介入,所以需要实例化LLMChain。
- 最终通过顺序连SimpleSequentialChain将TransformChain和LLMChain串起来完成任务。
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)的概念,它主要用在需要对输入的内容进行转换的场景下。希望对你有帮助!
热门推荐
编程小白必看!32位和64位软件的区别详解——从安装到开发一篇搞懂
从东京、大阪、福冈、名古屋前往静冈:全面比较旅行时间和费用
中药穴位贴敷疗法:传统中医的 “外治良方”,守护全家健康
长孙皇后:李世民心中的永恒挚爱
如何理解客户留存,如何制定客户留存策略并从中获利?
8岁女孩走失 外卖小哥暖心"送单"至派出所
手臂被人咬伤后变紫肿胀?这份专业处理指南请收好
路由器无线信道和频段带宽如何设置?设置时应注意什么?
兰香子和奇亚籽哪个减肥更好?
美国债务上限如何影响黄金市场?这些影响有哪些潜在风险?
恒河鳄:世界上最大的鳄鱼之一
为什么猫是圆脸而狗是长脸?猫科都长得差不多,它们已完美进化?
遇到蛇怎么办?一文详解安全躲避蛇的方法
减肥期间如何选择肉类?这几种肉类最适合减重
人可以极简主义到什么程度?
毕业论文开题报告格式及字体要求
股指期货开户的验资是什么?
当年能拥有一台PS2的玩家,那无疑是非常幸运的!
中国电影节的崛起:从模仿到创新,本土特色与国际影响的平衡之道
三弦《天之下》: 网络武侠小说创作的一种出路
无证驾驶交通事故怎么起诉?一文详解起诉流程与赔偿标准
拍胸片和做CT哪个辐射更大
贬值美元、发行百年零息国债 海湖庄园协议意味着什么
实验动物延寿12%至35%!中国科学家捕获新长寿基因
免疫系统的三大功能是什么 有哪些作用
双肩包选购指南:实用性与美观性并重
劳动仲裁月工资是否包含奖金和补贴
水罗兰水草养殖方法与养护要点
保温层外墙漏水维修全攻略:四种实用解决方案
探究历史上的辕门射戟:神话还是真实?