LangChain 语言 —— LCEL

文章目录

  • 一、概述
  • 二、快速开始
    • 1、invoke 一个 runable
    • 2、batch 一个 runable
    • 3、stream 一个 runable
    • 4、将runables组合起来
    • 5、并行调用可运行文件
    • 6、将任何function转换为可runable
    • 7、合并输入和输出字典
    • 8、将输入字典包含在输出字典中
    • 9、添加默认调用参数


一、概述

 LangChain表达式语言是一种创建任意自定义链的方法。它建立在 Runnable 协议之上。


二、快速开始

 这是所有最重要的LCEL图元的快速参考。

1、invoke 一个 runable

from langchain_core.runnables import RunnableLambdarunnable = RunnableLambda(lambda x: str(x))
runnable.invoke(5)

2、batch 一个 runable

from langchain_core.runnables import RunnableLambdarunnable = RunnableLambda(lambda x: str(x))
runnable.batch([7, 8, 9])

3、stream 一个 runable

from langchain_core.runnables import RunnableLambdadef func(x):for y in x:yield str(y)runnable = RunnableLambda(func)for chunk in runnable.stream(range(5)):print(chunk)# Async variant:
# async for chunk in await runnable.astream(range(5)):
#     print(chunk)

4、将runables组合起来

 langchain 提供一种 Pipe 操作符:|,该操作符 | 的作用是将其前面的 runable 的输出传给后面的 runable 的输入中。

from langchain_core.runnables import RunnableLambdarunnable1 = RunnableLambda(lambda x: {"foo": x})
runnable2 = RunnableLambda(lambda x: [x] * 2)chain = runnable1 | runnable2chain.invoke(2)

5、并行调用可运行文件

from langchain_core.runnables import RunnableLambda, RunnableParallelrunnable1 = RunnableLambda(lambda x: {"foo": x})
runnable2 = RunnableLambda(lambda x: [x] * 2)chain = RunnableParallel(first=runnable1, second=runnable2)chain.invoke(2)# 输出为:{'first': {'foo': 2}, 'second': [2, 2]}

6、将任何function转换为可runable

from langchain_core.runnables import RunnableLambdadef func(x):return x + 5runnable = RunnableLambda(func)
runnable.invoke(2)

7、合并输入和输出字典

from langchain_core.runnables import RunnableLambda, RunnablePassthroughrunnable1 = RunnableLambda(lambda x: x["foo"] + 7)chain = RunnablePassthrough.assign(bar=runnable1)chain.invoke({"foo": 10})
# {'foo': 10, 'bar': 17}

 这段代码的含义是:

  1. 第三行,创建了一个 RunnableLambda 实例,RunnableLambda 是一个可运行的对象,其核心功能是应用一个函数。这里定义的函数是一个 Lambda 函数,接收一个输入 x,并返回 x[“foo”] 的值加 7。
  2. 第五行,使用 RunnablePassthrough 类的 assign 方法创建了一个新的处理链。RunnablePassthrough 是一个简单的可运行对象,它将输入直接传递给下一个可运行对象。assign 方法将 runnable1 分配给一个新的键 bar,即它会将 runnable1 的输出赋值给 bar。
  3. 这一行代码调用 chain 处理链,输入参数是一个字典 {“foo”: 10}。处理链执行的步骤如下:
    • 首先,RunnablePassthrough 直接传递输入到下一个步骤。
    • 接着,runnable1 被调用,runnable1 计算 x[“foo”] + 7,其中 x[“foo”] 为 10,所以结果是 17。
    • 最后,结果被赋值给新的键 bar,形成输出 {“foo”: 10, “bar”: 17}。

8、将输入字典包含在输出字典中

from langchain_core.runnables import (RunnableLambda,RunnableParallel,RunnablePassthrough,
)runnable1 = RunnableLambda(lambda x: x["foo"] + 7)chain = RunnableParallel(bar=runnable1, baz=RunnablePassthrough())chain.invoke({"foo": 10})
# {'bar': 17, 'baz': {'foo': 10}}

9、添加默认调用参数

from typing import Optional
from langchain_core.runnables import RunnableLambdadef func(main_arg: dict, other_arg: Optional[str] = None) -> dict:if other_arg:return {**main_arg, **{"foo": other_arg}}return main_argrunnable1 = RunnableLambda(func)
bound_runnable1 = runnable1.bind(other_arg="bye")bound_runnable1.invoke({"bar": "hello"})
#{'bar': 'hello', 'foo': 'bye'}

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

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

相关文章

华为机考真题 -- 靠谱的车

题目描述: 程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大。出租车司机解释说他不喜欢数字 4,所以改装了计费表,任何数字位置遇到数字 4 就直接跳过,其余功能都正常。 比如: 1. 23 再多一块钱就变为 25; 2. 39 再多一块钱…

大象资讯 | IvorySQL 3.3 发版

IvorySQL 3.3 于 2024.07.11 日发版,该版本基于 PostgreSQL 16.3,修复若干问题。 IvorySQL 是一款以 PostgreSQL 为基础进行开发,并且兼容 Oracle 的开源数据库。该项目是在 Apache 2.0 许可证下发布的,社区鼓励且欢迎所有类型的贡…

Linux--安装VMware步骤

安装VMware VMware Desktop Hypervisors for Windows, Linux, and Mac 复制链接打开浏览器下载即可 从官网下载软件,完成后为确保后续正常使用,需要检查虚拟网卡是否安装完成 检查虚拟网卡的安装步骤 Windows--设置--高级设置--网络适配器--看是否有显…

STM32杂交版(HAL库、音乐盒、闹钟、点阵屏、温湿度)

一、设计描述 本设计精心构建了一个以STM32MP157A高性能单片机为核心控制单元的综合性嵌入式系统。该系统巧妙融合了蜂鸣器、数码管显示器、点阵屏、温湿度传感器、LED指示灯以及按键等多种外设模块,形成了一个功能丰富、操作便捷的杂交版智能设备。通过串口…

vue2学习笔记-官网使用指南和搭建开发环境

官网使用指南 官网地址:介绍 — Vue.js 1、学习 1.1 教程和API 最重要的两个板块。API是VUE的字典,需要时来查阅。 1.2、风格指南 如何写出风格优雅的VUE代码。规则分为四类:必要的,强烈推荐、推荐、谨慎使用。 1.3、示例 …

初始网络知识

前言👀~ 上一章我们介绍了使用java代码操作文件,今天我们来聊聊网络的一些基础知识点,以便后续更深入的了解网络 网络 局域网(LAN) 广域网(WAN) 路由器 交换机 网络通信基础 IP地址 端…

PCI PTS 硬件安全模块(HSM)模块化安全要求 v5.0

符合条件的 PCI SSC 利益相关者在 30 天的意见征询 (RFC) 期间审查 PCI PTS 硬件安全模块 (HSM) 模块化安全要求 v5.0 草案并提供反馈。 PCI PTS 硬件安全模块(HSM)模块化安全要求 v5.0图 从 7 月 8 日到 8 月 8 日,邀请符合条件的 PCI SSC 利益相关者在 30 天的意见…

【linux】服务器创建RAID1(软件配置RAID1)

【linux】服务器创建RAID1(软件配置RAID1) 文章目录 【linux】服务器创建RAID1(软件配置RAID1)一、配置介绍raid介绍raid类型RAID 0:RAID 1:RAID 5:RAID 6:二、配置RAID硬件RAID:软件RAID:三、软件配置RAID1(以linux为例)1.先进入管理员模式2.安装mdadm工具3.创建raid1数…

SSH服务器CBC漏洞(CVE-2008-5161)

漏洞简介 OpenSSH 是一种开放源代码的SSH协议的实现,初始版本用于OpenBSD平台,现在已经被移植到多种Unix/Linux类操作系统下,Linux环境中一般采用AES这种算法加密,AES有五种加密模式(CBC、ECB、CTR、OCF、CFB),系统默认会选择CBC的加密模式。 CBC模式是一种常用的对称…

存取款系统接口设计

题目描述: 设计一个存取款接口,入参是账户数组balances 与存取款请求体数组requests 对于取款要求判断: 当前余额不足,返回余额不足帐号 之前的取款时间在24之前的,在24小时之后返回上次取款额度的百分之2并向下取整。…

Hive期末测试题(头歌)

第1关:计算“Bad Boys (1995)”这部电影的评分次数 -- 使用mydb数据库 USE mydb;-- 计算“Bad Boys (1995)”这部电影的评分次数 SELECT m.movieid, m.moviename, COUNT(r.movieid) AS rating_count FROM t_movies m JOIN t_ratings r ON m.movieid r.movieid WHE…

【欧几里得算法】C++求解最大公因子:求解两个正整数的最大公因子

1. 算法描述: 【欧几里得算法】求解两个正整数m,n的最大公因子 2. 算法求解步骤: E1(求两个整数的余数):求两个正整数的余数,r m % nE2(判断余数是否为0)&#xff1a…

遥感影像图像识别

遥感影像图像识别 基于遥感影像的道路提取论文、开源代码和数据集汇总

C语言 结构体和共用体——结构体所占内存的字节数

目录 结构体所占内存的字节数 结构体所占内存的字节数

Unity之OpenXR+XR Interaction Toolkit实现 Gaze眼部追踪

使用 Unity OpenXR 实现Gaze眼部追踪 在虚拟现实(VR)和增强现实(AR)应用中,眼动追踪是一项强大而受欢迎的技术。它可以让开发者更好地理解用户的注意力和行为,并创造出更加沉浸和智能的体验。在本文中,我们将探讨如何使用 Unity OpenXR 实现Gaze眼部追踪功能。 Unity …

Linux文件:EXT2文件系统工作原理 软硬链接

Linux文件:文件系统究竟是什么?如何管理文件? 前言一、磁盘结构、存储策略1.1 磁盘存储结构1.2 磁盘存储策略1.3 磁盘的逻辑存储结构 二、如何管理磁盘文件三、如何管理组3.1 每个组保存的数据种类3.2 如何管理数据1、节点表(inod…

科普文:Shell编程三剑客:grep+sed+awk

shell三剑客是grep、sed和awk三个工具的简称,因功能强大,使用方便且使用频率高,因此被戏称为三剑客,熟练使用这三个工具可以极大地提升运维效率。 三剑客的特点: 命令 特点 使用场景 grep 擅长查找过滤 快速查找过滤 sed 擅长取行和替…

智慧城市可视化页面怎么做?免费可视化工具可以帮你

智慧城市是一个综合性的概念,广泛应用于各个领域,如基础设施建设、信息化应用、产业经济发展、市民生活品质等。 可视化页面的制作也是一个综合性的过程,需要确定展示内容、数据收集与处理、设计可视化元素等多个环节紧密配合。 1. 明确展示…

download failed after attempts=6: dial tcp 108.160.169.178:443: i/o timeout问题解决

添加公开的docker加速代理(可能会失效): vim /etc/docker/daemon.json{"registry-mirrors":["https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.m.daocloud.io","https://noohub.ru","https://huecker.io…

序列化Serialization

介绍 序列化(Serialization)是将对象的状态转换为可存储或传输的格式的过程。通过序列化,可以将对象保存到文件中、数据库中,或者通过网络传输到远程系统。相应地,反序列化(Deserialization)是…