前三章我們分別介紹了思維鏈的使用,原理和在小模型上的使用。這一章我們正式進入應用層面,聊聊如何把思維鏈和工具使用結合得到人工智慧代理。
要回答我們為什麼需要AI代理?代理可以解決哪些問題?可以有以下兩個視角
首先是我們賦能模型,如果說LLM是大腦,那Agent提供了手腳和感官
其次是模型賦能我們,Agent加持的大模型,作為更優的資料和任務中介/代理,賦予了我們和任意資料型別互動的能力,大模型正在重構資料和資訊的處理方式。從之前的結構化資料為主向更多的非結構化資料轉變。
這裡只展示了一個goodcase,因為badcase太多啦哈哈~SelfAsk結果不好的兩個主要原因有
Self Ask是一類最簡單的工具呼叫模板,只支援單一搜尋工具的使用,不支援工具選擇。下面我們看下支援多種工具呼叫的ReAct正規化~
- ReAct: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS
- https://tsmatz.wordpress.com/2023/03/07/react-with-openai-gpt-and-langchain/
ReAct文如其名,模型推理分成了兩個部分,Reason和Action。Reason生成分析步驟,Action生成工具呼叫請求,二者交替進行直到得到最終的結果。和SelfAsk對比,ReAct進一步把推理和工具呼叫進行了解耦, 在Self Ask中,自我提問既是推理步驟也是搜尋工具的請求query,而在ReAct中工具呼叫的請求在推理步驟之後,這樣可以更好的支援搜尋以外的其他工具。
ReAct在檔案問答上給出的few-shot-cot推理模板如下
繼續問:昨日A股市場漲幅最高的板塊成交量如何?因為沒有few-shot拆解問題的指引,只有以上zero-shot去描述工具選擇,因此模型並沒有正確拆解問題,不過正確選擇了搜尋工具。
當我們提問wolfram可以解決的問題領域,例如求解幾何面積時,大模型會選擇呼叫Wolfram來解決數學問題。
適用於檔案問答的固定推理模板+固定工具使用,論文定義了兩種工具Search檢索,和Lookup在檔案中查詢關鍵詞所在的句子。DocStore因為推理模板固定,可用的場景比較有限,我們就做不測試了,大家可以直接去看官網給出的Demo。
React雖然本身是可以不經過模型指令微調直接使用的,但論文中也提出指令微調後效果會有提升,不過微調的方案我們會單獨放一章來說。
看完了SelfAsk和React的實現,不難發現二者存在一些侷限性
針對更復雜多樣的工具呼叫,和更有針對性/複雜的模型規劃能力,我們下一章介紹基於指令微調的工具呼叫方案。
想看更全的大模型相關論文梳理·微調及預訓練資料和框架·AIGC應用,移步Github >> DecryPrompt