AI Agent开发学习系列 - langchain之Chains的使用(5):Transformation

Transformation(转换链)是 LangChain 中用于“自定义数据处理”的链式工具,允许你在链路中插入任意 Python 代码,对输入或中间结果进行灵活处理。常用于:

  • 对输入/输出做格式化、过滤、摘要、拆分等自定义操作
  • 作为 LLMChain 等链的前置或后置处理环节

典型用法举例

假设你有一段长文本,想先用 Python 代码提取前3段,再交给大模型总结:

from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
from langchain.chains import SimpleSequentialChain# 读取待处理文本内容
with open("letter.txt", "r") as f:letters = f.read()from langchain.chains import (LLMChain,SimpleSequentialChain,TransformChain
)# 定义转换函数:只取前三个段落
def transform_func(inputs:dict) -> dict:text = inputs["content"]trans_text = "\n\n".join(text.split("\n\n")[:3])return {"summary": trans_text}# 构建文档转换链,将原始内容转换为摘要内容
transform_chain = TransformChain(input_variables=["content"],output_variables=["summary"],transform=transform_func
)# 总结用的prompt模板
template = """总结下面的内容:
{summary}
总结:"""prompt = PromptTemplate(input_variables=["summary"],template=template
)print(prompt)  # 打印prompt模板# 使用腾讯混元大模型作为LLM
llm = ChatOpenAI(api_key=SecretStr(os.environ.get("HUNYUAN_API_KEY", "")),base_url="https://api.hunyuan.cloud.tencent.com/v1",model="hunyuan-t1-latest",temperature=0,
)# 构建LLM链,输入为summary,输出为总结
llm_chain = LLMChain(llm=llm,prompt=prompt
)# 顺序链:先transform,再总结
sequential_chain = SimpleSequentialChain(chains=[transform_chain, llm_chain],verbose=True
)# 执行顺序链,输出最终结果
print(sequential_chain.run(letters))

输出:

input_variables=['summary'] template='总结下面的内容:\n{summary}\n总结:'> Entering new SimpleSequentialChain chain...
Dear Dr. Smith,I hope this letter finds you well. I am writing to express my sincere gratitude for your guidance and support throughout my recent research project on "Deep Learning-Based Image Recognition for Medical Diagnosis." Specifically, my research focused on applying convolutional neural networks (CNNs) to the automatic detection and classification of medical images, such as identifying pathological features in X-rays and MRI scans. I explored methods to improve model accuracy and robustness, including data augmentation, transfer learning, and the integration of attention mechanisms to enhance feature extraction. Your expertise and encouragement have been invaluable to my academic growth, and I truly appreciate the time and effort you have dedicated to mentoring me.The insights you provided, especially regarding the optimization of convolutional neural network architectures and the interpretation of experimental results, not only helped me overcome several challenges but also inspired me to explore new directions in my work. I am especially grateful for your constructive feedback during our discussions, which greatly improved the quality of my research.
这是一封致Dr. Smith的感谢信,作者主要表达对其在“基于深度学习的医学诊断图像识别”研究项目中的指导与支持的诚挚谢意。研究聚焦于应用卷积神经网络(CNN)实现医学影像(如X光、MRI)的自动检测与分类,并探索了数据增强、迁移学习及注意力机制等方法以提升模型准确性与鲁棒性。作者特别感谢Dr. Smith在优化CNN架构、解读实验结果等方面的专业建议,以及讨论中提供的建设性反馈,这些帮助其克服挑战并提升了研究质量,对其学术成长意义重大。> Finished chain.
这是一封致Dr. Smith的感谢信,作者主要表达对其在“基于深度学习的医学诊断图像识别”研究项目中的指导与支持的诚挚谢意。研究聚焦于应用卷积神经网络(CNN)实现医学影像(如X光、MRI)的自动检测与分类,并探索了数据增强、迁移学习及注意力机制等方法以提升模型准确性与鲁棒性。作者特别感谢Dr. Smith在优化CNN架构、解读实验结果等方面的专业建议,以及讨论中提供的建设性反馈,这些帮助其克服挑战并提升了研究质量,对其学术成长意义重大。

关键点说明

  • TransformChain 允许插入任意 Python 逻辑,极大增强链式流程的灵活性。
  • 可与 LLMChain、SimpleSequentialChain 等组合,实现“预处理-大模型-后处理”流水线。
  • 适合数据清洗、格式转换、摘要、实体提取等场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/88614.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/88614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Druid 连接池使用详解

Druid 连接池使用详解 一、Druid 核心优势与架构 1. Druid 核心特性 特性说明价值监控统计内置 SQL 监控/防火墙实时查看 SQL 执行情况防 SQL 注入WallFilter 防御机制提升系统安全性加密支持数据库密码加密存储符合安全审计要求扩展性强Filter 链式架构自定义功能扩展高性能…

9.2 埃尔米特矩阵和酉矩阵

一、复向量的长度 本节的主要内容可概括为:当对一个复向量 z\pmb zz 或复矩阵 A\pmb AA 转置后,还要取复共轭。 不能在 zTz^TzT 或 ATA^TAT 时就停下来,还要对所有的虚部取相反的符号。对于一个分量为 zjajibjz_ja_jib_jzj​aj​ibj​ 的列向…

AI驱动的低代码革命:解构与重塑开发范式

引言:低代码平台的范式转移 当AI技术与低代码平台深度融合,软件开发正经历从"可视化编程"到"意图驱动开发"的根本性转变。这种变革不仅提升了开发效率,更重新定义了人与系统的交互方式。本文将从AI介入的解构层次、交互范…

zookeeper etcd区别

ZooKeeper与etcd的核心区别体现在设计理念、数据模型、一致性协议及适用场景等方面。‌ZooKeeper基于ZAB协议实现分布式协调,采用树形数据结构和临时节点特性,适合传统分布式系统;而etcd基于Raft协议,以高性能键值对存储为核心&am…

模拟注意力:少量参数放大 Attention 表征能力

论文标题 SAS: Simulated Attention Score 论文地址 https://arxiv.org/pdf/2507.07694 代码 见论文附录 作者背景 摩根士丹利,斯坦福大学,微软研究院,新加坡国立大学,得克萨斯大学奥斯汀分校,香港大学 动机 …

零基础|宝塔面板|frp内网穿透|esp32cam远程访问|微信小程序

1.准备好阿里云服务器和宝塔面板2.安装frp服务端3.测试(密码账号在详情里面)4.配置客户端#一、没有域名情况下 [common] server_addr #公网ip地址,vps server_port 7000 服务的bind_port token 12121212 [httpname] type tcp # 没有域名情况下使用 tcp local_i…

Spring Boot整合MyBatis+MySQL+Redis单表CRUD教程

Spring Boot整合MyBatisMySQLRedis单表CRUD教程 环境准备 1. Redis安装(Windows) # 下载Redis for Windows # 访问: https://github.com/tporadowski/redis/releases # 下载Redis-x64-5.0.14.1.msi并安装# 启动Redis服务 redis-server# 测试连接 redis-c…

linux学习第30天(线程同步和锁)

线程同步协同步调,对公共区域数据按序访问。防止数据混乱,产生与时间有关的错误。数据混乱的原因资源共享(独享资源则不会)调度随机(意味着数据访问会出现竞争)线程间缺乏必要同步机制锁的使用建议锁!对公共数据进行保护。所有线程【应该】在…

JavaScript中的系统对话框:alert、confirm、prompt

JavaScript中的系统对话框:alert、confirm、prompt 在Web开发的世界里,JavaScript始终扮演着“桥梁”的角色——它连接用户与网页,让静态的页面焕发活力。而在这座桥梁上,系统对话框(System Dialogs)是最基…

圆幂定理深度探究——奥数专题讲义

圆幂定理深度探究——奥数专题讲义 开篇语:几何中的"隐藏等式" 在平面几何的星空中,圆与直线的交点仿佛散落的珍珠,而连接这些珍珠的线段之间,藏着一组令人惊叹的等量关系。当我们用直尺测量、用逻辑推导时,…

一文看懂显示接口:HDMI / DP / VGA / USB-C 有什么区别?怎么选?

刚买的新显示器,插上线却发现画面糊成马赛克?游戏打到关键时刻突然黑屏?4K电影看着看着就卡顿?别急!这些问题很可能都是"接口没选对"惹的祸!今天我们就来彻底搞懂HDMI、DP、VGA、USB-C这些常见的…

【ARM嵌入式汇编基础】- 操作系统基础(二)

操作系统基础(二) 文章目录 操作系统基础(二)6、线程7、进程内存管理8、内存页9、内存保护10、匿名内存和内存映射内存11、内存映射文件和模块6、线程 程序首次启动时,会创建一个新进程,并为该程序分配一个线程。该初始线程负责初始化进程并最终调用程序中的主函数。多线…

C#调用Matlab生成的DLL

C#调用Matlab生成的DLL 1.Matlab生成DLL文件1.1准备脚本文件1.2.输出DLL文件2.Winform项目中调用DLL2.1.创建Winform项目2.2.添加引用2.3.调用DLL2.3.1. 方法12.3.2. 方法22.4.配置CPU3.运行测试4.缺点1.Matlab生成DLL文件 1.1准备脚本文件 在Matlab环境下创建脚本文件calcul…

Julia爬取数据能力及应用场景

Julia 是一种高性能编程语言,特别适合数值计算和数据分析。然而,关于数据爬取(即网络爬虫)方面,我们需要明确以下几点:虽然它是一门通用编程语言,但它的强项不在于网络爬取(Web Scra…

Java03 二维数组|方法

一、声明数组和初始化(掌握)数据类型[] 数组名 ; 数据类型 数组名[] ;静态初始化数据类型[] 数组名 {元素1,元素2,元素3};动态初始化数据类型[] 数组名 new 数据类型[5]; 数组名[0] 元素1;二、数组的内存结构(掌握)package…

1. JVM介绍和运行流程

1. jvm是什么JVM(Java Virtual Machine)是 Java 程序的运行环境,它是 Java 技术的核心组成部分,负责执行编译后的 Java 字节码(.class文件)。jvm 说白了就是虚拟机,一个专门运行java字节码文件的…

Spring Cloud Gateway 的路由和断言是什么关系?

1. 基本概念 路由是 Spring Cloud Gateway 的基本组成单元。它定义了从客户端接收到的请求应该被转发到哪个目标服务。一个完整的路由通常包含以下几个要素: ID (id):路由的唯一标识符。目标 URI (uri):请求最终要被转发到的后端服务地址。断…

线程属性设置全攻略

目录 一、线程属性的概念 二、线程属性的核心函数 1. 初始化与销毁线程属性对象 2. 常用属性设置函数 三、线程属性的设置示例 1. 设置线程为分离状态 2. 设置线程栈大小 3. 设置线程调度策略和优先级 四、线程属性的关键注意事项 1. 分离状态(Detached S…

苍穹外卖-day06

苍穹外卖-day06 课程内容 HttpClient微信小程序开发微信登录导入商品浏览功能代码 学习目标 能够使用HttpClient发送HTTP请求并解析响应结果 了解微信小程序开发过程 掌握微信登录的流程并实现功能代码 了解商品浏览功能需求 功能实现:微信登录、商品浏览 1. H…

安卓定制功能

未解决的定制功能 1.创建自定义分区 2.通过服务启动应用进程 3.应用白名单 4.网络白名单 5.应用锁 6.默认launcher 7.多主页动态切换 8.禁止状态栏下拉/锁屏页面禁止下拉状态栏(两种一起) 9.导航栏动态打开关闭 10.固件默认是手势还是导航栏 11.状态栏动…