TaskWeaver:開源框架協助資料分析與業界定制,建構卓越的Agent解決方案
數據分析一直是現代社會中的關鍵工具,幫助我們深入了解本質、發現規律並引導決策。然而,數據分析過程常常複雜且耗時,因此我們期望有一個智慧助理可以直接與數據互動。隨著大語言模型(LLM)的發展,虛擬助理和Copilot等智慧代理紛紛出現,它們在自然語言理解和生成方面的表現令人驚嘆。然而,遺憾的是,現有的代理框架在處理複雜資料結構(如DataFrame、ndarray等)和引入領域知識時仍然面臨困難,而這恰恰是資料分析和專業領域中的核心需求。
為了更好地解決語音助理在執行任務時的瓶頸問題,微軟推出了一個名為TaskWeaver的Agent框架。該框架以程式碼為優先,能夠智慧地將使用者的自然語言請求轉換為可執行的程式碼,同時支援多種資料結構和動態插件選擇。此外,TaskWeaver還可以根據不同領域的規劃過程進行專業適應,充分發揮了大語言模型的潛力。作為一個開源框架,TaskWeaver提供了可自訂的範例和插件,可融入特定領域的知識,讓使用者能夠輕鬆打造個人化的虛擬助理。 TaskWeaver的推出將有效地提高語音助理的智慧化水平,並滿足用戶對於虛擬助理個人化需求的不斷增長。
- 論文:TaskWeaver: A Code-First Agent Framework
- ##論文網址:https ://export.arxiv.org/abs/2311.17541
TaskWeaver 專案已在GitHub 上開源,並於發布當日登上GitHub 趨勢榜。目前,該項目已獲得 2.9k 個 star,取得了很好的反響。此外,在領英等社群平台上也有一些實用案例,例如用 TaskWeaver 進行 SAP 資料分析。這些案例證明了 TaskWeaver 的實用性和價值。
- #專案首頁:https://microsoft.github.io/TaskWeaver/
- 專案網址:https://github.com/microsoft/TaskWeaver
故事範例
追蹤銷售資料中的隱藏秘密
#小雅是一位商業分析師,她的工作之一是從在最近的銷售數據中尋找異常情況,並根據這些異常情況指導公司調整銷售策略。所有銷售資料都安全地儲存在一個SQL資料庫中。她希望能夠透過與AI助理進行自然語言交流來輕鬆地提取和分析數據。特別重要的是,在銷售領域,異常情況具有獨特性,因此她希望AI助理能夠採用客製化的異常檢測演算法來解決這個問題。以下是小雅與AI助理的聊天記錄(圖1),展示了他們之間的互動。 小雅:你好,我需要幫助從資料庫中提取銷售數據並進行分析。 AI助理:好的,我會馬上從資料庫中擷取對應的資料。稍後我會將擷取的資料呈現給您確認。 小雅:非常感謝。 (經過一段時間) AI助理:我已經從資料庫中提取了銷售數據,以下是數據的概覽,請您確認一下。 (AI助理展示數據的概覽) 小雅:數據看起來不錯,請繼續進行異常檢測和分析。 AI助理:明白了。我將使用我們定制的異常檢測演算法進行分析,並儘快向您展示直觀的可視化結果。 (經過一段時間) AI助理:分析完成了。請您查看以下視覺化結果。 (AI助理展示可視化結果) 小雅:非常感謝你的幫忙!這些結果對我來說非常有價值。 AI助理:很高興能幫到您。如果您還有其他問題或需要進一步的分析,隨時告訴我。 小雅:當然,謝謝你的支持。
圖 1. 故事範例中的對話實錄
Agent 框架需要具備哪些技能?
透過上述小雅的故事,我們整理了 Agent 框架所應具備的幾大核心能力:#
1. 外掛程式支援:在上面的故事中,Agent 需要從資料庫中取得數據,然後使用指定的異常檢測演算法。為了完成這些任務,智慧助理需要能夠定義和呼叫自訂插件,例如 “query_database” 插件和 “anomaly_detection” 插件。
2. 豐富的資料結構支援#:Agent 需要處理複雜的資料結構,如陣列、矩陣、表格資料等,從而順利進行高階資料處理,如預測、聚類等。此外,這些資料應能在不同插件間無縫傳遞。然而,現有的大多數 Agent 框架會將資料分析的中間結果轉換為 Prompt 中的文本,或先將它們儲存為本地文件,然後需要時再讀取。然而,這些做法容易出錯且超過 Prompt 的字數限制。
3. 有狀態執行:Agent 通常需要與使用者進行多輪迭代交互,並根據使用者輸入,產生並執行程式碼。因此,這些程式碼的執行狀態應在整個會話期間保留,直到會話結束。
4. 先推理後行動(ReAct)#:Agent 應該擁有ReAct 的能力,即先觀察推理後再採取行動,這在一些存在不確定性的場景中非常有必要。例如,在上述範例中,由於資料庫中的資料模式(schema)通常比較多樣,因而Agent 必須先取得資料模式資訊並了解哪些資料列是適當的(且與使用者確認),然後才可以將對應的資料列名輸入到異常檢測演算法中。
5. 產生任意程式碼:有時候,預先定義的插件無法滿足使用者的請求,Agent 應該能夠產生程式碼以應對用戶的臨時需求。在上述範例中,Agent 需要產生程式碼來視覺化偵測到的異常,而這個過程是不借助任何外掛程式來實現的。
6. 融入領域知識:Agent 應提供一個系統性的方案來融入特定領域的知識。這將有助於 LLM 進行更好的規劃和準確地調用工具,從而產生可靠的結果,尤其是在業界客製化的場景中。
揭秘TaskWeaver 的核心架構
圖2 展示了TaskWeaver 的整體架構,包括規劃器(Planner),程式碼解釋器(Code Interpreter),以及記憶模組(Memory)。
規劃器就像是系統的大腦,它有兩個核心職責:1)制定計劃,即把用戶的需求拆分成子任務,將這些子任務逐個發送給程式碼解釋器,並在整個計劃執行過程中根據需要自我調整計劃方案;2)回應用戶,它會將程式碼解釋器的回饋結果轉換成用戶容易理解的答案並發送給用戶。
程式碼解釋器主要由兩個元件組成:程式碼產生器(Code Generator)會收到規劃器發送的子任務,結合現有可用的外掛程式以及領域特有的任務範例,來產生對應的程式碼區塊;程式碼執行器(Code Executor)則負責執行產生的程式碼,並在整個會話過程中保持執行狀態。正因為此,複雜資料結構可以在記憶體中傳遞而無需通過 Prompt 或檔案系統。這就像在 Jupyter Notebook 中用 Python 編程,用戶在單元格中輸入代碼片段,程序的內部狀態會按順序執行保留下來並且可被後續過程被引用。在實作上,每個會話中,程式碼執行器都會有一個獨立的 Python 進程來執行程式碼,從而支援同時服務多個使用者。
記憶模組主要儲存了整個系統運行過程中的有用信息,如執行結果等,可以被不同的模組寫入和讀取。短期記憶主要包括目前會話中使用者和 TaskWeaver 之間的通訊記錄,以及各模組之間的通訊記錄。長期記憶則包括了使用者可預先自訂的領域知識,以及在互動過程中總結出的一些經驗等等。
圖 2. TaskWeaver 整體架構示意圖
#除了基本架構之外,TaskWeaver 還具有許多獨特的設計。例如,會話壓縮功能可以減小文字大小,從而允許更多的對話輪數;動態插件選擇功能能夠根據使用者請求自動挑選合適的插件,從而允許整合更多的客製化插件。此外,TaskWeaver 還支援經驗保存功能,使用者在使用過程中透過輸入命令觸發該功能,它將總結使用者在當前會話中的經驗教訓,避免在下次會話中重複錯誤,實現真正的個人化。在安全性方面,TaskWeaver 也進行了精心設計,例如用戶可以指定一個 Python 模組的白名單列表,如果生成的程式碼中引用了白名單之外的模組,將觸發錯誤,從而降低安全風險。
TaskWeaver 的具體流程
#圖 3 向我們展示了 TaskWeaver 在完成前述範例任務的部分流程。
首先,規劃器接收使用者的輸入,結合各模組功能描述和規劃範例產生具體規劃。該規劃包含四個子任務,而其中第一個子任務是從資料庫中提取資料並描述資料模式。
然後,程式碼產生器根據其能力描述和所有相關外掛程式的定義產生一段程式碼。這段程式碼呼叫了 sql_pull_data 插件,將資料儲存到 DataFrame 中,並提供資料模式的描述。
最後,產生的程式碼會被傳送到程式碼執行器中執行,完成後的結果將被傳送到規劃器中以更新規劃或進行下一個子任務。圖中執行結果顯示 DataFrame 中有兩個列,即日期和數值。規劃器可以進一步與使用者確認這些列是否正確,或直接進行下一步的 anomaly_detection 插件的呼叫。
圖 3. TaskWeaver 內部工作流程
TaskWeaver 如何注入領域知識?
在大模型應用中,整合特定領域知識的主要目的是提高 LLM 在產業客製化中的泛化表現。 TaskWeaver 提供了三種將領域知識注入模型的方法:
-
#使用外掛程式進行自訂##:使用者可以透過自訂插件的形式整合領域知識。插件可以有多種形式,例如調用 API,從特定資料庫中抓取數據,或運行特定的機器學習演算法或模型等。插件自訂相對直觀,只需提供插件的基本資訊(包括插件名稱、功能描述、輸入參數和返回值)以及 Python 實作。
-
使用範例進行客製化:TaskWeaver 也提供了使用者一個系統化的介面(以YAML 格式)來設定範例,從而教導LLM 如何回應使用者請求。具體而言,範例可以分為兩種類型,分別用於規劃器中的規劃制定和程式碼產生器中的程式碼程式設計。
- 進行經驗保存:TaskWeaver 支援使用者將目前會話過程總結並儲存為長期記憶。使用者可以將專業領域知識作為對話內容對 TaskWeaver 進行 “教學”,隨後將對話保存為經驗。在後續的使用過程中就可以透過動態載入經驗,更好地完成專業領域問題。
如何使用 TaskWeaver?
TaskWeaver 的完整程式碼目前已在 GitHub 上開源。目前支援三種方案進行使用,分別是命令列啟動,網頁服務,以及以 Python 庫的形式導入。在簡單安裝後,使用者只需要配置幾個關鍵參數,如 LLM API 位址、金鑰和模型名稱,即可輕鬆啟動 TaskWeaver 服務。
圖4.命令列啟動介面
圖5. TaskWeaver 運行範例#
TaskWeaver 是一款全新的 Agent 框架方案,其設計符合資料分析和產業客製化場景的需求。透過將使用者語言轉成程式語言,「與數據對話」將不再是夢想,而是現實。
以上是TaskWeaver:開源框架協助資料分析與業界定制,建構卓越的Agent解決方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

DDREASE是一種用於從檔案或區塊裝置(如硬碟、SSD、RAM磁碟、CD、DVD和USB儲存裝置)復原資料的工具。它將資料從一個區塊設備複製到另一個區塊設備,留下損壞的資料區塊,只移動好的資料區塊。 ddreasue是一種強大的恢復工具,完全自動化,因為它在恢復操作期間不需要任何干擾。此外,由於有了ddasue地圖文件,它可以隨時停止和恢復。 DDREASE的其他主要功能如下:它不會覆寫恢復的數據,但會在迭代恢復的情況下填補空白。但是,如果指示工具明確執行此操作,則可以將其截斷。將資料從多個檔案或區塊還原到單

0.這篇文章乾了啥?提出了DepthFM:一個多功能且快速的最先進的生成式單目深度估計模型。除了傳統的深度估計任務外,DepthFM還展示了在深度修復等下游任務中的最先進能力。 DepthFM效率高,可以在少數推理步驟內合成深度圖。以下一起來閱讀這項工作~1.論文資訊標題:DepthFM:FastMonocularDepthEstimationwithFlowMatching作者:MingGui,JohannesS.Fischer,UlrichPrestel,PingchuanMa,Dmytr

谷歌力推的JAX在最近的基準測試中表現已經超過Pytorch和TensorFlow,7項指標排名第一。而且測試並不是JAX性能表現最好的TPU上完成的。雖然現在在開發者中,Pytorch依然比Tensorflow更受歡迎。但未來,也許有更多的大型模型會基於JAX平台進行訓練和運行。模型最近,Keras團隊為三個後端(TensorFlow、JAX、PyTorch)與原生PyTorch實作以及搭配TensorFlow的Keras2進行了基準測試。首先,他們為生成式和非生成式人工智慧任務選擇了一組主流

波士頓動力Atlas,正式進入電動機器人時代!昨天,液壓Atlas剛「含淚」退出歷史舞台,今天波士頓動力就宣布:電動Atlas上崗。看來,在商用人形機器人領域,波士頓動力是下定決心要跟特斯拉硬剛一把了。新影片放出後,短短十幾小時內,就已經有一百多萬觀看。舊人離去,新角色登場,這是歷史的必然。毫無疑問,今年是人形機器人的爆發年。網友銳評:機器人的進步,讓今年看起來像人類的開幕式動作、自由度遠超人類,但這真不是恐怖片?影片一開始,Atlas平靜地躺在地上,看起來應該是仰面朝天。接下來,讓人驚掉下巴

在iPhone上面臨滯後,緩慢的行動數據連線?通常,手機上蜂窩互聯網的強度取決於幾個因素,例如區域、蜂窩網絡類型、漫遊類型等。您可以採取一些措施來獲得更快、更可靠的蜂窩網路連線。修復1–強制重啟iPhone有時,強制重啟設備只會重置許多內容,包括蜂窩網路連線。步驟1–只需按一次音量調高鍵並放開即可。接下來,按降低音量鍵並再次釋放它。步驟2–過程的下一部分是按住右側的按鈕。讓iPhone完成重啟。啟用蜂窩數據並檢查網路速度。再次檢查修復2–更改資料模式雖然5G提供了更好的網路速度,但在訊號較弱

特斯拉機器人Optimus最新影片出爐,已經可以在工廠裡打工了。正常速度下,它分揀電池(特斯拉的4680電池)是這樣的:官方還放出了20倍速下的樣子——在小小的「工位」上,揀啊揀啊揀:這次放出的影片亮點之一在於Optimus在廠子裡完成這項工作,是完全自主的,全程沒有人為的干預。而且在Optimus的視角之下,它還可以把放歪了的電池重新撿起來放置,主打一個自動糾錯:對於Optimus的手,英偉達科學家JimFan給出了高度的評價:Optimus的手是全球五指機器人裡最靈巧的之一。它的手不僅有觸覺

哭死啊,全球狂煉大模型,一網路的資料不夠用,根本不夠用。訓練模型搞得跟《飢餓遊戲》似的,全球AI研究者,都在苦惱怎麼才能餵飽這群資料大胃王。尤其在多模態任務中,這問題尤其突出。一籌莫展之際,來自人大系的初創團隊,用自家的新模型,率先在國內把「模型生成數據自己餵自己」變成了現實。而且還是理解側和生成側雙管齊下,兩側都能產生高品質、多模態的新數據,對模型本身進行數據反哺。模型是啥?中關村論壇上剛露面的多模態大模型Awaker1.0。團隊是誰?智子引擎。由人大高瓴人工智慧學院博士生高一鑷創立,高

多模態文件理解能力新SOTA!阿里mPLUG團隊發布最新開源工作mPLUG-DocOwl1.5,針對高解析度圖片文字辨識、通用文件結構理解、指令遵循、外部知識引入四大挑戰,提出了一系列解決方案。話不多說,先來看效果。複雜結構的圖表一鍵識別轉換為Markdown格式:不同樣式的圖表都可以:更細節的文字識別和定位也能輕鬆搞定:還能對文檔理解給出詳細解釋:要知道,“文檔理解”目前是大語言模型實現落地的一個重要場景,市面上有許多輔助文檔閱讀的產品,有的主要透過OCR系統進行文字識別,配合LLM進行文字理
