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)的概念,它主要用在需要对输入的内容进行转换的场景下。希望对你有帮助!
热门推荐
线性代数:矩阵的四大子空间之“行空间”和“列空间”
益生菌能治疗便秘吗
晾衣机选购与使用全攻略:从安装到故障维修
入室盗窃如何防范?速戳↓↓↓
哪里能找到提升公司治理效能的最佳实践案例?
守护互联网文学版权:抵制侵权,刻不容缓
食品行业的精益生产实践:确保安全与高效
游戏账号交易,买卖需谨慎
碳中和背景下,新能源汽车热管理系统的“新四化”
猴头菇的功效与作用有哪些
暗语“分享”成瘾经历,一些青少年滥用的处方药从哪来……
出租车投诉量大降48%!济南探索出租车行业治理"枫桥经验"新路径
如何挑选合适的壁挂炉产品?这类产品的选择要点有哪些?
新型环保猫砂深度解析:三种主流材料的优劣对比
电工维修全覆盖:触电防护与应急处理指南
老厂房成文旅新地标,青岛纺织谷蝶变“重生”
左胸痛的常见病因与诊断要点
姓张取名字男孩子典故
陈浩宇/付华柱团队联合开发视网膜疾病诊断的基础模型,增强医学AI的可靠性
香港雇员在海外工作:机会与挑战并存的职场环境
进口轴承和国产轴承的差距有多大?
2024年湖北各高校录取分数线表:含大学最低位次(2025参考)
《刺客信条:英灵殿》:维京传奇的热血征途
血糖高、低对人体的影响有什么
阿斯卡隆战役:十字军大胜穆斯林的经典战术体现
智能制造与MES系统的关系
一文了解Transformer全貌(图解Transformer)
C-反应蛋白测定试剂盒(免疫比浊法)检测详解
猫咪怀孕多久生?全面解析猫咪怀孕周期及护理指南
事故车辆定损流程详解及注意事项