偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

關(guān)于langgraph中的數(shù)據(jù)傳遞——使用State和config傳遞數(shù)據(jù) 原創(chuàng)

發(fā)布于 2025-10-9 06:52
瀏覽
0收藏

“ 數(shù)據(jù)通訊是系統(tǒng)開發(fā)中的重要環(huán)節(jié),而Langgraph有其特有的設(shè)計哲學(xué)?!?/strong>

在項目開發(fā)中,數(shù)據(jù)傳遞一直是一個很重要的環(huán)節(jié),畢竟任何系統(tǒng)的開發(fā)邏輯最終的目的都是實現(xiàn)數(shù)據(jù)的有效操作,包括查詢,修改,新增等。

而在大模型應(yīng)用場景中,數(shù)據(jù)的傳遞又是什么樣的呢?怎么解決?

langgraph中的數(shù)據(jù)傳遞

在Langgraph中State是貫穿整個生命周期的數(shù)據(jù)結(jié)構(gòu),其作用就是用來保存智能體執(zhí)行過程中的數(shù)據(jù);因此,在Langgraph中的幾個重要組件中都會使用到State中的數(shù)據(jù),除了邊之外。

在Langgraph的節(jié)點中,可以接收一個State參數(shù),其中保存有用戶的輸入,模型執(zhí)行的結(jié)果,工具調(diào)用的結(jié)構(gòu)等等多種數(shù)據(jù)。然后在節(jié)點中就可以通過state獲取執(zhí)行過程中的數(shù)據(jù)進行下一步處理。

關(guān)于langgraph中的數(shù)據(jù)傳遞——使用State和config傳遞數(shù)據(jù)-AI.x社區(qū)

然后節(jié)點執(zhí)行完成之后,把執(zhí)行結(jié)果再次保存到State中,之后傳遞到下一個節(jié)點。

關(guān)于langgraph中的數(shù)據(jù)傳遞——使用State和config傳遞數(shù)據(jù)-AI.x社區(qū)

當(dāng)然,在節(jié)點中操作State是一個很正常的操作,那怎么在工具中獲取到這些參數(shù)呢?

這里的工具指的不是工具節(jié)點,因為工具節(jié)點的本質(zhì)還是節(jié)點,因此可以正常對State進行操作;但在@tool注解實現(xiàn)的具體工具方法里,能獲取到Sta te中的參數(shù)嗎?

舉例來說,你的業(yè)務(wù)場景中需要在上一個節(jié)點先對請求參數(shù)進行處理,然后再工具節(jié)點中使用這個參數(shù);那么怎么把上一個節(jié)點中的數(shù)據(jù)傳入到具體的工具中?

這個就要用到Langgraph提供的,InjectedState參數(shù),可以在具體的工具中通過InjectedState獲取參數(shù)。

params: Annotated[list, InjectedState("params")

關(guān)于langgraph中的數(shù)據(jù)傳遞——使用State和config傳遞數(shù)據(jù)-AI.x社區(qū)

解決了節(jié)點和工具中的通訊問題,那么再把我們指定的值傳入到智能體中呢?畢竟類似于user_id等參數(shù)我們希望的是能夠根據(jù)不同的用戶進行區(qū)分,而不是由模型來生成用戶參數(shù);所以,面對這種參數(shù),怎么進行通訊?

在Langgraph中也提供了固定參數(shù)的傳參,使用的是RunnableConfig,在調(diào)用智能體時,只需要傳入config參數(shù),即可在智能體中的任何地方獲取此參數(shù)。

如下所示:

關(guān)于langgraph中的數(shù)據(jù)傳遞——使用State和config傳遞數(shù)據(jù)-AI.x社區(qū)

如下,在節(jié)點中通過config: RunnableConfig即可獲取到用戶傳入的數(shù)據(jù)。

關(guān)于langgraph中的數(shù)據(jù)傳遞——使用State和config傳遞數(shù)據(jù)-AI.x社區(qū)

有了這些數(shù)據(jù)通訊之后,就可以根據(jù)不同的執(zhí)行結(jié)果進行相應(yīng)的處理。

但在Langgraph中使用State進行數(shù)據(jù)通訊還一個需要注意的點是,State有多種處理方式,比如說追加,覆蓋等;這些不同的處理方式會獲得不一樣的結(jié)果。

如在messages中一般情況下會使用追加的方式,也就是把每個節(jié)點的執(zhí)行結(jié)果追加到messages列表中,這樣就可以保存整個智能體的整個生命周期的執(zhí)行過程。

當(dāng)然,可能存在一些公共參數(shù),不同的節(jié)點執(zhí)行過后需要覆蓋掉之前的值,而這個就可以使用覆蓋的方式進行處理;而在Langgraph中負責(zé)處理這部分功能的是Reducers函數(shù)。

Reducers 是理解節(jié)點更新如何應(yīng)用于 ???State??? 的關(guān)鍵。???State??? 中的每個鍵都有其自己的獨立 reducer 函數(shù)。如果未明確指定 reducer 函數(shù),則假定對該鍵的所有更新都應(yīng)覆蓋它。


本文轉(zhuǎn)載自???AI探索時代??? 作者:DFires

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任
收藏
回復(fù)
舉報
回復(fù)
相關(guān)推薦