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