天天看點

産品經了解析:如何教會大模型使用工具?

作者:暢琦的成長

#頭條創作挑戰賽#

導語|“大家或許會高估了模型的能力,低估了工程落地可用的難度。”

本文作者:edmondgeng,騰訊PCG産品經理

引言

對于大模型是如何訓練生成的問題,相信大家對其背後原理以及訓練方式已研究頗多,司内也有很多同學從專業的視角撰寫了很多深度好文進行分享,讓人受益頗多,例如:《用人話詳解語言大模型》

但在我結合業務落地實踐過程中,發現隻運用大模型本身能力是不夠的。真正有效的落地方案,要思考自身業務優勢場景,也要結合業務邊界限制條件,這樣才能實作對業務價值最大化,這是重點也是難點。

在上述場景中結合大模型落地應用,會有各種各樣的問題,從産品視角可将問題抽象總結為三個方面:無法結合外部資料、無法結合上下文記憶、無法調用外部工具

産品經了解析:如何教會大模型使用工具?

當然,太陽底下沒有新鮮事,上述問題都是業内探索廣泛遇到的,本文将聚焦在解決”無法調用外部工具“的問題上,将學習總結到的方案,以産品視角用綜述方式總結分享。

1. 問題研究意義

舉個例子:如果把大模型比喻成一個全能人類,它可以口述曆史、翻譯多國語言、談笑風聲。但如果你餓了讓它為你做一頓可口的飯菜,抱歉它最多隻能幫你口述菜單,因為它沒有、也不會使用瓦斯竈、高壓鍋。

讓模型學會外部工具的意義也在于此,隻利用模型本身能力落地應用終究空間有限,也無法結合業務本身,隻有結合外部工具,才能更好的連結業務目标,發揮更大價值。

2. 業内解決方案

将“如何讓大模型調用外部工具?”問題進行拆解,可分為三個環節 :1)大模型如何進行意圖識别,分解指令、2)大模型如何将拆解出的指令,找到對應的工具、3)大模型如何學會使用對應的工具

産品經了解析:如何教會大模型使用工具?

目前領域内:LangChain、Toolformer、HuggingGPT、AutoGPT、BabyAGI 皆對上述拆解的三個環節或其中一環提出了相應解決方案。

2.1 LangChain

LangChain是一個用于開發大語言模型的應用程式架構,全面且強大,具有很多元件,可以解決很多在應用落地時遇到的問題,如:模型(Models)、提示(Prompts)、索引(Indexes)、存儲(Memory)、鍊(Chains)和代理(Agents),其中Agents就是去解決調用外部工具問題的。

簡述其實作原理為:

1)先基于使用者需求,将Prompt拆解成不同任務

2)在基于任務去尋找适合的工具,并調用工具生成結果。(這裡會也會告訴大模型工具API文檔,這樣大模型可以根據API文檔正确調用工具)

3)最後對結果進行整合

産品經了解析:如何教會大模型使用工具?

上述對LangChain 使用Agent 調用外部工具的流程進行了簡化

2.2 Toolformer

Toolformer 是由meta ai提出的一個經過微調的模型,和LangChain思路有相似之處,主要的思想是通過建構一個自監督的方法,教大模型學會自己調用API,并省去大量的标注工作。

通過引入Toolformer,模型可以學會哪些任務需要調用工具、這些工具對應的API是什麼、以及API參數正确的組裝方式是什麼,進而解決大模型無法調用外部工具的問題。

這個過程主要分為三個環節:API調用采樣、API調用執行、API過濾;

産品經了解析:如何教會大模型使用工具?

1)API調用取樣

對于每一個API先編寫一個Prompt。這部分目的是讓模型分析,使用者輸入的文本指令中,哪些部分需要調用工具以及何種工具,并将需要調用的API插入對應的位置。

産品經了解析:如何教會大模型使用工具?

(論文中示例:問答系統生成API調用的Prompt)

2)API調用執行

根據上一步的任務,去執行所有的API調用,反回文本序列并插入到對應位置。

3)API過濾

通過算法計算出插入的API調用,哪些是真正有用的,哪些是無用的,最後隻保留有用的部分。

産品經了解析:如何教會大模型使用工具?

(論文中示例:輸出結果)

2.3 HuggingGPT

HuggingGPT是由浙江大學和微軟亞研的研究者提出的一種讓 LLM 充當控制器的新方法,讓 LLM 使用語言作為通用接口,來管理現有的 AI 模型以解決複雜的 AI 任務的架構。

産品經了解析:如何教會大模型使用工具?

(原理圖-引自論文)

簡化的描述就是,HuggingGPT 一端連接配接着ChatGPT,一端連接配接着衆多領域專精的AI模型,當使用者輸入自然語言時,可結合ChatGPT将使用者的意圖拆解,并按需調用對應意圖的AI模型,最後再結合生成結果,架構主要流程如下:

1)任務規劃

ChatGPT 等 LLM 首先對使用者請求進行解析,進行任務分解,并根據其知識規劃任務順序和依賴關系;

2)模型選擇

LLM 将解析後的任務配置設定給專家模型;

3)任務執行

專家模型在推理端點上執行配置設定到的任務,并将執行資訊和推理結果記錄到 LLM;

4)響應生成

LLM 對執行過程日志和推理結果進行彙總,并将彙總結果傳回給使用者。

産品經了解析:如何教會大模型使用工具?

(工作流程-引自論文)

2.4 Baby AGI

Baby AGI 是一個基于 OpenAI 的 GPT-3.5 或 GPT-4 語言模型建構的 Python 腳本。它接收目标和任務作為輸入,并積極地嘗試完成這些任務。此外,它還能根據已有目标和完成任務的結果生成新任務,并重新設定任務清單的優先級順序。

系統的核心理念在于利用先前任務的成果和預設目标來建立任務。然後,它使用GPT按照這些目标生成新任務,并使用 Pinecone(一種存儲和檢索大量資料的程式)來存儲和擷取任務結果的上下文,以便幫助模型記住它執行過的操作和将要執行的任務。

Baby AGI 的核心流程遵循以下三個關鍵步驟,這些步驟與其他類似産品的解決方案有許多相似之處:

1)根據需求拆分任務

2)為任務配置設定優先級

3)執行任務并整合成果

産品經了解析:如何教會大模型使用工具?

(核心流程-引自Baby AGI GitHub)

2.5 Auto GPT

實際上,AutoGPT 仍然運用了 GPT 作為其背後的大型語言模型來提供支援。簡化來講,AutoGPT 的工作原理是将使用者的自然語言需求轉化為一個特定的 Prompt。

然而,這個 Prompt 的目的不是直接生成結果,而是對使用者需求進行任務拆解和計劃制定。之後,拆解得到的任務和制定的計劃将作為新的 Prompt 輸入系統。在每個任務和計劃的執行過程中,系統會尋找合适的工具并持續循環,直至成功解決問題。

産品經了解析:如何教會大模型使用工具?

(原理-簡化版)

它主要包括三個部分:需求下發、自主運作和結果輸出。其中,自主運作是 AutoGPT 的核心子產品,它具有如下幾個步驟:

1)任務定義

使用者通過 Prompt 向 ChatGPT 下發任務。初次下發的任務需包含使用者名(Name)、角色(Role)和目标(Goals)。在後續的對話中,ChatGPT 将根據執行結果自動生成新的 Prompt。

2)任務了解

ChatGPT 通過大模型對下發的 Prompt 進行語義了解。這個過程模仿了人類在接收任務時的思考過程,在 AutoGPT 中稱為 "Thinking"。

3)方案生成

基于對任務的了解,ChatGPT 輸出一個詳細的、逐漸的解決方案。這部分對應 AutoGPT 中的 "Plan" 環節。

4)指令生成

ChatGPT 對生成的方案進行邏輯判斷,選出優先執行的步驟,并生成可執行的操作或指令。這部分在 AutoGPT 中被稱為 "Criticism"。生成的指令包括指令和參數,例如浏覽某個網站的指令。

這個步驟是 AutoGPT 的核心之一,因為它為 GPT 提供了内置動作和參數的能力,如搜尋關鍵字、抓取網頁資料、進行文本資料分析以及檔案讀寫等操作。這讓 GPT 具備了聯網、記憶等能力。

5)指令執行

AutoGPT 根據生成的指令執行任務,可能涉及通路網站、解析網站、爬取資料和執行電腦指令等操作。此外,它還可以調用 ChatGPT 資源來完成編寫代碼等任務。

6)結果輸出

當指令執行完成後,AutoGPT 将傳回執行結果,如網站頁面解析結果或資料分析結果等。

7)結果評估

在執行任務後,AI 将對執行結果進行評估,以确定是否達到預期目标或是否需要做出進一步調整。這一評估過程有助于 AI 了解其行動的有效性并做出必要的優化。

需要注意的是,GPT 傳回的不再是簡單的文本資訊,而是一個具有标準 JSON 結構的資料。這種資料結構使得 AutoGPT 能夠自主執行任務,展現了其獨特的思路精華。

系統将持續循環執行以上過程,直到達到使用者定義的所有目标。以上流程描述了 AutoGPT 的整個運作流程。

3. 外部工具使用局限

3.1 工具範圍的有限性

上述多種解決方案,所能連接配接的工具都是有限的,我思考主要受限于幾個原因:

1)受限于實作原理

上述方案從實作方式上來看,還是Prompt工程的一部分,随着工具越來越多,會受于上下文token數量的限制;

2)受限于成本

token數量的增加,也會相應的提高成本,如何利用外部工具+多輪對話,對業務側平衡成本和使用者體驗也是一個考驗;

3)受限于生态發展

大模型剛剛發展,生态的建構也剛剛開始發展,如何讓接入的工具方賺錢,如何讓更多工具加入被調用的工具list,在模型方、工具方、使用者,這三邊市場中還沒有形成明确的商業模型。

3.2 任務實作的準确性

産生“幻覺”即一本正經的亂回答,仍然是大模型需要解決的問題。雖然GPT-4釋出後,已經大大降低了産生幻覺的機率,但仍常有發生。

從準确性和使用者價值關系的角度思考:往往越複雜任務(多重任務),越貼近使用者真實需求場景,帶給使用者的價值越高,但實際上任務準确性可能會越低。真正發揮最大化的價值,可能還有一段路要走。

4. 站在業務側角度的思考

以下兩個問題本次不做詳細展開,僅闡述部分觀點&思路,持續研究大半年以來也有很多思考,給自己挖個坑,後續單獨成文進行分享。也歡迎大家随時找我讨論。

1)如何更好的利用大模型結合業務落地,提高産品和使用者/客戶價值?

  • 使用者:找到真正的使用者/客戶需求
  • 産品:明确自己産品和業務在大模型時代下真正的優勢與劣勢
  • 技術:對技術保持自己的感悟和判斷力,不要因為對技術的不了解和過于了解,限制自己的想象力。

2)大模型若發展成為平台或作業系統,目前業務産品如何更好融入大模型平台,要如何提前準備,如何建構自己的優勢?

5. 參考資料

5.1 科研論文

HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face

Toolformer: Language Models Can Teach Themselves to Use Tools

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

5.2 技術文章

用人話詳解語言大模型

5.3 其他内容

LangChain GitHub 位址

Baby AGI GitHub 位址

Baby AGI 網站

Auto GPT GitHub 位址

Auto GPT工作原了解析