AutoGen 2.0:微软发布代码优先的Agent框架TaskWeaver 精华
进入大模型时代,微软在推动大模型应用落地动作频频,先后发布了Semantic Kernel,PromptFlow,AutoGen等框架,最近又发布了一款Agent框架:TaskWeaver。它被作为一个代码优先框架,用于构建LLM Agent。它将用户需求转换为可执行代码,并将用户定义的插件视为可调用函数。TaskWeaver 支持丰富的数据结构(支持本地 Python 数据结构,如 DataFrames )、灵活的插件使用和动态插件选择,并利用 LLM 编码功能实现复杂逻辑。用户可提供示例,注入专业领域知识来指导规划和代码生成,并确保生成代码的安全执行,包括执行前验证代码,及将会话隔离到受限进程,后期还会提供沙箱机制。在模型调用成本上,允许不同模块采用不同的 LLM 模型 ,还纳入一定规则以便跳过不必要的调用 。
https://arxiv.org/pdf/2311.17541v1.pdf
TaskWeaver 由三个主要组件组成:计划器、代码生成器和代码执行器。这些组件共同创建了一个双层计划系统。首先,高阶计划概述了总体战略。然后,详细执行计划指导框架完成每项任务,确保效率和准确性。
下面是该框架的工作流程。
它还可以很方便的应用在mutiagent场景中,不仅可以将agent作为插件被集成,也可以把它放到AutoGen等多agent框架中使用。
官方提到的亮点特性:
- 丰富的数据结构--TaskWeaver 允许你在 Python 中使用丰富的数据结构(如 DataFrames),而不必使用文本字符串。
- 自定义算法--TaskWeaver 允许你将自己的算法封装到插件中(以 Python 函数的形式),并协调它们来完成复杂的任务。
- 融入特定领域的知识--TaskWeaver 的设计可轻松融入特定领域的知识,如执行流程知识,以提高AI copilot的可靠性。
- 有状态对话--TaskWeaver 支持有状态对话。它可以记住对话的上下文,并利用它来改善用户体验。
- 代码验证--TaskWeaver 可在执行前验证生成的代码。它可以检测生成代码中的潜在问题,并提供修复建议。
- 易于使用--TaskWeaver 的设计宗旨是易于使用。提供了一套示例插件和教程,可帮助用户轻松上手。用户可以在示例插件的基础上轻松创建自己的插件。TaskWeaver 提供开箱即用的体验,允许用户在安装后立即运行服务。
- 易于调试--TaskWeaver 的设计易于调试。有详细的日志记录,帮助你了解在调用 LLM、代码生成和执行过程中发生了什么。
- 安全考虑--TaskWeaver 支持基本的会话管理,将不同用户的数据分开。代码执行被分成不同的进程,以避免相互干扰。
- 易于扩展--TaskWeaver 的设计易于扩展,以完成更复杂的任务。可以创建多个copilot来扮演不同的角色,并编排它们来完成复杂的任务。
笔者认为,它还有一个比较大的亮点是,它易于集成,可以把它当作一个library使用,方便的、渐进式地集成到现有的系统。
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())
这将带来很大的编程范式改变,开发者不用花心思去具体进行数据处理等琐碎需求,交给agent帮你实现,这样既提高灵活性,又减少了工作量,这算不算是AI时代的高阶“策略模式”呢?
本文转载自 AI工程化,作者: ully