精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

LangChain的LCEL和Runnable你搞懂了嗎

人工智能
本篇主要聊了LangChain的LCEL表達(dá)式,以及LangChain鏈的原理,以及常用的幾個(gè)Runnable的定義和應(yīng)用場(chǎng)景。

LangChain的LCEL估計(jì)行業(yè)內(nèi)的朋友都聽過(guò),但是LCEL里的RunnablePassthrough、RunnableParallel、RunnableBranch、RunnableLambda又是什么意思?什么場(chǎng)景下用?

一、LCEL的定義和原理

LangChain的核心是Chain,即對(duì)多個(gè)組件的一系列調(diào)用。

LCEL是LangChain 定義的表達(dá)式語(yǔ)言,是一種更加高效簡(jiǎn)潔的調(diào)用一系列組件的方式。

LCEL使用方式就是:以一堆管道符("|")串聯(lián)所有實(shí)現(xiàn)了Runnable接口的組件。

比如這樣:

prompt_tpl = ChatPromptTemplate.from_messages(
    [
        ("system", "{parser_instructions}"),
        ("human", "列出{cityName}的{viewPointNum}個(gè)著名景點(diǎn)。"),
    ]
)

output_parser = CommaSeparatedListOutputParser()
parser_instructions = output_parser.get_format_instructions()

model = ChatOpenAI(model="gpt-3.5-turbo")

chain = prompt_tpl | model | output_parser

response = chain.invoke(
    {"cityName": "南京", "viewPointNum": 3, "parser_instructions": parser_instructions}
)

所以LangChain為了讓組件能以LCEL的方式快速簡(jiǎn)潔的被調(diào)用,計(jì)劃將所有組件都實(shí)現(xiàn)Runnable接口。比如我們常用的PromptTemplate 、LLMChain 、StructuredOutputParser 等等。

管道符("|")在Python里就類似or運(yùn)算(或運(yùn)算),比如A|B,就是A.or(B)。

那對(duì)應(yīng)到LangChain的Runnable接口里,這個(gè)or運(yùn)算是怎么實(shí)現(xiàn)的呢?一起看到源碼:

LangChain通過(guò)or將所有的Runnable串聯(lián)起來(lái),在通過(guò)invoke去一個(gè)個(gè)執(zhí)行,上一個(gè)組件的輸出,作為下一個(gè)組件的輸入。

LangChain這風(fēng)格怎么有點(diǎn)像神經(jīng)網(wǎng)絡(luò)呀,不得不說(shuō),這個(gè)世界到處都是相似的草臺(tái)班子。嗨!

總結(jié)起來(lái)講就是:LangChain的每個(gè)組件都實(shí)現(xiàn)了Runnable,通過(guò)LCEL方式,將多個(gè)組件串聯(lián)到一起,最后一個(gè)個(gè)執(zhí)行每個(gè)組件的invoke方法。上一個(gè)組件的輸出是下一個(gè)組件的輸入。

二、Runnable的含義和應(yīng)用場(chǎng)景

1.RunnablePassthrough

① 定義

RunnablePassthrough 主要用在鏈中傳遞數(shù)據(jù)。RunnablePassthrough一般用在鏈的第一個(gè)位置,用于接收用戶的輸入。如果處在中間位置,則用于接收上一步的輸出。

② 應(yīng)用場(chǎng)景

比如,依舊使用上面的例子,接受用戶輸入的城市,如果輸入城市是南京,則替換成北京,其余不變。代碼如下。此處的{}和RunnablePassthrough.assign()是同一個(gè)語(yǔ)義。

chain = (
    {
        "cityName": lambda x: '北京' if x["cityName"] == '南京' else x["cityName"],
        "viewPointNum": lambda x: x["viewPointNum"],
        "parser_instructions": lambda x: x["parser_instructions"],
    }
    | prompt_tpl
    | model
    | output_parser
)

2.RunnableParallel

① 定義

RunnableParallel看名字里的Parallel就猜到一二,用于并行執(zhí)行多個(gè)組件。通過(guò)RunnableParallel,可以實(shí)現(xiàn)部分組件或所有組件并發(fā)執(zhí)行的需求。

② 應(yīng)用場(chǎng)景

比如,同時(shí)要執(zhí)行兩個(gè)任務(wù),一個(gè)列出城市著名景點(diǎn),一個(gè)列出城市著名書籍。

prompt_tpl_1 = ChatPromptTemplate.from_messages(
    [
        ("system", "{parser_instructions}"),
        ("human", "列出{cityName}的{viewPointNum}個(gè)著名景點(diǎn)。"),
    ]
)
prompt_tpl_2 = ChatPromptTemplate.from_messages(
    [
        ("system", "{parser_instructions}"),
        ("human", "列出關(guān)于{cityName}歷史的{viewPointNum}個(gè)著名書籍。"),
    ]
)

output_parser = CommaSeparatedListOutputParser()
parser_instructions = output_parser.get_format_instructions()

model = ChatOpenAI(model="gpt-3.5-turbo")

chain_1 = prompt_tpl_1 | model | output_parser
chain_2 = prompt_tpl_2 | model | output_parser
chain_parallel = RunnableParallel(view_point=chain_1, book=chain_2)

response = chain_parallel.invoke(
    {"cityName": "南京", "viewPointNum": 3, "parser_instructions": parser_instructions}
)

3.RunnableBranch

① 定義

RunnableBranch主要用于多分支子鏈的場(chǎng)景,為鏈的調(diào)用提供了路由功能,這個(gè)有點(diǎn)類似于LangChain的路由鏈。我們可以創(chuàng)建多個(gè)子鏈,然后根據(jù)條件選擇執(zhí)行某一個(gè)子鏈。

② 應(yīng)用場(chǎng)景

比如,有多個(gè)回答問(wèn)題的鏈,先根據(jù)問(wèn)題找到分類,然后在使用具體的鏈回答問(wèn)題。

model = ChatOpenAI(model="gpt-3.5-turbo")
output_parser = StrOutputParser()

# 準(zhǔn)備2條目的鏈:一條物理鏈,一條數(shù)學(xué)鏈
# 1. 物理鏈
physics_template = """
你是一位物理學(xué)家,擅長(zhǎng)回答物理相關(guān)的問(wèn)題,當(dāng)你不知道問(wèn)題的答案時(shí),你就回答不知道。
具體問(wèn)題如下:
{input}
"""
physics_chain = PromptTemplate.from_template(physics_template) | model | output_parser

# 2. 數(shù)學(xué)鏈
math_template = """
你是一個(gè)數(shù)學(xué)家,擅長(zhǎng)回答數(shù)學(xué)相關(guān)的問(wèn)題,當(dāng)你不知道問(wèn)題的答案時(shí),你就回答不知道。
具體問(wèn)題如下:
{input}
"""
math_chain = PromptTemplate.from_template(math_template) | model | output_parser

# 4. 其他鏈
other_template = """
你是一個(gè)AI助手,你會(huì)回答一下問(wèn)題。
具體問(wèn)題如下:
{input}
"""
other_chain = PromptTemplate.from_template(other_template) | model | output_parser


classify_prompt_template = """
請(qǐng)你對(duì)以下問(wèn)題進(jìn)行分類,將問(wèn)題分類為"數(shù)學(xué)"、"物理"、"其它",不需要返回多個(gè)分類,返回一個(gè)即可。
具體問(wèn)題如下:
{input}

分類結(jié)果:
"""
classify_chain = PromptTemplate.from_template(classify_prompt_template) | model | output_parser

answer_chain = RunnableBranch(
    (lambda x: "數(shù)學(xué)" in x["topic"], math_chain),
    (lambda x: "物理" in x["topic"], physics_chain),
    other_chain
)

final_chain =  {"topic": classify_chain, "input": itemgetter("input")} | RunnableLambda(print_info) | answer_chain
# final_chain.invoke({"input":"地球的半徑是多少?"})
final_chain.invoke({"input":"對(duì)y=x求導(dǎo)的結(jié)果是多少?"})

4.RunnableLambda

① 定義

要說(shuō)牛批還得是RunnableLambda,它可以將Python 函數(shù)轉(zhuǎn)換為 Runnable對(duì)象。這種轉(zhuǎn)換使得任何函數(shù)都可以被看作 LCEL 鏈的一部分,我們把自己需要的功能通過(guò)自定義函數(shù) + RunnableLambda的方式包裝一下,集成到 LCEL 鏈中,這樣算是可以跟任何外部系統(tǒng)打通了。

② 應(yīng)用場(chǎng)景

比如,在執(zhí)行過(guò)程中,想在中間插入一段自定義功能(如 打印日志 等),可以通過(guò)自定義函數(shù) + RunnableLambda的方式實(shí)現(xiàn)。

def print_info(info: str):
    print(f"info: {info}")
    return info

prompt_tpl_1 = ChatPromptTemplate.from_messages(
    [
        ("system", "{parser_instructions}"),
        ("human", "列出{cityName}的{viewPointNum}個(gè)著名景點(diǎn)。"),
    ]
)

output_parser = CommaSeparatedListOutputParser()
parser_instructions = output_parser.get_format_instructions()

model = ChatOpenAI(model="gpt-3.5-turbo")

chain_1 = prompt_tpl_1 | model | RunnableLambda(print_info) | output_parser


response = chain_1.invoke(
    {"cityName": "南京", "viewPointNum": 3, "parser_instructions": parser_instructions}
)

三、總結(jié)

本篇主要聊了LangChain的LCEL表達(dá)式,以及LangChain鏈的原理,以及常用的幾個(gè)Runnable的定義和應(yīng)用場(chǎng)景,希望對(duì)你有幫助。

責(zé)任編輯:趙寧寧 來(lái)源: 程序員半支煙
相關(guān)推薦

2018-10-20 16:05:12

iOSAPP開發(fā)

2019-08-28 08:57:05

2021-10-10 20:36:49

Android Root權(quán)限

2018-08-10 05:06:03

提速降費(fèi)營(yíng)運(yùn)商漫游

2023-06-16 14:10:00

TCPUDP網(wǎng)絡(luò)通信

2022-05-06 09:21:21

TypeScriptinterfacetype

2024-04-07 08:23:01

JS隔離JavaScript

2011-06-14 12:56:55

SQL Server復(fù)災(zāi)

2024-12-19 08:00:00

人工智能LLMLangChain

2022-04-07 08:20:22

typeinterface前端

2022-06-07 08:14:35

PGPAGETUPLE

2022-11-28 07:10:57

2024-03-05 18:19:07

localhostLinux數(shù)據(jù)庫(kù)

2022-06-06 07:58:52

勒索軟件惡意軟件解密

2022-01-06 07:59:32

WebGPUOpenGL引擎

2022-03-08 15:01:48

負(fù)載均衡IP服務(wù)器

2023-10-27 07:39:44

IOC容器Spring

2023-12-26 08:12:14

LCEL語(yǔ)法異步

2024-08-12 12:30:27

2020-10-25 08:45:38

IPv6網(wǎng)絡(luò)協(xié)議網(wǎng)絡(luò)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国内av免费观看| 亚洲精品久久区二区三区蜜桃臀| 国产一级在线免费观看| 久久九九热re6这里有精品| 亚洲高清免费在线| 国产一区二区中文字幕免费看| 日韩精品人妻中文字幕| 国产精品手机在线播放| 欧美久久久久中文字幕| 欧美一级中文字幕| 蝌蚪视频在线播放| 精一区二区三区| 久久久亚洲福利精品午夜| 六十路息与子猛烈交尾| 九九九精品视频| 亚洲综合自拍偷拍| 日韩中文一区| 亚洲AV无码一区二区三区少妇 | 国精产品视频一二二区| 深夜激情久久| 在线看一区二区| 337p亚洲精品色噜噜狠狠p| 日本福利片高清在线观看| 狠狠色丁香久久婷婷综合丁香| 韩日欧美一区二区| 精品在线观看一区| 亚洲av无码国产综合专区| 亚洲精品一二| 久久九九热免费视频| 国产中文字幕一区二区| 不卡一区视频| 天天爽夜夜爽夜夜爽精品视频| 亚洲高清不卡一区| 欧美新色视频| 成人黄色大片在线观看 | 久久久久久久极品| 日韩精品一区二区三区免费观看| 日韩一区国产二区欧美三区| 1024精品视频| 日韩激情美女| **性色生活片久久毛片| 久热国产精品视频一区二区三区| 国产老妇伦国产熟女老妇视频| 久久久人人人| 午夜精品免费视频| 免费一级片视频| 99精品在线| 中文字幕日本精品| 免费污网站在线观看| 欧美巨大xxxx| 亚洲精品在线一区二区| 无码人妻少妇色欲av一区二区| 成人黄色免费观看| 欧美羞羞免费网站| 好男人www社区| 美女18一级毛片一品久道久久综合| 亚洲国产aⅴ成人精品无吗| 国产传媒久久久| av网址在线播放| 亚洲免费在线电影| 超薄肉色丝袜足j调教99| 国产网站在线免费观看| 中文字幕佐山爱一区二区免费| 亚洲人成网站在线观看播放| av电影在线观看| 欧美国产精品一区二区三区| 色大师av一区二区三区| 亚洲 欧美 自拍偷拍| 99视频精品在线| 久久久久久九九九九| 青青草av免费在线观看| 国产天堂亚洲国产碰碰| 亚洲欧美日韩精品综合在线观看| 亚洲欧美视频一区二区| 1024亚洲合集| www.日本在线视频| 国产社区精品视频| 色婷婷亚洲综合| 亚洲第一中文av| 精品国产亚洲一区二区三区| 日韩欧美亚洲国产精品字幕久久久 | 国产第一亚洲| 欧美另类videos死尸| 手机看片国产精品| 欧美人体视频| 在线观看久久久久久| 久久噜噜色综合一区二区| 影视一区二区| 91豆花精品一区| 天堂av免费在线观看| 精品一区二区在线观看| 国产精品成人观看视频免费| 深夜福利在线观看直播| 久久一区二区三区四区| 亚洲一区二区三区午夜| 国产美女一区视频| 欧美在线免费观看亚洲| 成人在线短视频| 色婷婷av一区二区三区丝袜美腿 | wwwav在线| 精品国产乱码久久久久久婷婷| 午夜dv内射一区二区| 久久丁香四色| 国产亚洲欧洲黄色| 激情五月婷婷在线| 日韩av中文在线观看| 5g影院天天爽成人免费下载| 日本人妖在线| 18成人在线观看| 中文字幕乱码人妻综合二区三区| 色8久久久久| 日韩av在线网址| 久久久久久久麻豆| 天堂va蜜桃一区二区三区漫画版| 成人网在线免费观看| 亚洲色图21p| 一区二区视频免费在线观看| 国产免费视频传媒| 黄色免费大全亚洲| 欧美xxxx18国产| 亚洲精品国产欧美在线观看| 成人高清视频在线观看| 一区二区三区四区欧美| xxxxx性欧美特大| 欧美一级专区免费大片| 我和岳m愉情xxxⅹ视频| 激情六月综合| 3d动漫啪啪精品一区二区免费 | 日韩视频亚洲视频| 7799精品视频天天看| 成人综合婷婷国产精品久久蜜臀 | 国产精品久久久久久亚洲调教| 黄色片一区二区三区| 日韩毛片在线免费观看| 男女爽爽爽视频| 色婷婷久久久| 久久久久久这里只有精品| 国产三级自拍视频| 中文久久乱码一区二区| 中国丰满人妻videoshd| 老司机精品在线| 欧美激情a∨在线视频播放| 国产一区二区三区中文字幕| 欧美国产日韩精品免费观看| 国产日韩一区二区在线| 欧美交a欧美精品喷水| 午夜精品在线视频| 免费看黄色一级视频| 亚洲精品美国一| 红桃视频一区二区三区免费| 98精品视频| 国产一区二区香蕉| 欧美日韩视频在线播放| 欧美精品 国产精品| 日本黄区免费视频观看| 理论片日本一区| 亚洲精美视频| 免费成人高清在线视频| www.xxxx精品| 精品黑人一区二区三区在线观看 | 99精品久久久久| 国产成人综合在线| 996这里只有精品| 亚洲国产精品免费视频| 色综合久久久888| 高清乱码毛片入口| 欧美日韩国产一区中文午夜| 亚洲专区区免费| 日本va欧美va欧美va精品| 亚洲精品成人自拍| 三级欧美日韩| 97香蕉久久夜色精品国产| 视频一区二区在线播放| 91国产精品成人| 黄色一级片一级片| 国产精品一区二区在线播放| 全黄性性激高免费视频| 亚洲婷婷影院| 国产综合视频在线观看| 日本天码aⅴ片在线电影网站| 亚洲国产精久久久久久| 欧美精品一二三四区| 国产精品美女一区二区| 亚洲三级在线视频| 免费精品视频| 亚洲一区在线免费| 成人黄色av网址| 情事1991在线| 久久精品视频免费看| 精品国产伦一区二区三区观看体验| 国产女同在线观看| 中文成人综合网| 女同性αv亚洲女同志| 亚洲欧美不卡| 青少年xxxxx性开放hg| 国产精品zjzjzj在线观看| 日本高清不卡在线| 黄视频网站在线看| 日韩精品视频免费在线观看| 中文人妻熟女乱又乱精品| 一区二区三区欧美视频| 好吊视频在线观看| 国产成人精品影视| www.日本xxxx| 亚洲第一在线| 永久免费精品视频网站| 欧美性生活一级片| 成人激情免费在线| 最新中文字幕在线播放| 欧美成人免费播放| 国产高清免费在线播放| 亚洲精品在线免费观看视频| 这里只有精品免费视频| 亚洲午夜一区二区| 欧美做爰爽爽爽爽爽爽| 久久久国产精品午夜一区ai换脸| av地址在线观看| 青青草国产精品97视觉盛宴| 成年人午夜免费视频| 在线精品国产| 亚洲欧美精品在线观看| 天美av一区二区三区久久| 91精品免费| 久久xxx视频| 91av在线播放视频| 国模私拍视频在线播放| 久久五月天综合| 福利片在线观看| 日韩精品久久久久久福利| www夜片内射视频日韩精品成人| 欧美午夜精品久久久久久孕妇| 国产精品6666| 一区二区高清视频在线观看| www.99re6| 中日韩免费视频中文字幕| 51妺嘿嘿午夜福利| 久久久精品国产99久久精品芒果 | 91午夜视频在线观看| 亚洲制服丝袜在线| 国产精品99久久久久久成人| 日本一区二区免费在线观看视频 | 在线亚洲欧美日韩| 一本色道a无线码一区v| 久久久精品免费看| 午夜影院在线观看欧美| 亚洲一区 视频| 亚洲成人一区在线| 日本中文字幕免费| 午夜久久久久久电影| 国产真实乱偷精品视频| 亚洲一区二区在线免费观看视频 | 婷婷成人综合网| 日韩高清免费av| 色综合婷婷久久| av片免费观看| 在线观看av一区二区| 超碰在线免费97| 欧美日精品一区视频| 91激情在线观看| 日韩一级黄色大片| 亚洲美女福利视频| 日韩电影中文 亚洲精品乱码| 国产综合在线播放| 亚洲精品成人av| 日韩精品视频无播放器在线看 | 日韩欧美精品中文字幕| 日韩精品久久久久久免费| 日韩欧美大尺度| 毛片在线免费播放| 欧美喷水一区二区| 性一交一乱一伧老太| 亚洲国产美女久久久久| 青青九九免费视频在线| 中文字幕日韩精品在线观看| 九色porny在线| 久久久久国产一区二区三区| 97在线超碰| 国产成人午夜视频网址| 日韩深夜福利网站| 国产精品二区在线| 亚州综合一区| 亚洲国内在线| 影音先锋亚洲精品| 亚洲免费av一区二区三区| 国产在线一区二区| 最新版天堂资源在线| 国产亚洲综合性久久久影院| www.av免费| 午夜一区二区三区在线观看| 人人妻人人爽人人澡人人精品| 欧美妇女性影城| 婷婷五月综合久久中文字幕| 一区二区三欧美| 制服丝袜在线播放| 欧美最猛性xxxxx亚洲精品| 日韩国产大片| 国模一区二区三区私拍视频| 日韩精品首页| 欧洲精品一区二区三区久久| 蜜臀a∨国产成人精品| 中文字幕18页| 国产精品女上位| 国产成人在线播放视频| 欧美日本在线观看| 色wwwwww| 久久综合伊人77777蜜臀| 亚洲十八**毛片| 91免费在线观看网站| 欧洲福利电影| 草草久久久无码国产专区| 激情欧美一区二区| 欧美 日韩 成人| 亚洲国产日韩av| 99热精品在线播放| 在线观看精品国产视频| 中国色在线日|韩| av成人在线电影| 色爱综合网欧美| 久久久久久久久久久视频| 国产成人综合亚洲91猫咪| 国产精品久久免费观看| 欧美日韩激情视频8区| 国产福利免费视频| 日韩在线免费观看视频| 中文字幕这里只有精品| 国产亚洲一区在线播放| 欧美~级网站不卡| 91女神在线观看| 国产网站一区二区| 在线观看日韩中文字幕| 精品日韩在线一区| dy888亚洲精品一区二区三区| 国产精品久久久久福利| 沈樵精品国产成av片| 免费在线观看亚洲视频| 成人中文字幕在线| 精国产品一区二区三区a片| 69堂成人精品免费视频| 永久免费av在线| 国产欧美在线看| 日韩在线观看| www欧美激情| 亚洲国产精品黑人久久久| 无码人妻av免费一区二区三区| 日韩av在线看| 丁香六月综合| 欧美婷婷久久| 久久精品伊人| 久操视频在线观看免费| 在线一区二区视频| 国产高清自拍视频在线观看| 国产精品高清在线观看| 成人系列视频| 自拍偷拍一区二区三区四区| 中文字幕国产一区| 亚洲影视一区二区| 北条麻妃一区二区三区中文字幕| 青青在线精品| 天天做天天爱天天高潮| 国产精品综合二区| 久久久久亚洲av成人片| 亚洲国产精品电影| 欧美电影网址| 亚洲国产欧美日韩| 国产一区二区不卡| 久久精品国产亚洲AV无码麻豆| 亚洲第一精品自拍| 欧美片第1页| 亚洲精品中文字幕在线| 国精产品一区一区三区mba视频 | 日韩美女一级视频| 国产精品扒开腿做爽爽爽的视频| 成人精品视频| 国产毛片久久久久久| 亚洲福利视频一区| 日本一卡二卡四卡精品| 国产精品十八以下禁看| 亚洲澳门在线| av在线播放网址| 日本精品一区二区三区高清| 欧美r级在线| 国产精品一区免费观看| 三级不卡在线观看| 国产色无码精品视频国产| 亚洲国产小视频在线观看| 春暖花开亚洲一区二区三区| 亚洲综合激情五月| 99久久99久久精品免费观看| 免费精品一区二区| 欧美情侣性视频| 免费精品国产| 91网址在线观看精品| 精品久久久久久中文字幕大豆网| 成人欧美一区| 超碰97人人人人人蜜桃| 久久精品人人| 久久机热这里只有精品| 亚洲午夜小视频| 国产精品欧美大片| www.com黄色片|