網站專業(yè)代做哪家好滄州網站seo
探索智能體Agent的未來之路:Function Call與ReACT框架的較量,誰能引領未來?
引言
各大平臺出現智能體應用創(chuàng)建,智能體逐漸落地,背后的使用哪種框架?
隨著各大平臺,例如百度千帆APPbuilder、阿里百煉、字節(jié)的扣子等等,逐漸落地智能體應用,其背后的技術和框架引起了廣泛關注。智能體(Agent),也稱為代理 ,是一種使用大語言模型(LLM)來促進推理過程并根據模型的建議采取行動的實體。盡管大語言模型在自然語言理解和生成方面取得了巨大進步,但仍然也存在一些限制:知識有限并難以實時更新、缺乏審查與安全控制、以及無法直接執(zhí)行語言之外的任務。光使用模型本身現階段還難以直接滿足實際場景的需求,因此,開發(fā)智能體成為了一種應用解決方案。
智能體的基本概念是在沒有人工定義工作流(Workflow)的情況下,利用外部工具或功能,選擇要執(zhí)行的一系列操作。對于 toB 產品,智能體能夠解決功能點繁多、使用鏈路冗長、使用方法復雜難上手等問題。從技術角度來看,智能體通過大模型理解用戶意圖并生成結構化描述,進而執(zhí)行相關操作。因此,智能體在實際應用中扮演著至關重要的角色,成為了連接大模型和現有應用的橋梁。
市場上現在出現了眾多種類的智能體應用,其中大致可以分為兩種主要的方式:以ReACT行動鏈為主的較為復雜的智能體結構,和以Function Calling(函數調用)模型為主的輕量級智能體結構。
一、 兩種框架原理概述:
“吟游詩人分為兩種,一種懂得如何寫詩,另一種懂得根據意境引用別人寫的詩”
1.1. ReACT 大致原理與歷史
在大模型的涌現能力剛被人們發(fā)掘的時候,人們意識到生成式AI的潛力可能不止局限于文本內容的生成,如果讓大模型能夠和外部世界交互,是不是就能獲得更廣泛的信息,甚至對外部環(huán)境造成一定影響?基于這個出發(fā)點,研究者把推理(例如思維鏈提示)和行動(例如 WebGPT、SayCan、ACT-1)進行結合,并提出了ReACT框架,其核心思想是將推理和行動結合起來,形成一個智能、自主的智能體結構,并擁有與外部環(huán)境交互的能力。
ReACT框架的一個關鍵特點是其任務拆解模塊,能夠將復雜的任務拆解成一系列更小、更明確的子任務,這些子任務更容易被模型理解和執(zhí)行,讓模型不再“消化不良”。例如,ReACT可以幫助模型決定進行API調用、執(zhí)行查詢等操作,天氣預報、計算器是大家耳熟能詳的例子。這樣,模型就可以在與外部源交互的過程中收集更多的信息,以更好地完成復雜的任務。
ReACT技術的一個關鍵挑戰(zhàn)是如何在API調用中處理函數參數。為了解決這個問題,通常需要要求模型返回特定格式的響應,以便區(qū)分不同的階段(思考、行動、觀察)。
ReAct框架的應用已經在多種語言和決策任務中得到了驗證,其有效性在問答、事實驗證等任務中得到了展示。在早期的智能體應用嘗試中,LangChain就提供了以ReACT為框架的智能體應用開發(fā)方式。基于ReAct通過與簡單的維基百科API交互,生成類似人類的任務解決軌跡,比沒有推理痕跡的基線更容易解釋。這種方式也成為了業(yè)界對于智能體應用的早期定義:有著較為明確的自然語言規(guī)劃列表,以及一套復雜的工具使用方式。
ReAct框架的成功激發(fā)了更多類似的研究和項目,如XAgent、Autogen等。這些項目都對智能體框架進行了改進和擴展,例如引入內外雙循環(huán)機制、群體智能、反思Reflection等機制。這些變種的特點大多是為ReACT類的智能體結構提供更加穩(wěn)定的規(guī)劃以及工具的調用,但通常也會增加上下文的長度,造成模型推理費用以及時間消耗的提升。
【一一AGI大模型學習 所有資源獲取處一一】
①人工智能/大模型學習路線
②AI產品經理入門指南
③大模型方向必讀書籍PDF版
④超詳細海量大模型實戰(zhàn)項目
⑤LLM大模型系統(tǒng)學習教程
⑥640套-AI大模型報告合集
⑦從0-1入門大模型教程視頻
⑧AGI大模型技術公開課名額
1.2. Function Call 大致原理與歷史
OpenAI于23年6月份的更新的gpt-4-0613 and gpt-3.5-turbo-0613版本中為模型添加了Function Calling功能,通過給模型提供一組預定義的函數(Function list)以及用戶提問(Query),讓大模型自主選擇要調用的函數,并向該函數提供所需的輸入參數。隨后我們就可以在自己的環(huán)境中基于模型生成的參數調用該函數,并將結果返回給大模型。
Function Calling的步驟
ChatGPT的Function Calling功能在發(fā)布之后立刻引起了人們的關注,因其簡單易用的特性以及規(guī)范的輸入輸出迅速成為模型生態(tài)中Function calling的格式規(guī)范。后續(xù)的具有function calling功能的模型有很多參照了OpenAI的Function Calling格式,其輸入的函數列表以及輸出的Function Calling及其參數都以JSON格式輸出:輸入的函數列表中通常包括函數名稱、函數功能描述、函數參數等部分,而輸出中則按順序輸出所調用的函數名稱和其中使用的參數
OpenAI官網輸入的函數列表以及輸出的Function Calling列表樣例
然而Function Calling這種類型的智能體結構對模型有較高的要求,LLM模型必須進行針對性微調,以便根據用戶提示檢測何時需要調用函數,并使用符合函數簽名的JSON進行響應;OpenAI并未開源其Function Calling相關的訓練框架以及訓練集,但大致推測其訓練集中也包含了大量相似的工具調用JSON數據。
在開源社區(qū)中,也出現了眾多開源的Function Calling模型、訓練框架以及數據集。加州伯克利和微軟的研究人員就開源了Gorilla模型以及Open Function系列,是一個完全針對Function Calling的LLaMA微調模型,本身在發(fā)布之時就有調用1,600+個API,準確使用工具的能力,在API使用方面超過了當時的GPT-4。事實上,Gorilla的相關論文和Github在23年5月份公布,比OpenAI GPT在6月份的更新還要更早一些。其訓練集的主要成分是一種由自指令生成的{指令,API}對組成的用戶-代理式的多輪聊天對話數據。
Gorilla 的工作流程
在今年二月,Gorilla開放了OpenFunction v2版本,其Function Call功能能夠支持更復雜的情況,包括多函數選擇,多次調用,函數相關性檢測與REST格式的API調用,讓其能夠更有效地調用工具,并提升準確率。
OpenFunction v2的多函數選擇,多次調用,函數相關性檢測與REST格式的API調用
伯克利大學也在今年公布了伯克利Function Calling模型排行榜,多維度地評估 LLM 準確調用函數的能力,目前仍然處于快速更新的狀態(tài)。
地址:
https://gorilla.cs.berkeley.edu/leaderboard.html
現在,許多新訓練的模型當中都包含了部分Function Calling的數據集,讓基礎模型本身帶有一定的Function Calling功能,能夠適用于更加復雜的場景,其中國內的模型包括了阿里的Qwen、智譜的ChatGLM、字節(jié)的豆包等等
1.3. 兩種框架對比的優(yōu)劣勢
在實際應用的時候,ReACT框架和Function Calling模型框架有不同優(yōu)略勢,需要從不同的角度來思考:
1.3.1. 對模型的要求
ReACT和Function Calling在對模型的要求上存在顯著差異。
Function Calling類的智能體對模型的要求相對較高。模型的訓練數據必須包含function call相關的內容,以確保模型能夠理解和生成結構化的輸出。這類模型通常還需要具備更好的結構化輸出穩(wěn)定性,以及關鍵詞和信息提取的能力。這意味著,模型需要較大的參數量,經過精細的調整和優(yōu)化,才能滿足Function Calling的需求。這種方式的優(yōu)點在于,模型可以直接生成符合特定格式的數據,從而提高了解析和處理的效率。
相比之下,ReACT框架對模型的要求則相對較低。ReACT不需要模型本身支持function calling格式的輸出。在計劃的生成過程中,它可以支持自然語言的規(guī)劃文本,并在后續(xù)步驟中解析這些自然語言的輸入。其優(yōu)勢在于,模型不需要進行復雜的結構化輸出,只需生成自然語言即可。這使得模型的訓練和優(yōu)化過程更為簡單,同時也降低了模型的出錯率。
1.3.2. 對提示詞的要求
Function Calling類的智能體結構通過微調模型來支持用戶輸入選擇函數和結構化輸入,這個過程其實這提高了輸出穩(wěn)定性,并簡化了提示工程的復雜程度。相比之下,ReACT方式需要對模型進行更加細致的指導,讓通用模型擁有輸出規(guī)劃、函數所需參數的能力,雖然這緩解了對模型本身輸出能力的依賴,卻增加了對提示工程的依賴,需要針對模型的特性來設計對應的提示模板,生成規(guī)劃(函數的選擇)和函數所需的API,并可能需要提供樣例,消耗的上下文Token也相對更多一些。
盡管Function Calling對模型的要求更高,但通過提示模板,普通的模型也可以具備簡單的Function Calling的能力。通過在prompt中說明希望的輸出格式和字段描述,大模型可以直接輸出符合要求的內容。
1.3.3. 對推理的要求
在智能體結構的設計中,ReACT和Function Calling在推理要求上存在顯著差異。Function Calling強調的是單/多步驟的JSON輸出,而ReACT則允許LLM輸出一個自然語言規(guī)劃,這為智能體提供了思考的空間并能在后續(xù)的執(zhí)行過程中動態(tài)地修正規(guī)劃(Reflection)。
Function Calling通過微調的模型,使其更擅長返回結構化輸出。這種方法可以產生確定性的結果,同時降低錯誤率。然而,由于缺乏思維鏈,整個Function Calling的過程重度依賴于模型自身的推理性能,引發(fā)了大模型推理的重要問題 – 缺乏解釋性,整個推理過程相較于ReACT方式更加黑盒。相比之下,ReACT的CoT部分允許智能體在執(zhí)行任務時進行更深入的推理和思考。這種方法使得智能體能夠更準確地理解任務,并在執(zhí)行過程中進行調整。
在實際應用中,Function Calling和ReACT都可能需要執(zhí)行多輪的拆解、推理和調用才能得到結果。Function Calling隱藏了Thought過程,而ReACT則更加開放和透明。這使得ReACT更適合需要高度定制和靈活性的應用場景,而Function Calling則更適合需要快速和確定性輸出的場景。
1.3.4. 優(yōu)略勢的總結
總的來說,在智能體結構的設計中,Function Calling方式通過微調模型來支持用戶輸入選擇函數和結構化輸入,這提高了輸出穩(wěn)定性,簡化了提示工程,無需提供示例來教導模型如何推理和輸出結構化數據,其效果也更加穩(wěn)定。然而,Function Calling模型方法較為黑盒,開發(fā)者可控性較低,且對大語言模型要求較高。
相比之下,ReACT方法更加通用,留給開發(fā)者的改造空間更多。ReACT支持結構化的Function Calling,但其提示的設計更為復雜,可能占用更多的上下文Token空間。ReACT方法中的模型僅依賴于通過提示模板進行的上下文學習,讓生成更加靈活的同時也增加了提示模板設計的復雜程度。相較而言,在不微調模型的情況下,ReACT框架更易于拓展,基于場景設計出不同的規(guī)劃結構和工具調用結構。
Function Calling和ReACT各有優(yōu)勢。Function Calling在簡化流程和提高輸出穩(wěn)定性方面具有優(yōu)勢,而ReACT在通用性和靈活性方面更勝一籌。因此,在選擇智能體結構時,應根據具體的應用場景和需求來決定使用哪種方法。
二. 兩種框架的現狀:
2.1. 國內大模型對Function Call功能的支持
阿里Qwen-Chat系列:
Qwen-Chat模型在Function Calling方面針對工具使用和Function Calling功能進行了深度優(yōu)化,并在開源中文的工具調用測試集中表現出色。這使得用戶能夠輕松基于Qwen開發(fā)智能體類應用,甚至可以利用Python代碼解釋器來增強Qwen。為實現工具調用,Qwen團隊依據ReAct Prompting原理提供了相關文檔,并在openai_api.py中支持了Function Calling。為擴展上下文長度并打破訓練序列長度的限制,Qwen的模型中引入了多種技術,如NTK感知插值、窗口注意力和LogN注意力縮放。這些技術將Qwen-14B的上下文長度從2K擴展到超過8K個標記,Qwen-1.8B/7B則從8K到32K代幣,顯著提升了模型在處理長文本時的性能。
智譜ChatGLM系列:
ChatGLM3-6B支持工具調用、代碼執(zhí)行、智能體任務等功能。對于比較復雜的問題,模型可能需要進行多次工具調用。這時,可以根據返回的response是str還是dict來區(qū)分生成的回復和工具調用請求。這些特點使得ChatGLM3-6B在處理復雜問題、執(zhí)行代碼和調用工具方面具有更高的靈活性和效率
月之暗面Kimi模型:
Kimi模型在Function Calling方面展現了其智能化的特點。通過在Messages中描述工具或函數,Kimi大模型能夠智能地選擇并輸出一個包含調用一個或多個函數所需的參數的JSON對象,從而實現鏈接使用外部工具的目的。此外,Kimi大模型還支持使用一些智能體平臺,如Coze、Bisheng、Dify和LangChain等框架,來創(chuàng)建和管理這些工具。這使得用戶能夠配合Kimi大模型設計更加復雜的工作流程。這些特點使得Kimi模型在Function Calling方面具有較高的靈活性和擴展性,能夠滿足用戶在不同場景下的需求。
其他模型:
除此之外,字節(jié)的豆包大模型、上海人工智能實驗室的InternLM2-Chat模型、百度的文心EB系列模型也支持Function Calling的功能,能夠讓用戶通過這些模型來進行Function Calling類智能體的設計;
2.2. 各大框架對ReACT和FC的支持
Langchain
在OpenAI更新了Function Calling功能之后,LangChain也將其集成到了智能體應用的設計當中,并提供了專門的框架來支持這類Function Calling功能。Langchain的Function Calling技術允許模型在需要時調用一個或多個工具,并使用適當的輸入進行響應。這種技術的核心在于API調用,通過描述工具并讓模型智能地選擇輸出結構化對象,例如包含調用這些工具參數的JSON,從而實現更可靠、有效的工具調用。Langchain的Function Calling具有多個顯著特點。首先,它支持將多個工具綁定到調用聊天模型的工具上,并允許模型選擇調用哪個工具。這種靈活性使得智能體可以重復調用工具并接收結果,直到查詢得到解決。其次,Langchain的Function Calling采用了ToolCall接口,以支持更廣泛的提供者實現,包括Anthropic、Google Gemini和Mistral等。這種兼容性使得Langchain的Function Calling具有更廣泛的應用場景。
LangChain的react方式智能體構建屬于原教旨主義,是最早一批將react推理模式運用與實際應用開發(fā)中的框架;而現在langchain也沒有放棄ReACT形式的智能體結構,在Langsmith中,提供了更加可視化的ReACT智能體應用的設計和測試方法,并突出了其規(guī)劃的部分
LangChain的LangSmith平臺,是一個智能體應用的開發(fā)平臺和框架
Dify
Dify的Function Calling與ReAct智能體框架是自然語言處理領域兩項重要的技術方向。Function Calling允許模型調用一個或多個工具,并使用適當的輸入進行響應,從而實現更可靠、有效的工具調用。而ReAct則通過觀察環(huán)境狀態(tài)并生成相應的反應來與環(huán)境交互,適用于處理動態(tài)環(huán)境和復雜交互場景。Dify為AI代理提供了50多個內置工具,如Google Search、DELL·E、Stable Diffusion和WolframAlpha,使得這兩項技術在實際應用中具有廣泛的應用場景和高度的靈活性。
LLaMAindex
LLaMAIndex是一個全面的智能體框架,為用戶提供自動推理和決策的能力。其能夠接受用戶的輸入或查詢,通過內部決策來執(zhí)行查詢,并返回正確的結果。LLaMAIndex的關鍵組件包括將復雜問題分解為較小的問題、選擇和使用外部工具、規(guī)劃任務序列以及將已完成任務存儲在內存模塊中。
在LLaMAIndex中,Function Calling和ReACT是兩種主要的智能體結構類型。Function Calling代理可以與任何調用大型語言模型(LLM)的函數集成,這使其能夠利用LLM大模型強大能力來執(zhí)行各種任務。而ReACT代理則可以在任何聊天或文本完成端點中工作,通過跨端點的方式來實現更復雜的任務。
除此之外,LLaMAIndex通過提供高級工具和低級組件,使得構建和調試代理變得更加容易,核心代理成分如查詢規(guī)劃、工具使用等,也可以作為獨立模塊使用,進一步增強了其靈活性和可擴展性。
其他智能體框架
除此之外還有類似于Simpleaichat、Outlines、AgentGPT、AutoChain這類的智能體開發(fā)框架,但大部分活躍于去年,現在其中很多框架都已不在更新;
總結
智能體應用的開發(fā)逐漸成為了各個大模型應用開發(fā)平臺所關注的重點,無論是ReACt類型的框架,還是Function Calling類型的模型,都在以難以想象的速度不斷迭代。在未來幾個月,可以確定是智能體應用的開發(fā)方法仍然會進一步演變,直到我們找到真正的智能體應用開發(fā)范式,能夠放心地將工作中的瑣事交給AI,從而把精力放在我們真正感興趣的事情上。
如何系統(tǒng)的去學習大模型LLM ?
作為一名熱心腸的互聯(lián)網老兵,我意識到有很多經驗和知識值得分享給大家,也可以通過我們的能力和經驗解答大家在人工智能學習中的很多困惑,所以在工作繁忙的情況下還是堅持各種整理和分享。
但苦于知識傳播途徑有限,很多互聯(lián)網行業(yè)朋友無法獲得正確的資料得到學習提升,故此將并將重要的 AI大模型資料
包括AI大模型入門學習思維導圖、精品AI大模型學習書籍手冊、視頻教程、實戰(zhàn)學習等錄播視頻免費分享出來。
😝有需要的小伙伴,可以V掃描下方二維碼免費領取🆓
一、全套AGI大模型學習路線
AI大模型時代的學習之旅:從基礎到前沿,掌握人工智能的核心技能!
二、640套AI大模型報告合集
這套包含640份報告的合集,涵蓋了AI大模型的理論研究、技術實現、行業(yè)應用等多個方面。無論您是科研人員、工程師,還是對AI大模型感興趣的愛好者,這套報告合集都將為您提供寶貴的信息和啟示。
三、AI大模型經典PDF籍
隨著人工智能技術的飛速發(fā)展,AI大模型已經成為了當今科技領域的一大熱點。這些大型預訓練模型,如GPT-3、BERT、XLNet等,以其強大的語言理解和生成能力,正在改變我們對人工智能的認識。 那以下這些PDF籍就是非常不錯的學習資源。
四、AI大模型商業(yè)化落地方案
階段1:AI大模型時代的基礎理解
- 目標:了解AI大模型的基本概念、發(fā)展歷程和核心原理。
- 內容:
- L1.1 人工智能簡述與大模型起源
- L1.2 大模型與通用人工智能
- L1.3 GPT模型的發(fā)展歷程
- L1.4 模型工程
- L1.4.1 知識大模型
- L1.4.2 生產大模型
- L1.4.3 模型工程方法論
- L1.4.4 模型工程實踐 - L1.5 GPT應用案例
階段2:AI大模型API應用開發(fā)工程
- 目標:掌握AI大模型API的使用和開發(fā),以及相關的編程技能。
- 內容:
- L2.1 API接口
- L2.1.1 OpenAI API接口
- L2.1.2 Python接口接入
- L2.1.3 BOT工具類框架
- L2.1.4 代碼示例 - L2.2 Prompt框架
- L2.2.1 什么是Prompt
- L2.2.2 Prompt框架應用現狀
- L2.2.3 基于GPTAS的Prompt框架
- L2.2.4 Prompt框架與Thought
- L2.2.5 Prompt框架與提示詞 - L2.3 流水線工程
- L2.3.1 流水線工程的概念
- L2.3.2 流水線工程的優(yōu)點
- L2.3.3 流水線工程的應用 - L2.4 總結與展望
- L2.1 API接口
階段3:AI大模型應用架構實踐
- 目標:深入理解AI大模型的應用架構,并能夠進行私有化部署。
- 內容:
- L3.1 Agent模型框架
- L3.1.1 Agent模型框架的設計理念
- L3.1.2 Agent模型框架的核心組件
- L3.1.3 Agent模型框架的實現細節(jié) - L3.2 MetaGPT
- L3.2.1 MetaGPT的基本概念
- L3.2.2 MetaGPT的工作原理
- L3.2.3 MetaGPT的應用場景 - L3.3 ChatGLM
- L3.3.1 ChatGLM的特點
- L3.3.2 ChatGLM的開發(fā)環(huán)境
- L3.3.3 ChatGLM的使用示例 - L3.4 LLAMA
- L3.4.1 LLAMA的特點
- L3.4.2 LLAMA的開發(fā)環(huán)境
- L3.4.3 LLAMA的使用示例 - L3.5 其他大模型介紹
- L3.1 Agent模型框架
階段4:AI大模型私有化部署
- 目標:掌握多種AI大模型的私有化部署,包括多模態(tài)和特定領域模型。
- 內容:
- L4.1 模型私有化部署概述
- L4.2 模型私有化部署的關鍵技術
- L4.3 模型私有化部署的實施步驟
- L4.4 模型私有化部署的應用場景
學習計劃:
- 階段1:1-2個月,建立AI大模型的基礎知識體系。
- 階段2:2-3個月,專注于API應用開發(fā)能力的提升。
- 階段3:3-4個月,深入實踐AI大模型的應用架構和私有化部署。
- 階段4:4-5個月,專注于高級模型的應用和部署。
這份完整版的大模型 LLM 學習資料已經上傳CSDN,朋友們如果需要可以微信掃描下方CSDN官方認證二維碼免費領取【保證100%免費
】
😝有需要的小伙伴,可以Vx掃描下方二維碼免費領取🆓