自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

智能體開發(fā)框架Langgraph基礎(chǔ)流程和理論梳理 原創(chuàng)

發(fā)布于 2025-5-19 09:35
瀏覽
0收藏

“ 智能體應(yīng)該才是大模型應(yīng)用的未來,它才是有可能實(shí)現(xiàn)真正人工智能的途徑 ”

在大模型技術(shù)的應(yīng)用過程中,智能體算是一個(gè)主要的技術(shù)方向;如果說把大模型比作人的大腦,那么智能體就是人的手和腳;大腦能夠思考,但具體的事情還是需要手和腳才能做。

而Langgraph就是給大模型安裝手和腳的工具;而我們學(xué)習(xí)Langgraph主要就是基于它強(qiáng)大的功能邏輯。在傳統(tǒng)的人工智能應(yīng)用開發(fā)中,包括Langchain框架,都是基于鏈?zhǔn)秸{(diào)用的方式,簡單來說就是線性執(zhí)行;一旦其中某個(gè)環(huán)節(jié)出現(xiàn)問題,那么整個(gè)鏈條就會陷入癱瘓。

但基于Langgraph開發(fā)的工作流卻不同,它可以根據(jù)不同的場景和路徑進(jìn)行判斷,可以實(shí)現(xiàn)循環(huán)調(diào)用和條件判斷;而這就為大模型應(yīng)用的開發(fā)提供了很強(qiáng)的靈活性,也更能滿足我們的現(xiàn)實(shí)需求。

Langgraph的原來和執(zhí)行過程

先來了解一下傳統(tǒng)智能體開發(fā)過程中所面臨的問題,在傳統(tǒng)的智能體開發(fā)過程中主要使用Function call配合langchain或其它工作流開發(fā)框架;比如典型的Dify框架和字節(jié)的Coze就是典型的智能體配合工作流進(jìn)行開發(fā)。

但這種方式有一個(gè)很明顯的問題,就是整體都是通過鏈?zhǔn)秸{(diào)用來實(shí)現(xiàn)的;雖然集成了工作流但其延展性依然不是很好。

原因就在于鏈?zhǔn)秸{(diào)用存在一個(gè)很大的缺點(diǎn)就是,一旦處于鏈條中的某個(gè)節(jié)點(diǎn)出現(xiàn)問題,就會導(dǎo)致整個(gè)鏈條不可用;而且在異常處理中,由于節(jié)點(diǎn)執(zhí)行的過程和結(jié)果并未保存,就導(dǎo)致無法重新恢復(fù)鏈?zhǔn)降膱?zhí)行過程。

但使用LangGraph就會很好的解決這個(gè)問題,因?yàn)長angGraph中使用的是狀態(tài)圖來保存節(jié)點(diǎn)執(zhí)行的過程,當(dāng)某個(gè)環(huán)節(jié)出現(xiàn)問題或者需要回溯整個(gè)執(zhí)行過程時(shí),就可以使用狀態(tài)圖來隨時(shí)回到某個(gè)節(jié)點(diǎn)重新執(zhí)行。

智能體開發(fā)框架Langgraph基礎(chǔ)流程和理論梳理-AI.x社區(qū)

而這種方式在Langgraph中被稱為時(shí)間旅行,也就是說可以追溯到整個(gè)智能體的執(zhí)行過程和節(jié)點(diǎn)狀態(tài)。

我們應(yīng)該知道,智能體是為了解決復(fù)雜問題而出現(xiàn)的一項(xiàng)技術(shù);里面涉及到大量的推理和決策過程,其就類似于我們?nèi)祟愒谟龅綇?fù)雜問題時(shí),需要對問題進(jìn)行拆解和規(guī)劃,然后一步一步的去完成任務(wù)。

但在處理問題的過程中,我們肯定會遇到各種各樣的問題,以及會犯各種各樣的錯誤;這時(shí)問題處理過程中的記錄就變得特別重要,因?yàn)檫@樣才能復(fù)盤整個(gè)過程,以及找到問題發(fā)生的原因和節(jié)點(diǎn)。

智能體開發(fā)框架Langgraph基礎(chǔ)流程和理論梳理-AI.x社區(qū)

而且,在事情處理的過程中,可能還需要其它決策者參與進(jìn)來;比如說公司的項(xiàng)目運(yùn)作,可能需要領(lǐng)導(dǎo)的審批或簽字,亦或者需要其它人員中途參與。

所以,Langgraph實(shí)現(xiàn)了人工參與的功能,叫做人在回路;所謂的人在回路,就是Langgrap在智能體的執(zhí)行過程中,隨時(shí)可以進(jìn)行中斷;然后由人參與進(jìn)來,之后再繼續(xù)執(zhí)行。

而這些場景的實(shí)現(xiàn),更真實(shí)的接近我們?nèi)祟惉F(xiàn)實(shí)社會中解決問題的邏輯;而這也是Langgraph強(qiáng)大的原因。

Langgraph的核心理論和模塊

Langgraph主要由以下幾個(gè)節(jié)點(diǎn)組成:

  • 狀態(tài)圖
  • 節(jié)點(diǎn)
  • 檢查點(diǎn)

狀態(tài)圖

狀態(tài)圖是一種數(shù)據(jù)結(jié)構(gòu),其生命周期存在于整個(gè)Langgraph過程中,所有節(jié)點(diǎn)的執(zhí)行過程和結(jié)構(gòu)都可以被記錄到狀態(tài)圖中;而且每個(gè)節(jié)點(diǎn)也都可以隨時(shí)方法狀態(tài)圖中的數(shù)據(jù),來獲取其當(dāng)時(shí)的執(zhí)行過程和結(jié)果,狀態(tài)圖是Langgraph實(shí)現(xiàn)上述功能的核心。

# 狀態(tài)圖
from typing import Annotated
from typing_extensions import TypedDict
from langgraph.graph import StateGraph, START, END
from langgraph.graph.message import add_messages
class State(TypedDict):
    # Messages have the type "list". The `add_messages` function
    # in the annotation defines how this state key should be updated
    # (in this case, it appends messages to the list, rather than overwriting them)
    messages: Annotated[list, add_messages]
graph_builder = StateGraph(State)

節(jié)點(diǎn)

節(jié)點(diǎn)就比較容易理解了,節(jié)點(diǎn)的概念就是一個(gè)一個(gè)的智能體或功能函數(shù);其主要作用就是用來執(zhí)行具體的任務(wù),比如說查詢天氣就調(diào)用天氣查詢接口。

如果說節(jié)點(diǎn)是一個(gè)函數(shù),那么邊就相當(dāng)于判斷邏輯中的分支,邊決定了當(dāng)前節(jié)點(diǎn)執(zhí)行完畢之后,下一個(gè)執(zhí)行的節(jié)點(diǎn);當(dāng)然,還有一種邊叫做條件邊,意思就是可以根據(jù)條件判斷來動態(tài)決定應(yīng)該執(zhí)行哪個(gè)節(jié)點(diǎn)。

檢查點(diǎn)

檢查點(diǎn)說白了就是記憶存儲的節(jié)點(diǎn),我們都知道大模型沒有記憶的功能,因此其每次執(zhí)行對話等對大模型都是一次新的開始,因此就需要有一個(gè)外部記憶功能來保存當(dāng)前任務(wù)的執(zhí)行記錄,也就是記憶;這樣大模型就可以知道之前干了什么事,以及整個(gè)事情的執(zhí)行過程。

而檢查點(diǎn)就是做這個(gè)事情的,它的主要作用就是保存記憶;而它和狀態(tài)圖的區(qū)別是,狀態(tài)圖會隨著整個(gè)工作流的執(zhí)行在不同的節(jié)點(diǎn)進(jìn)行流轉(zhuǎn);而檢查點(diǎn)只記憶當(dāng)前節(jié)點(diǎn)的歷史記錄;當(dāng)然,不同的節(jié)點(diǎn)可以有各自的檢查點(diǎn)。



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


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