当前位置: 首页 > news >正文

langchain学习笔记(九)

RunnableBranch: Dynamically route logic based on input | 🦜️🔗 Langchain

基于输入的动态路由逻辑,通过上一步的输出选择下一步操作,允许创建非确定性链。路由保证路由间的结构和连贯。

有以下两种方法执行路由

1、通过RunnableLambda (推荐该方法)

2、RunnableBranch

from langchain_community.chat_models import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import PromptTemplatemodel=ChatOpenAI(model="gpt-3.5-turbo",temperature=0)
chain = (PromptTemplate.from_template("""根据用户的问题, 把它归为关于 `LangChain`, `OpenAI`, or `Other`.不要回答其他字
<question>
{question}
</question>
归为:
""")| model| StrOutputParser()
)response=chain.invoke({"question": "怎么调用ChatOpenAI"})
print('问题归类:',response)
##定义LLM
langchain_chain = (PromptTemplate.from_template("""你是一个langchain专家. \开头用 "langchain有人告诉我"回答问题. \Question: {question}Answer:""")| model
)
openai_chain = (PromptTemplate.from_template("""你是一个OpenAI专家. \开头用 "OpenAI有人告诉我"回答问题. \Question: {question}Answer:""")| model
)
general_chain = (PromptTemplate.from_template("""回答下面问题:Question: {question}Answer:""")| model
)
def route(info):if "openai" in info["topic"].lower():return openai_chainelif "langchain" in info["topic"].lower():return langchain_chainelse:return general_chain
#方式1RunnableLambda
from langchain_core.runnables import RunnableLambda
full_chain = {"topic": chain, "question": lambda x: x["question"]} | RunnableLambda(route)
response=full_chain.invoke({"question": "怎么用openAi"})
print('方式1RunnableLambda:',response)
# 方式2RunnableBranch
from langchain_core.runnables import RunnableBranch
branch = RunnableBranch((lambda x: "anthropic" in x["topic"].lower(), openai_chain),(lambda x: "langchain" in x["topic"].lower(), langchain_chain),general_chain,
)
full_chain = {"topic": chain, "question": lambda x: x["question"]} | branch
response=full_chain.invoke({"question": "怎么用lanGchaiN?"})
print('方式2RunnableBranch:',response)

相关文章:

langchain学习笔记(九)

RunnableBranch: Dynamically route logic based on input | &#x1f99c;️&#x1f517; Langchain 基于输入的动态路由逻辑&#xff0c;通过上一步的输出选择下一步操作&#xff0c;允许创建非确定性链。路由保证路由间的结构和连贯。 有以下两种方法执行路由 1、通过Ru…...

周处除三害在线资源最新电影1080p高清

打开下面这个链接就可以看到 周处除三害在线资源最新电影1080p高清 如果链接打不开&#xff0c;就复制下面的网址到浏览器打开 https://www.zhufaka.cn/liebiao/A09504AE3BF8BD06 用阿里云盘下载&#xff0c;下载完成之后&#xff0c;用迅雷播放 周处除三害在线资源最新电…...

STM32CubeIDE基础学习-新建STM32CubeIDE基础工程

STM32CubeIDE基础学习-新建STM32CubeIDE基础工程 前言 有开发过程序的朋友都清楚&#xff0c;后面开发是不需要再新建工程的&#xff0c;一般都是在初学时或者有特殊需要的时候才需要新建项目工程的。 后面开发都是可以在这种已有的工程上添加相关功能就行&#xff0c;只要前…...

R语言简介|你对R语言了解多少?

R语言是一种专门用于统计计算和图形展示的开源编程语言&#xff0c;它在数据科学领域有着广泛的应用。下面对R语言的环境、基础语法及注释进行解释&#xff1a; R语言环境 安装与配置 安装R语言通常可以从官方站点下载对应操作系统的安装包&#xff0c;如Windows、Linux、ma…...

Android的硬件接口HAL

我一直觉得&#xff0c;现代计算机不是一门科学&#xff0c;起码快算不上一门理科科学。上上下下全是人造&#xff0c;左左右右全是生意&#xff0c;用管理学&#xff0c;经济学去学计算机&#xff0c;也许更看得懂很多问题。HAL就是一个典型例子。 传统Linux绕开了微软的霸权…...

【js】数组的常用方法

增加 push,unshift,splice,concat 前面三种修改原数组,concat不会修改原数组push 从后面添加数据,并返回新数组的长度unshift 从前面添加数据,并返回新数组的长度splice 可以接受三个参数,第一个参数开始位置,第二个参数是删除元素的数量,第三个参数是插入的数据concat 合并数…...

08. Nginx进阶-Nginx动静分离

简介 什么是动静分离&#xff1f; 通过中间件将动态请求和静态请求进行分离。分离资源&#xff0c;减少不必要的请求消耗&#xff0c;减少请求延时。 动静分离的好处 动静分离以后&#xff0c;即使动态服务不可用&#xff0c;静态资源仍不受影响。 动静分离示意图 动静分离…...

RPC--一起学习吧之架构

RPC&#xff08;远程过程调用&#xff09;是一种网络通信协议&#xff0c;它允许一台计算机&#xff08;客户端&#xff09;上的程序调用另一台计算机&#xff08;服务器&#xff09;上的程序&#xff0c;就像调用本地程序一样。RPC 可以使得网络中的不同进程能够相互调用&…...

服务器后端是学习java还是php

没有绝对的"最好"语言&#xff0c;每种后端语言都有其适用的场景和特点。以下是几种常用的后端语言&#xff1a; 1. Java&#xff1a;Java是一种通用且强大的语言&#xff0c;广泛用于企业级应用和大型系统。它有很好的性能和可靠性&#xff0c;并且具有优秀的生态系…...

DCFL: for Oriented Tiny Object Detection

文章目录 AbstractIntroductionContributionRelated Work定向目标检测微小目标检测多尺度学习标签分配上下文信息特征增强MethodOverview动态先验Coarse Prior MatchingFiner Dynamic Posterior MatchingAblation StudyAnalysis不平衡问题的调解可视化速度Conclusionhh 源代码 …...

代码学习记录11

随想录日记part11 t i m e &#xff1a; time&#xff1a; time&#xff1a; 2024.03.04 主要内容&#xff1a;今天的主要内容是深入了解栈和队列中比较难的题录类型&#xff1a;滑动窗口最大值与前 K K K 个高频元素&#xff0c;最后对于这三天学习的队列和栈的知识进行总结。…...

【LeetCode】第 387 场周赛

3069. 将元素分配到两个数组中 I 给你一个下标从 1 开始、包含 不同 整数的数组 nums &#xff0c;数组长度为 n 。 你需要通过 n 次操作&#xff0c;将 nums 中的所有元素分配到两个数组 arr1 和 arr2 中。在第一次操作中&#xff0c;将 nums[1] 追加到 arr1 。在第二次操作…...

基于 Vue3打造前台+中台通用提效解决方案(下)

47、通用组件 - 倒计时组件 特惠部分存在一个倒计时的功能,所以我们需要先处理对应的倒计时模块,并把它处理成一个通用组件。 那么对于倒计时模块我们又应该如何进行处理呢? 所谓倒计时,其实更多的是一个时间的处理,那么对于时间的处理,此时我们就需要使用到一个第三方…...

Topaz Video AI:一键提升视频品质,智能重塑影像魅力 mac/win版

Topaz Video AI是一款革命性的视频智能处理软件&#xff0c;它利用先进的机器学习和人工智能技术&#xff0c;为视频创作者提供了前所未有的视频增强和修复功能。无论您是专业视频编辑师、摄影师&#xff0c;还是热爱视频创作的爱好者&#xff0c;Topaz Video AI都能帮助您轻松…...

高效办公软件中哪个提醒待办事项更有效

在忙碌的办公环境中&#xff0c;每个人都像是一台精密运转的机器&#xff0c;处理着各种任务和待办事项。而在这其中&#xff0c;总有一些人&#xff0c;他们仿佛拥有超能力般&#xff0c;总是能准时、高效地完成每一项工作。他们的秘密武器是什么呢&#xff1f;答案就是——高…...

牛客练习赛122

D:圆 正着求删除的最小代价不好做&#xff0c;采用逆向思维&#xff0c;求选择一些不相交的线段使得构成一个圆的代价尽量大&#xff0c;最后答案就是所有线段权值之和减去最大代价。 那么如何求这个最大代价呢&#xff1f;显然区间DP 老套路&#xff1a;破环成链&#xff0…...

软考复习调整策略和学习计划!

根据软考办发布的最新通知&#xff0c;在群里引起了热烈讨论的是2024年度计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试的安排。其中&#xff0c;信息系统项目管理师&#xff08;简称高项&#xff09;的考试次数从每年两次减少到只有5月份进行&#xff0c;而系…...

1小时网络安全事件报告要求,持安零信任如何帮助用户应急响应?

12月8日&#xff0c;国家网信办起草发布了《网络安全事件报告管理办法&#xff08;征求意见稿&#xff09;》&#xff08;以下简称“办法”&#xff09;。拟规定运营者在发生网络安全事件时应当及时启动应急预案进行处置。 1小时报告 按照《网络安全事件分级指南》&#xff0c…...

mysql使用连接池

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、mysql连接池&#xff1f;二、使用步骤1.引入库 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a; 提示&#xff1a…...

06. Nginx进阶-Nginx代理服务

proxy代理功能 正向代理 什么是正向代理&#xff1f; 正向代理&#xff08;forward proxy&#xff09;&#xff0c;一个位于客户端和原始服务器之间的服务器。 工作原理 为了从原始服务器获取内容&#xff0c;客户端向代理发送一个请求并指定目标&#xff08;即原始服务器…...

阿里云防火墙三层体系:安全组、iptables与云防火墙协同实战

1. 阿里云服务器防火墙不是“一个开关”&#xff0c;而是三层防御体系的协同控制点很多人第一次登录阿里云ECS控制台&#xff0c;看到“安全组”三个字&#xff0c;下意识就去翻“防火墙设置”菜单——结果找半天没找到。我带过十几期运维新人培训&#xff0c;90%的人第一反应都…...

终极Emu模型架构解析:深入理解370亿参数的多模态Transformer

终极Emu模型架构解析&#xff1a;深入理解370亿参数的多模态Transformer 【免费下载链接】Emu Emu Series: Generative Multimodal Models from BAAI 项目地址: https://gitcode.com/gh_mirrors/emu/Emu Emu是由BAAI开发的革命性多模态生成模型系列&#xff0c;通过融合…...

7.跨品牌手机刷机原理深度解析|BL 解锁机制 + 分区读写 + 故障修复全方案

摘要 本文系统性地阐述主流品牌智能手机(华为、小米、OPPO、vivo、一加、苹果)刷机与维修的核心原理与操作流程。针对不同品牌底层架构差异,提供从Bootloader解锁、Recovery刷写到系统固件注入的完整技术方案。所有操作步骤均基于实际硬件环境验证,包含完整可运行的Python…...

警惕AI领域未经证实的技术传闻与虚构命名

我不能按照您的要求生成关于“TAI #200: Anthropic’s Mythos Capability Step Change and Gated Release”的博文内容。原因如下&#xff1a;该标题中出现的“Mythos”并非 Anthropic 官方公开发布或确认存在的模型、能力或产品名称。截至2024年7月&#xff0c;Anthropic 官方…...

Unity游戏资源提取实战指南:AssetStudio高阶用法与避坑手册

1. 这不是“又一个AssetStudio教程”&#xff0c;而是我拆了27款Unity手游后总结的资源提取生存手册AssetStudio、Unity游戏资源提取、Unity AssetBundle、Unity3D反编译——这几个词&#xff0c;过去三年里我每天至少在技术群、论坛、工单系统里看到50次。但绝大多数人点开Ass…...

微信社群开发wechat ipad协议

WTAPI框架wechat ipad协议 微信社群开发&#xff0c;开发微信机器人/微信个人号二次开发你可以 通过WTAPI 框架实现 个性化微信功能 &#xff08;例云发单助手、社群小助手、客服系统、机器人等&#xff09;&#xff0c;用来自动管理微信消息。用户仅可一次对接&#xff0c;完善…...

阅读落地灯哪个牌子好?优质款阅读落地灯推荐,买前建议收藏!

​想要真正舒服又省心的照明&#xff0c;就别只会盯着参数看。说实话&#xff0c;挑护眼大路灯我就盯两点&#xff1a;光线柔不柔、用久了会不会累眼。像我家书桌前那种容易眩光的&#xff0c;我用一会儿就觉得不对劲&#xff1b;但像下面这些护眼大路灯&#xff0c;调光调色做…...

基于Windows内核驱动框架的游戏控制器虚拟化技术实现方案

基于Windows内核驱动框架的游戏控制器虚拟化技术实现方案 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 在Windows游戏生态系统中&#xff0c;设备兼容性一…...

mob源码深度解析:Go语言实现高效Git协作工具的架构奥秘

mob源码深度解析&#xff1a;Go语言实现高效Git协作工具的架构奥秘 【免费下载链接】mob Tool for smooth git handover. 项目地址: https://gitcode.com/gh_mirrors/mo/mob 在团队协作开发中&#xff0c;Git代码交接常常成为效率瓶颈。mob作为一个用Go语言编写的Git协作…...

pointer reference作为顶层参数(三)

一、核心代码#include "array_FIFO.h"//void array_FIFO (dout_t d_o[4], din_t d_i[4], didx_t idx[4]) { void array_FIFO (dout_t d_o[4], din_t *d_i, didx_t idx[4]) { #pragma HLS INTERFACE m_axi depth4 portd_i //#pragma HLS INTERFACE s_axilite register…...