AutoGen 2.0:微軟發(fā)布代碼優(yōu)先的Agent框架TaskWeaver 精華
進入大模型時代,微軟在推動大模型應(yīng)用落地動作頻頻,先后發(fā)布了Semantic Kernel,PromptFlow,AutoGen等框架,最近又發(fā)布了一款A(yù)gent框架:TaskWeaver。它被作為一個代碼優(yōu)先框架,用于構(gòu)建LLM Agent。它將用戶需求轉(zhuǎn)換為可執(zhí)行代碼,并將用戶定義的插件視為可調(diào)用函數(shù)。TaskWeaver 支持豐富的數(shù)據(jù)結(jié)構(gòu)(支持本地 Python 數(shù)據(jù)結(jié)構(gòu),如 DataFrames )、靈活的插件使用和動態(tài)插件選擇,并利用 LLM 編碼功能實現(xiàn)復(fù)雜邏輯。用戶可提供示例,注入專業(yè)領(lǐng)域知識來指導(dǎo)規(guī)劃和代碼生成,并確保生成代碼的安全執(zhí)行,包括執(zhí)行前驗證代碼,及將會話隔離到受限進程,后期還會提供沙箱機制。在模型調(diào)用成本上,允許不同模塊采用不同的 LLM 模型 ,還納入一定規(guī)則以便跳過不必要的調(diào)用 。
?
??https://arxiv.org/pdf/2311.17541v1.pdf??
TaskWeaver 由三個主要組件組成:計劃器、代碼生成器和代碼執(zhí)行器。這些組件共同創(chuàng)建了一個雙層計劃系統(tǒng)。首先,高階計劃概述了總體戰(zhàn)略。然后,詳細執(zhí)行計劃指導(dǎo)框架完成每項任務(wù),確保效率和準確性。
下面是該框架的工作流程。
它還可以很方便的應(yīng)用在mutiagent場景中,不僅可以將agent作為插件被集成,也可以把它放到AutoGen等多agent框架中使用。
官方提到的亮點特性:
- 豐富的數(shù)據(jù)結(jié)構(gòu)--TaskWeaver 允許你在 Python 中使用豐富的數(shù)據(jù)結(jié)構(gòu)(如 DataFrames),而不必使用文本字符串。
- 自定義算法--TaskWeaver 允許你將自己的算法封裝到插件中(以 Python 函數(shù)的形式),并協(xié)調(diào)它們來完成復(fù)雜的任務(wù)。
- 融入特定領(lǐng)域的知識--TaskWeaver 的設(shè)計可輕松融入特定領(lǐng)域的知識,如執(zhí)行流程知識,以提高AI copilot的可靠性。
- 有狀態(tài)對話--TaskWeaver 支持有狀態(tài)對話。它可以記住對話的上下文,并利用它來改善用戶體驗。
- 代碼驗證--TaskWeaver 可在執(zhí)行前驗證生成的代碼。它可以檢測生成代碼中的潛在問題,并提供修復(fù)建議。
- 易于使用--TaskWeaver 的設(shè)計宗旨是易于使用。提供了一套示例插件和教程,可幫助用戶輕松上手。用戶可以在示例插件的基礎(chǔ)上輕松創(chuàng)建自己的插件。TaskWeaver 提供開箱即用的體驗,允許用戶在安裝后立即運行服務(wù)。
- 易于調(diào)試--TaskWeaver 的設(shè)計易于調(diào)試。有詳細的日志記錄,幫助你了解在調(diào)用 LLM、代碼生成和執(zhí)行過程中發(fā)生了什么。
- 安全考慮--TaskWeaver 支持基本的會話管理,將不同用戶的數(shù)據(jù)分開。代碼執(zhí)行被分成不同的進程,以避免相互干擾。
- 易于擴展--TaskWeaver 的設(shè)計易于擴展,以完成更復(fù)雜的任務(wù)。可以創(chuàng)建多個copilot來扮演不同的角色,并編排它們來完成復(fù)雜的任務(wù)。
筆者認為,它還有一個比較大的亮點是,它易于集成,可以把它當(dāng)作一個library使用,方便的、漸進式地集成到現(xiàn)有的系統(tǒng)。
app_dir = "/path/to/project/"
app = TaskWeaverApp(app_dir=app_dir)
session = app.get_session()
user_query = "hello, what can you do?"
response_round = session.send_message(user_query,
event_handler=lambda _type, _msg: print(f"{_type}:\n{_msg}"))
print(response_round.to_dict())
這將帶來很大的編程范式改變,開發(fā)者不用花心思去具體進行數(shù)據(jù)處理等瑣碎需求,交給agent幫你實現(xiàn),這樣既提高靈活性,又減少了工作量,這算不算是AI時代的高階“策略模式”呢?
本文轉(zhuǎn)載自 ??AI工程化??,作者: ully
