微软AutoGen:创建基于大语言模型的复杂应用
微软研发的 AutoGen 框架太强大了,它是一个多代理框架,利用它可以轻松定制一系列工作任务。
举一个常见的例子:我们要实现一个爬虫程序,抓取并保存网页图片。如果把这个任务丢给 ChatGPT,它会直接返回一串可执行代码,但是代码通常会存在问题,例如执行报错、缺少依赖等,你需要反复跟 ChatGPT 对话来完善程序。当然,我们也可以设定一个复杂 Prompt,要求它调用 ChatGPT 的代码执行插件,如果存在报错,则继续修正程序。
这个任务如果交给 AutoGen 来实现,将会变得无比简单,几行代码就可以搞定:
1)定义一个 Assistant Agent,它的任务是解决问题
2)定义一个 UserProxy Agent,它的任务是替代人询问问题,同时在本地执行程序
这两个 Agent 都不需要给他们设置 Prompt。当我们把爬虫任务交给 UserProxy 后,它会理解任务,然后询问 Assistant 应该如何做,Assistant 会把操作过程告诉 UserProxy,接着 UserProxy 会根据指示在本地安装依赖,然后创建文件执行代码,如果执行出现错误,它会把详细报错提交给 Assistant,依次循环,直到可以获取到最终的结果。任务结束的时候,你会看到目标图片已经保存到本地磁盘了。
利用这个框架可以做的事情非常多,它提供的能力也十分完善,可以在项目的 notebook 中找到很多最佳实践:
http://github.com/microsoft/autogen/tree/main/notebook
为了确保安全,还是建议你在 Docker 环境中执行程序,UserProxy 有一个 code_execution_config 配置,将 use_docker 配置为 True 即可;另外,它还有一个 human_input_mode 参数,设置为 NEVER,表示整个过程都不需要人参与,也可以设置为其他值,它会等待人的输入后再进行下一步操作,这个设计可以让人参与到任务执行过程,避免跑偏。
AutoGen 是一个框架,支持使用多个代理来开发 LLM 应用程序,这些代理可以相互对话来解决任务。AutoGen 代理是可定制的、可对话的,并且无缝地允许人类参与。他们可以采用法学硕士、人力投入和工具组合的各种模式运作。
AutoGen 可以轻松构建基于多代理对话的下一代 LLM 应用程序。它简化了复杂的 LLM 工作流程的编排、自动化和优化。它最大限度地提高了 LLM 模型的性能并克服了它们的弱点。
它支持复杂工作流程的多种对话模式。借助可定制和可对话的代理,开发人员可以使用 AutoGen 构建各种涉及对话自主性、代理数量和代理对话拓扑的对话模式。它提供了一系列具有不同复杂性的工作系统。这些系统涵盖各种领域和复杂性的广泛应用。这演示了 AutoGen 如何轻松支持不同的对话模式。
AutoGen 提供了 openai.Completion 或 openai.ChatCompletion 的直接替代品作为增强的推理 API。它允许轻松的性能调整、API 统一和缓存等实用程序以及高级使用模式,例如错误处理、多配置推理、上下文编程等。
下图显示了使用 AutoGen 构建的六个应用程序示例,包括数学问题解决、多智能体编码、在线决策制定、检索增强聊天、动态群聊以及对话式国际象棋。
AutoGen 由微软、宾夕法尼亚州立大学和华盛顿大学的合作研究提供支持。