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)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716091.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716091.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716091.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unity引擎中光源都有哪幾種,都有什么作用

本文由 簡悅 SimpRead 轉碼&#xff0c; 原文地址 mp.weixin.qq.com Unity 引擎為了實現游戲場景的明暗和光影效果&#xff0c;提供了四種類型的光源&#xff0c;分別是方向光&#xff08;Directional Lights&#xff09;、點光源&#xff08;Point Lights&#xff09;、聚光燈…

Vue開發實例(一)Vue環境搭建第一個項目

Vue環境搭建&第一個項目 一、環境搭建二、安裝Vue腳手架三、創建Vue項目 一、環境搭建 下載方式從官網下載&#xff1a;http://nodejs.cn/download/ 建議下載v12.16.0版本以上的&#xff0c;因為版本低無法創建Vue的腳手架 檢驗是否安裝成功 配置環境變量 新增NODE_HOME&…

win11系統中nginx簡單的代理配置

一.背景 為了公司安排的師帶徒任務。 操作系統版本&#xff1a;win11家庭版 nginx版本&#xff1a;1.24.0 二.配置代理 之前文章已經說明了nginx簡單的安裝&#xff0c;要看閱讀這個文章哈。web服務器nginx下載及在win11的安裝-CSDN博客 1.配置需求識別 前端服務nginx(80…

【探索AI】十七 深度學習之第3周:卷積神經網絡(CNN)(一)-CNN的基本原理與結構

第3周&#xff1a;卷積神經網絡&#xff08;CNN&#xff09; CNN的基本原理與結構 常見的卷積層、池化層與全連接層 LeNet、AlexNet等經典CNN模型 實踐&#xff1a;使用CNN進行圖像分類任務 CNN的基本原理與結構 引言與背景介紹 卷積神經網絡&#xff08;CNN&#xff09;是…

雙周回顧#007 - 前端與后端

前端的問題不是難&#xff0c;而是它面對最終用戶。只要用戶的喜好和口味發生變化&#xff0c;前端就必須跟上。 這導致前端不得不快速變化&#xff0c;因為用戶的口味正在越來越快地改變。 后端不需要面對最終用戶&#xff0c;需要解決的都是一些經典的計算機科學問題&#…

什么是Vue指令?請列舉一些常見的Vue指令以及它們的用法

Vue.js 是一款流行的前端框架&#xff0c;它的指令&#xff08;Directives&#xff09;是 Vue.js 提供的一種特殊屬性&#xff0c;用于在模板中對 DOM 元素進行直接操作。指令通常是以 v- 開頭的特殊屬性&#xff0c;用于響應式地將數據綁定到 DOM 元素上。 在 Vue 中&#xf…

C語言初階—函數(函數的聲明和定義,函數遞歸)

函數聲明&#xff1a; 1.告訴編譯器有一個函數叫什么&#xff0c;參數是什么&#xff0c;返回類型是什么&#xff0c;但是具體是不是存在&#xff0c;函數聲明決定不了。 2.函數的聲明一般出現在函數使用之前&#xff0c;要滿足先聲明后使用。 3.函數的聲明一般要放在頭文件中。…

Launch學習

參考博客&#xff1a; (1) 史上最全的launch的解析來啦&#xff0c;木有之一歐 1 ROS工作空間簡介 2 元功能包 src目錄下可以包含多個功能包&#xff0c;假設需要使用機器人導航模塊&#xff0c;但是這個模塊中包含著地圖、定位、路徑規劃等不同的功能包&#xff0c;它們的邏…

agent內存馬

搭建一個簡單的Servlet項目 ServletDemo package com.naihe;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;…

【探索AI】十一 深度學習之機器學習基礎

鑒于之前文章中提到的深度學習計劃&#xff0c;后續的文章會根據之前的接著繼續學習&#xff0c;python基礎略過&#xff0c;想學的同學請自學&#xff1a; python入門 python進階 機器學習基礎 機器學習是人工智能領域的一個子集&#xff0c;它專注于從數據中自動學習并提升…

vue2+若依框架plus交互 路由介紹

本周及寒假 參加了校企合作的工程過程管理&#xff0c;和學長學姐一起寫項目&#xff0c;之前學了vue也沒有應用&#xff0c;然后對框架很多組件的用法不太了解&#xff0c;前期耽誤了一些時間。 框架模塊 首先是框架模塊的介紹 api存了一些系統管理及發送請求的方法 例如p…

【python】`assert`斷言語句

assert是一個斷言語句&#xff0c;用于在代碼中檢查某個條件是否為真。 如果條件為假&#xff0c;將觸發AssertionError 異常&#xff0c;從而指示存在錯誤。

Linux獲取進程(系統啟動時間和運行時間)運行時間

Linux獲取進程運行時間 思路&#xff1a;使用 ps - o命令 ps -p 986 -o etime可以獲取進程986的執行時間&#xff0c;不論系統時間有沒有發生改變&#xff0c;它都可以返回正確的結果: 總結&#xff1a;etime 是真正的程序運行時間&#xff0c;而不是系統運行時間與進程啟動…

在您的下一個項目中選擇 Golang 和 Node.js 之間的抉擇

作為一名軟件開發者&#xff0c;我總是在尋找構建應用程序的最快、最高效的工具。在速度和處理復雜任務方面&#xff0c;我認為 Golang 和 Node.js 是頂尖技術。兩者在性能方面都享有極高的聲譽。但哪一個更快——Golang 還是 Node&#xff1f;我決定深入一些硬核基準測試&…

java-ssm-jsp-寵物護理預定系統

java-ssm-jsp-寵物護理預定系統 獲取源碼——》公主號&#xff1a;計算機專業畢設大全

ASPICE實操中的那點事兒-底層軟件的單元測試該如何做

先來說下ASPICE項目實操中遇到的問題&#xff1a; 底層軟件在做單元測試時&#xff0c;從ASPICE角度看&#xff0c;該如何做&#xff1f;要不要在目標控制器或開發板中去測&#xff1f;尤其是復雜驅動&#xff0c;如果不在將程序下載到硬件中&#xff0c;該如何測試&#xff1…

物聯網與智慧城市:融合創新,塑造未來城市生活新圖景

一、引言 在科技飛速發展的今天&#xff0c;物聯網與智慧城市的融合創新已成為推動城市發展的重要力量。物聯網技術通過連接萬物&#xff0c;實現信息的智能感知、傳輸和處理&#xff0c;為智慧城市的構建提供了無限可能。智慧城市則運用物聯網等先進技術&#xff0c;實現城市…

使用R語言進行Logistic回歸分析(2)

一、數據集描述&#xff0c;問題要求 下表是40位肺癌病人的生存資料&#xff0c;X1表示生活行為能力平分&#xff08;1到100&#xff09;&#xff0c;X2為病人的年齡&#xff08;年&#xff09;&#xff0c;X3由診斷到進入研究的時間&#xff08;月&#xff09;&#xff0c;X4…

291.【華為OD機試】模擬目錄管理(JavaPythonC++JS實現)

??點擊這里可直接跳轉到本專欄,可查閱頂置最新的華為OD機試寶典~ 本專欄所有題目均包含優質解題思路,高質量解題代碼(Java&Python&C++&JS分別實現),詳細代碼講解,助你深入學習,深度掌握! 文章目錄 一. 題目-模擬目錄管理二.解題思路三.題解代碼Python題解…

計算機設計大賽 深度學習火車票識別系統

文章目錄 0 前言1 課題意義課題難點&#xff1a; 2 實現方法2.1 圖像預處理2.2 字符分割2.3 字符識別部分實現代碼 3 實現效果4 最后 0 前言 &#x1f525; 優質競賽項目系列&#xff0c;今天要分享的是 &#x1f6a9; 圖像識別 火車票識別系統 該項目較為新穎&#xff0c;適…