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)的概念,它主要用在需要对输入的内容进行转换的场景下。希望对你有帮助!
热门推荐
跟腱炎还是痛风?教你快速分辨!
跟腱炎康复新姿势:离心训练了解一下?
房子过户房产证上的人必须全部到场吗
散文的语言怎样做到既凝练又有表现力
斯大林格勒保卫战:75年后的政治回响
三甲主任被投诉:坚决不道歉
【小核同学科普秀】City不City!“核”你一起向未来!——“放射性碳测年”篇
医患纠纷中百姓如何维护
如何收集医疗纠纷证据材料
温莎小课堂:KTV唱歌宝典,麦霸之路从这里起步
库尔斯克会战:苏联红军的胜利秘诀
甘古特之战:俄罗斯海上力量的崛起
斯大林格勒保卫战:二战转折点的政治意义
跟腱炎的全面治疗指南:从膏药到康复训练
跑步前后7项拉伸,告别跟腱炎!
运动医学专家推荐:跟腱炎四阶段康复锻炼计划
冬季跟腱炎康复新招:物理疗法大揭秘!
《白蛇传》:杭州的文化瑰宝与时代新篇
加拿大房车旅行攻略 - 计划房车生活公路旅行的 10 个步骤以及小贴士!
国外彩票中奖后如何交税?
蜂蜜泡大蒜治什么病
蜂蜜泡大蒜的制作方法 蜂蜜泡大蒜的正确方法
热释光法是什么?
三星堆年代被刻意压低了吗?祭祀区4号坑碳测揭秘“年龄”
五行缺土:你的性格被“土”影响了吗?
五行缺土?戴黄玛瑙变旺运!
五行缺土的人如何逆袭命运?
安徽霍山特色美食大盘点:从土公鸡烧板栗到霍山臭豆腐
揭秘真实的周郎:历史与传说大不同
四柱八字揭秘你的年终运势