學(xué)習(xí)ChatGpt(八)- Langchain之Agent

什么是代理(Agent)秩铆?

在編程中竖席,代理的核心思想是使用一個(gè)大型語言模型(LLM)來選擇執(zhí)行的一系列動作。在傳統(tǒng)的鏈?zhǔn)骄幊蹋╟hains)中油昂,這些動作通常被硬編碼在代碼中革娄。而在代理模式中,一個(gè)語言模型被用作推理引擎冕碟,來確定要采取哪些動作以及以何種順序執(zhí)行拦惋。

代理的關(guān)鍵概念:

  • AgentAction(代理動作): 這是一個(gè)數(shù)據(jù)類,代表了代理應(yīng)該執(zhí)行的動作安寺。它包含一個(gè)tool屬性厕妖,表示應(yīng)該調(diào)用的工具的名稱,以及一個(gè)tool_input屬性挑庶,表示該工具的輸入言秸。

  • AgentFinish(代理完成): 這是一個(gè)數(shù)據(jù)類,表示代理已經(jīng)完成任務(wù)迎捺,應(yīng)該將結(jié)果返回給用戶举畸。它具有一個(gè)return_values參數(shù),是一個(gè)要返回的字典凳枝。通常抄沮,它只包含一個(gè)鍵 - output - 代表一個(gè)字符串,因此通常只返回這個(gè)鍵。

  • Intermediate Steps(中間步驟): 這些代表了先前代理動作和相應(yīng)的輸出叛买,它們會被傳遞下去砂代。這對于將來的迭代非常重要,因?yàn)榇硇枰浪呀?jīng)完成了哪些任務(wù)率挣。這個(gè)類型被定義為List[Tuple[AgentAction, Any]]刻伊。需要注意,observation目前被定義為Any類型难礼,以確保最大的靈活性娃圆。實(shí)際上,它通常是一個(gè)字符串蛾茉。

在Langchain中讼呢,代理可以根據(jù)需求進(jìn)行自定義,也可以使用官方提供的代理谦炬。下面是一個(gè)示例代碼悦屏,演示了如何使用Langchain的代理功能:

# 導(dǎo)入必要的模塊和工具
from langchain.agents import initialize_agent, Tool
from langchain.agents import load_tools
from langchain.llms import OpenAI
from langchain.agents import AgentType
from langchain import hub
from langchain.tools.render import render_text_description

# 初始化配置
import os
import config
config.init(os)

# 定義查詢
query = "對比下InternLM-123B和gpt4"

# 初始化LLM模型和工具
llm = OpenAI(temperature=0, verbose=True)
tools = load_tools(["serpapi", "llm-math"], llm=llm)
llm_with_stop = llm.bind(stop=["\nObservation"])
prompt = hub.pull("hwchase17/react")
prompt = prompt.partial(
    tools=render_text_description(tools),
    tool_names=", ".join([t.name for t in tools]),
)

# 定義代理
agent = {
    "input": lambda x: x["input"],
    "agent_scratchpad": lambda x: format_log_to_str(x['intermediate_steps'])
} | prompt | llm_with_stop | ReActSingleInputOutputParser()

# 初始化代理執(zhí)行器
agent_executor = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

# 執(zhí)行查詢
agent_executor.invoke({"input": query})

以上代碼演示了如何使用Langchain的代理功能,通過LLM的代理增加了數(shù)學(xué)運(yùn)算和搜索兩種能力键思。這個(gè)例子展示了Langchain代理的靈活性和強(qiáng)大功能础爬。

但是你如果稍微深入點(diǎn)研究會發(fā)現(xiàn)agent的Tool只能傳入2個(gè),超過了就會崩潰吼鳞。
而且還有其他問題看蚜,我嘗試問了他100以內(nèi)的素?cái)?shù),它居然報(bào)錯(cuò)了

ValueError: unknown format from LLM: This cannot be solved using the numexpr library.

我把同樣的問題給了gpt3.5他就給出了結(jié)果赔桌,原因是因?yàn)閘lm-math這個(gè)Tool接管這個(gè)邏輯分支供炎,名字叫l(wèi)lm-math怎么敢啊疾党?

然后我把這個(gè)Tool刪除之后它就運(yùn)行正常了音诫。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雪位,隨后出現(xiàn)的幾起案子竭钝,更是在濱河造成了極大的恐慌,老刑警劉巖雹洗,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件香罐,死亡現(xiàn)場離奇詭異,居然都是意外死亡队伟,警方通過查閱死者的電腦和手機(jī)穴吹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嗜侮,“玉大人港令,你說我怎么就攤上這事啥容。” “怎么了顷霹?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵咪惠,是天一觀的道長。 經(jīng)常有香客問我淋淀,道長遥昧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任朵纷,我火速辦了婚禮炭臭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘袍辞。我一直安慰自己鞋仍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布搅吁。 她就那樣靜靜地躺著威创,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谎懦。 梳的紋絲不亂的頭發(fā)上肚豺,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機(jī)與錄音界拦,去河邊找鬼吸申。 笑死,一個(gè)胖子當(dāng)著我的面吹牛享甸,可吹牛的內(nèi)容都是我干的呛谜。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼枪萄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了猫妙?” 一聲冷哼從身側(cè)響起瓷翻,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎割坠,沒想到半個(gè)月后齐帚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡彼哼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年对妄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片敢朱。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡剪菱,死狀恐怖摩瞎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情孝常,我是刑警寧澤旗们,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站构灸,受9級特大地震影響上渴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜喜颁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一稠氮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧半开,春花似錦隔披、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至漓库,卻和暖如春恃慧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背渺蒿。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工痢士, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人茂装。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓怠蹂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親少态。 傳聞我的和親對象是個(gè)殘疾皇子城侧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容