今天小編分享的科學經驗:國產開源大模型,首次實現代碼解釋,歡迎閲讀。
編者按:
快速成長中的大語言模型功能日新月異。為解決復雜問題,它甚至可以調用工具," 自動 " 寫代碼進行編程!
近日,上海人工智能實驗室(上海 AI 實驗室)推出書生 · 浦語大語言模型的更新版對話模型 InternLM-Chat-7B v1.1(以下簡稱 "InternLM-Chat")。InternLM-Chat 為首個具有代碼解釋能力的開源對話模型,能夠根據需要靈活調用 Python 解釋器等外部工具,在解決復雜數學計算等任務上的能力顯著提升;此外,該模型還可通過搜索引擎獲取實時信息,提供具有時效性的回答。
與此同時,上海 AI 實驗室還發布了開源智能體框架 Lagent 以輔助用户體驗新模型的完整功能。通過 Lagent,用户可便捷實現由大語言模型到智能體的轉換,從而輕松實現模型的插件調用功能并探索新的智能體範式。
開源鏈接:
書生 · 浦語開源體系 InternLM:
https://github.com/InternLM
InternLM-Chat:
https://github.com/InternLM/InternLM
Lagent:
https://github.com/InternLM/lagent
OpenCompass:
https://opencompass.org.cn/
LMDeploy:
https://github.com/InternLM/lmdeploy
在今年 7 月舉行的 WAIC 2023 上,上海人工智能實驗室(上海 AI 實驗室)正式開源了書生 · 浦語大模型 70 億參數的輕量級版本 InternLM-7B,并推出首個面向大模型研發與應用的全鏈條開源體系,同時提供免費商用,受到了學術和產業界的廣泛關注。開放評測平台 OpenCompass 的評測結果顯示,書生 · 浦語在數十項評測中體現出強大的知識體系與推理能力。
随着大模型的發展,大模型在實際場景落地中的價值越來越受到關注。單靠大語言模型的聊天能力無法滿足例如報告分析、電子商務、數理問題求解等具體場景下的任務需求。為使大模型能夠執行復雜任務,OpenAI 于今年 7 月 9 日向用户正式開放了 Code Interpreter,使得 ChatGPT 和 GPT-4 可以根據用户問題來編寫和執行代碼,從而拓展了模型在數據分析、復雜計算與功能調用方面的能力。
在 InternLM-7B 基礎上,上海 AI 實驗室面向實用需求,正式開源了書生 · 浦語具有代碼解釋能力的對話模型版本,填補了開源社區中模型代碼解釋能力的空白,進一步助力大模型能力構建與應用探索。
大語言模型為什麼需要代碼解釋器
大語言模型雖然在對話能力上表現出色,但是在數學計算等復雜場景下,依然具有一定的局限性,例如,模型雖然可以完成小數字的基本運算,但是難以進行大數運算。此時,如果有代碼解釋器或者計算器等工具進行輔助,就能夠比較方便地解決這類問題。
例如,用户可以讓模型求解如下題目:
題目:已知水庫水位為海拔 148.5m,相應水面的面積為 140.0km2;水位為海拔 157.5m 時,相應水面的面積為 180.0km2。将該水庫在這兩個水位間的形狀看作一個棱台,則該水庫水位從海拔 148.5m 上升到 157.5m 時,增加的水量約為?
在沒有代碼解釋器的情況下,模型的回復是:
由題意知 , 水庫的體積增加了
可以發現,模型雖然知道計算公式,但卻無法正确計算出結果。但是,如果模型具有調用代碼解釋器的能力,就可以產生如下内容,調用 Python 代碼解釋器對問題進行求解:
用户可以基于一定的規則,從模型的回復中提取出模型對代碼解釋器的調用并執行代碼,計算得到結果 1440.0 并返回給模型,模型在接收到計算結果後可以組織回復并告訴用户最終答案。
根據題意可知,棱台的體積為:
可見,代碼解釋器等外部插件能夠有效彌補模型的不足,提升模型解決實際應用中復雜問題的能力。
調用開源插件,賦能復雜任務
本次書生 · 浦語開源更新,使大模型具備了調用代碼解釋器及搜索引擎等外部插件的能力,為大模型解決復雜任務賦能。
當前,大多數開源模型主要聚焦于對話主觀體驗的提升,并不具備良好的調用外部插件的能力。針對此情況,書生 · 浦語團隊進行了積極研究探索,賦予了 InternLM-Chat 調用代碼解釋器、檢索工具等外部插件的新能力。
寫代碼解難題
面對解方程等復雜的數學計算問題,模型僅憑自身能力難以完全做對,而有了代碼解釋器的加持,模型只要能寫對方程式,就可調動代碼解釋器完成方程求解。
面對復數題,模型也能夠調用 Python 代碼解釋器并寫出正确的代碼,對問題進行求解。如題目:若 ,
檢索獲取新知
由于大語言模型迭代周期較長,往往難以獲取最新的知識,調用檢索工具則可以顯著地增強模型對最新知識的獲取和了解,提高回答的時效性和有效性。例如,向新版大模型詢問 "LK-99 真的是常温常壓超導體嗎 ",此時大模型會先搜索 "LK-99 常温超導體 ",并檢索到三篇參考資料,在閲讀這些資料内容後,給出總結回答 "LK-99 并沒有被證實為常温常壓超導體 "。
千億參數模型能力再上台階
書生 · 浦語團隊還将最新研究成果運用于書生 · 浦語千億參數版本大語言模型的能力提升中,使其實現了在復雜場景中進行多步推理和計算。目前,書生 · 浦語千億參數版本大語言模型已擁有多知識點運用、自主反思及修正錯誤等能力,模型的推理能力和插件調用能力也日漸提升。
當使用該模型求解以下數學題時,模型能夠準确理解向量垂直的性質并進一步列出方程解答。
同時,模型還能夠理解三角函數的性質并對問題進行求解。在以下問題中,模型使用方程求解出多個答案并能夠根據題意回答實數的最小值。
在調用插件的過程中,大語言模型可能無法一次性成功調用工具解決問題。此時模型的反思和修正能力就顯得尤為關鍵。如下圖所示,讓千億參數的模型統計滿足題目要求的集合個數,計算指出模型并沒有導入對應的模塊依賴,但随後能根據報錯修復代碼并正确求解。
可以發現,随着模型參數量的提升,模型的推理能力和插件調用能力也得到顯著提升。
開源 Lagent 框架,助力智能體研發
當大語言模型能夠以 " 自主 " 思考方式調用外部工具完成復雜任務時,其可謂經進化成為智能體。
為達到此目标,除了需要提升大語言模型本身的推理和調用工具能力,還需要一套智能體框架,構建大語言模型作為智能體的思維過程,并實現對應的工具供大語言模型調用執行。
因此,書生 · 浦語團隊同時開源了智能體框架,支持用户快速地将一個大語言模型轉變為多種類型的智能體,并提供典型工具為大語言模型賦能。
這套開源框架具備如下特點:
集合了多種類型的智能體能力,包括 ReAct、AutoGPT 和 ReWoo 等,這些智能體能夠調用大語言模型進行多輪的推理和工具調用,并在工作過程中及時進行反思和自我修正;
框架簡單易拓展,支持 Python 解釋器、API 調用和搜索三類常用典型工具;
靈活支持多個大語言模型應用,包括 InternLM、Llama-2 等開源模型和 GPT-4、GPT-3.5 等基于 API 的閉源模型。
為了方便社區基于 Lagent 靈活地實現和探索各種新的 Agent 及工具,Lagent 采用了一套簡潔的模塊設計。智能體(Agent)模塊包含了動作執行器(ActionExecutor)和大語言模型(LLM),并确立了特定類型的規劃和執行機制。Agent 模塊接收用户輸入後,LLM 進行對應的規劃和決策過程,發出調用工具的指令。不同類型的工具,如 Python 解釋器和搜索引擎等被分别定義為智能體的一個動作(Action),由 ActionExecutor 接收并解析調用工具的指令,完成具體的工具調用并向 LLM 返回執行結果。
目前廣泛使用的開源框架 Langchain 也實現了類似的功能,能夠為大語言模型提供工具擴展,但在多重抽象和封裝之下,學習上手和調試相對較復雜,Lagent 采用簡潔直觀的設計,統一的接口并提供清晰的文檔,為用户在構建不同 Agent 和工具調用流程中提供一致性的流暢體驗。
研究人員用 10 行代碼快速實現了一個 Agent,它能夠調用代碼解出數學題,并輸出正确的結果。
題目: ,
在實際使用過程中,無論采用何種工具和 Agent,用户都可以通過類似的 10 行代碼快速構建一個 Demo 并調試。未來,Lagent 也将繼續支持各種豐富的 Agent 和工具,不斷拓寬大語言模型作為智能體的能力邊界,助力開源社區高效構建和研發基于大語言模型的智能體。