原理可參考這篇綜論: How Agents for LLM Perform Task Planning。大型語言模型的代理如何進行任務規劃
相關framework選擇
The only libraries you need to build LLM apps are: the LLM API - OpenAI API library, liteLLM (provides an OpenAI compatible interface for nearly all other APIs, ollama included)Image Not Showing Possible ReasonsLearn More →
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
- OpenAI API and Qdrant are well documented and rarely have issues. Its easier to track down and fix bugs, compared to dealing with langchain.
現在建構LLM應用的框架五花八門,到底該自己打造到什程度? 可以參考這篇討論
Deeplearning.ai GenAI系列短課程很大程度是各AI新創來推銷自家產品,比較重要的理論跟觀念部分、各家LIB API是其次
本文主要參考2023.06。lilianweng.github.io。LLM Powered Autonomous Agents。"Planning"章節進行翻譯與補充
這篇文章很好的回顧了當前(2023.06為止)LLM Agents(任務代理)重要的核心思想
lilianweng為OpenAI Head of Safety System,blog有很多質量非常好的技術文章,推!
文章中探討如何利用大型語言模型(LLM)來分解複雜任務。包括「思緒鏈」(Chain of Thought, CoT)和「思緒樹」(Tree of Thoughts)等技術,這些技術能夠將大任務分解為更小、更簡單的步驟。此外,還有一種方法是利用外部的經典規劃工具(如 PDDL)來進行長期規劃,這在某些機器人設置中很常見。
自我反思是自主代理的重要部分,它通過改進過去的行動決策和糾正錯誤來實現迭代改進。 如 ReAct 和 Reflexion,這些方法結合了推理和行動,並通過語言空間來進行複雜的推理步驟。這些方法使代理能夠在執行任務時進行自我反思,從而提高其解決問題的能力。
以下為內文提到的四種主要方法摘要
方法 | 說明 |
---|---|
ReAct | 讓Agent根據先前的思考進行行動,並從該行動的結果中獲得觀察,形成**「思考→行動→觀察」**的流程 [Thought]–>[Action]–>[Observation] |
Reflexion | 為Agent賦予記憶功能,使其能回顧及評估先前的動作{ |
Chain of Hindsight(COH) | 透過不斷地為agent提供漸進的提示,使其在同一問題上進行迭代精煉,以得到更好的模型輸出
Image Not Showing
Possible Reasons
|
Algorithm Distillation(AD)) | COH與強化學習(RL)相結合。它利用RL在不同任務上的學習歷程 |
ReAct(Yao et al. 2023)
ReAct 在大型語言模型 (LLM) 中結合了推理和行為,通過擴展行為空間,使其成為任務特定的行為和語言空間的組合。前者使LLM能夠與環境互動(例如,使用Wikipedia搜索API),而後者則提示LLM以自然語言生成推理軌迹。
ReAct的提示模板包含了讓LLM進行思考的明確步驟,大致流程如下:
圖2. 知識密集型任務(例如HotpotQA、FEVER)和決策制定任務(例如AlfWorld Env、WebShop)的推理軌跡範例。 (圖片來源:Yao等人,2023年)。
在對知識密集型任務和決策制定任務的實驗中,ReAct的表現均優於僅有Action的基準
自我反思Reflexion(Shinn & Labash 2023)
Reflexion 旨在為代理(Agents)裝備動態記憶和自我反思能力,以提高其推理技巧。
"Reflexion" 是一個設計來幫助電腦程序(我們叫它代理人agent)更好地思考的方法。這個方法會給代理人一個"記憶"功能,讓它能夠回顧自己過去的動作,並且思考如何做得更好。
思考與行動: Reflexion 的遊戲規則
Reward
model provides a simple binary Reward
and the Action
space follows the setup in ReAct
where the task-specific action space is augmented with language to enable complex reasoning steps)在強化學習中(RL),「行動空間」(action space)是指智能體(agent)(例如機器人或計算機程序)可以選擇的所有可能行動。當我們說「行動空間增強了語言」(action space is augmented with language ),意思是智能體現在除了原本的行動選項之外,還可以使用語言來表達或決策。這使得智能體不僅能夠做出物理動作,還可以進行更複雜的理解、推理和溝通。這樣的設定使得學習過程更為豐富和多樣,因為智能體可以利用語言來解釋其行為、策略或甚至與其他智能體或人類進行互動。
行動評估方法Heuristic function
自我反思(Self-reflection):檢視過去失敗經驗
這邊一個正、負樣本的配對有點對比學習的味道。但只有反例(正-負)的配對、沒有正樣本對(正-正)
回溯鏈 Chain of Hindsight(CoH; Liu et al. 2023)
CoH是一種鼓勵模型改進其自身輸出的方法,它通過明確地向模型展示一系列過去的輸出序列和反饋來實現。
CoH方法就像是一位教練,不斷地給予模型過去的表現反饋,幫助它做得更好。這些反饋包括人們對模型的評分和建議。
比當模型回答了一個問題,我們不僅會給它一個分數,還會告訴它如何改進。這些分數和建議會被整理成一系列的資料,然後用這些資料來訓練模型,使其更加完善。
演算法提取 Algorithm Distillation(AD)
想像強化學習(RL)就像學習騎腳踏車。訓練一個特定的策略就像是學習在一個特定的路面或環境中騎腳踏車。但這樣學到的技能可能只適用於那個特定的環境。而學習強化學習的過程,就像是學習如何在各種不同的路面和環境中騎腳踏車。這樣學到的技能更加通用,不受特定環境的限制。
AD的目標是學習如何「學習」,而不僅僅是學習完成一個特定的任務。(The goal is to learn the process of RL instead of training a task-specific policy itself.)
CoH的想法就像是向模型展示一系列不斷進步的答案,然後訓練模型學習這種進步的趨勢,從而得到更好的答案。演算法提取 Algorithm Distillation(AD; Laskin et al. 2023)的方法與此類似,但它應用在強化學習的場景中(encapsulated in a long history-conditioned policy)。想像有一個機器人(或稱為智能代理agent)不斷地和外部世界互動,每一次互動,它都變得稍微聰明一點。AD的做法是將這些互動歷程連接起來(concatenates this learning history),然後輸入到模型中,這樣模型在下一次的預測就會更聰明一點。
Data Generation:
O
), 行動(a
), 和獎勵(r
)Model Training:
如圖6所示,描述了演算法蒸餾(AD)的工作原理。這篇論文的主要想法是,只要有一套學習歷程,就可以把這些歷程轉化為一個神經網路模型的學習(a set of learning histories can be distilled into a neural network by performing behavioral cloning over actions)。這些學習歷程是由一系列為特定任務訓練的原始策略(source policies)生成的。在訓練過程中,會不斷地隨機選擇任務並使用部分互動歷程(a subsequence of multi-episode history)進行訓練,這使得學到的策略不會專屬於任何特定的任務(task-agnostic)。
但實際上,模型能夠考慮的互動歷程是有限的(limited context window length),所以要確保每一次的互動都簡短且明確(episodes should be short enough to construct multi-episode history)。要學會近乎完美的強化學習方法(near-optimal in-context RL ),模型需要2-4次的互動歷程(episodes)。而要實現這一目標,考慮的互動歷程必須足夠長。
與其他三個基準方法比較:ED(專家提取expert distillation,模仿專家行為而非學習歷程 behavior cloning with expert trajectories instead of learning history)、來源策略 source policy((used for generating trajectories for distillation by UCB)和最高標準的
上限信賴界限」Upper Confidence Bounds(UCB)
人類大腦中的幾種記憶類型,包括感官記憶、短期記憶(或工作記憶)和長期記憶。這些記憶類型在大型語言模型中的對應物分別是學習嵌入表示、上下文學習和外部向量存儲。
外部記憶可以緩解有限注意力跨度的限制。常見的方法是將信息的嵌入表示保存在一個向量存儲數據庫中,該數據庫支持快速的最大內積搜索Maximum Inner Product Search (MIPS)。為了優化檢索速度,通常選擇近似最近鄰approximate nearest neighbors (ANN)演算法,以換取少量準確度損失來實現巨大的速度提升。
工具使用是人類的一個顯著特徵,我們創造、修改並利用外部物體來完成超出我們身體和認知極限的事情。將大型語言模型與外部工具相結合,可以顯著擴展模型的能力。例如,“Modular Reasoning, Knowledge and Language”MRKL(模塊化推理、知識和語言)是一種神經符號架構,它包含了一系列“專家”模塊,而通用的大型語言模型則作為路由器將查詢路由到最合適的專家模塊。此外,還有如"Tool Augmented Language Models" TALM(工具增強語言模型)和 Toolformer 等方法,它們通過微調語言模型來學習使用外部工具API。
HuggingGPT(Shen et al. 2023)
使用 ChatGPT 作為任務規劃器的框架,根據模型描述選擇 HuggingFace 平台中可用的模型,並根據執行結果總結反應
整個流程大致可分為四個主要階段:
任務計劃(Task Planning):
模型選擇(Model Selection):
任務執行(Task Execution):
回應生成(Response Generation):
當考慮將 HuggingGPT 應用於實際場景時,需要解決幾個問題:
MRKL 概念在lanchain中以"router chain"實作,詳見Chains筆記
https://chat.openai.com
實作部分可參考Langchain筆記Agents章節
Plan And Execute Agent: Langchain Experimental
微軟在2023.08推出的智能代理框架,使用上看來比Langchain更簡單易用
有一系列LLM部署架構相關的教學
AutoGen doesn't support connecting to various external data sources natively. This is exactly where LangChain can come into play.