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

關(guān)于Langgraph開發(fā)框架工具綁定和工具節(jié)點的說明 原創(chuàng)

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

“ 如果說大模型是智能體的大腦,那么工具就是大模型的手和腳。”

在Langgraph智能體開發(fā)框架中有幾個核心概念,分別是狀態(tài)圖,節(jié)點和邊;但在此之外還有其它的一些概念如工具,工具在智能體開發(fā)中的重要性就不言而喻了。

雖然這些概念說起來很簡單,但在實際操作過程中卻面臨著各種各樣的問題。

今天我們就主要介紹一下關(guān)于Langgraph中的工具的使用和注意事項。

Langgraph中的工具

工具是智能體開發(fā)過程中的核心,雖然大模型也很重要,但如果沒有好的工具以及工具管理方式;在強大的大模型也是巧婦難為無米之炊,英雄無用武之地。

工具在智能體開發(fā)過程中主要扮演著大模型的手和腳的作用;而在Langgraph中工具是怎么管理的呢?

在前面的文章中介紹過,狀態(tài)圖是Langgraph中數(shù)據(jù)流轉(zhuǎn)的載體,任何節(jié)點的操作結(jié)果都將被保存在狀態(tài)圖中;而邊表示著節(jié)點之間的流轉(zhuǎn)關(guān)系,某個節(jié)點執(zhí)行完成之后就會順著邊流轉(zhuǎn)到下一個節(jié)點或多個節(jié)點中。

關(guān)于Langgraph開發(fā)框架工具綁定和工具節(jié)點的說明-AI.x社區(qū)

如上圖所示,就是一個簡單的Langgraph流程圖,圖中存在start和end兩個必須節(jié)點;以及chatbot機器人節(jié)點和tools工具節(jié)點。

@tool
def human_assistance(query: str) -> str:
    """Request assistance from a human."""
    human_response = interrupt({"query": query})
    return human_response["data"]


tool = TavilySearch(max_results=2)
tools = [tool, human_assistance]


llm = init_chat_model("anthropic:claude-3-5-sonnet-latest")
# 模型綁定節(jié)點
llm_with_tools = llm.bind_tools(tools)

如官網(wǎng)代碼所示,聲明了兩個工具h(yuǎn)uman_assistance和TavilySearch;在最后一行代碼中,需要使用bind_tools對工具列表進行綁定;這個綁定的作用是什么?

剛開始看到這段代碼以為其就類似于智能體開發(fā)過程中,工具函數(shù)的聲明和實現(xiàn),然后大模型就可以根據(jù)這些工具進行功能調(diào)用。

但在后面的代碼中又出現(xiàn)了一個工具節(jié)點ToolNode,看到這里就覺得有點奇怪了,明明前面已經(jīng)把工具綁定到了大模型上,為什么現(xiàn)在在這里還需要一個工具節(jié)點;那么它的作用是什么?

tool_node = ToolNode(tools=tools)
graph_builder.add_node("tools", tool_node)

事實上,在上面bind_tools的方法中,其作用類似于傳統(tǒng)fc開發(fā)中的函數(shù)聲明,即告訴大模型有哪些函數(shù)可以使用;但具體的調(diào)用工具并不是由大模型實現(xiàn)。

這里也是如此,在bind_tools綁定工具列表之后,在ToolNode節(jié)點負(fù)責(zé)工具的調(diào)用。

大模型會根據(jù)綁定的工具列表,然后根據(jù)自己的理解和判斷去選擇合適的工具函數(shù)。

工具的聲明

在Langgraph中,工具函數(shù)聲明使用@tool注解實現(xiàn),其會根據(jù)函數(shù)名稱和參數(shù)自動判斷工具的作用并生成調(diào)用參數(shù);如下代碼所示:

而在函數(shù)的第一行有一個三引號注釋符,其作用就類似于fc中的desc,用來描述函數(shù)的功能。通過這種方式就可以聲明一個工具類。

@tool
def get_weather(location: str):
    """Call to get the current weather."""
    if location.lower() in ["sf", "san francisco"]:
        return "It's 60 degrees and foggy."
    else:
        return "It's 90 degrees and sunny."

當(dāng)然,這只是簡單的工具函數(shù)的使用;如果在Langgraph中的節(jié)點中需要實現(xiàn)多個智能體應(yīng)該怎么辦?其工具應(yīng)該怎么管理,是分開管理還是集中管理?

比如說有的智能體節(jié)點需要調(diào)用地圖和天氣工具用來確定旅行計劃和路線;而有的智能體需要訂票訂酒店,這樣需要多個工具進行協(xié)作的情況下,應(yīng)該怎么處理。


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

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