逐步掌握最佳Ai Agents框架-AutoGen 二

Agents回顾   AutoGen在Multi-agent Conversation Framework中设计了AssiantAgent、UserProxyAgent、GroupChatManage

上一篇我们介绍了AutoGen中最基本的两个概念,Agent 和 Chat。如果您是第一次看到AutoGen这个词句,建议您返回我的逐步掌握最佳Ai Agents框架-AutoGen 一 – 掘金 (juejin.cn)文章,再继续本文的阅读。如果您也是和我一样,在学习了LangChain或开发了一些基于大模型的应用后,被AutoGen的多代理和自动chat功能所吸引,那欢迎大家点个赞,或分享给感兴趣的同学。

Agents回顾

  AutoGen在Multi-agent Conversation Framework中设计了AssiantAgent、UserProxyAgent、GroupChatManager三个Agent, 并由ConversableAgent统一管理。

  其中,AssiantAgent是助理,负责生成代码,执行任务等。UserProxyAgent是我们的代理,负责接受用户输入和指定,并将工作交给AssiantAgent来完成,user_proxy 还会自动的根据任务决定接下来的动作,比如执行某个函数等。

逐步掌握最佳Ai Agents框架-AutoGen 二

再来看个例子

  我在最近的AIGC学习中,一直在白嫖Google的colab, 如果还没有用过的同学,建议去看看python notebook的用法,和体验下colab。这里就假设大家和一样打开了colab…

  • 首先新建一个新的note book,命名为proxy_agent.ipynb

  大家也可以点击我的colab,输入自己的api_key, 运行看效果 proxy_agent.ipynb – Colaboratory (google.com)

逐步掌握最佳Ai Agents框架-AutoGen 二

  • 安装autogen 并引入成功

  在图中的安装代码,有些小知识。   首先,package~=0.1.0表示安装package的版本应该是0.1.0或者0.1.x中的任何一个更高的版本,但不包括0.2.0

  其次,-q 是 --quiet 的简写,表示安静模式,即在安装过程中减少输出,只显示错误和警告。

  最后, -U 是 --upgrade 的简写,表示如果已经安装了包,那么将其升级到最新版本。

  • 配置API endpoint

  endpoint是API的一个重要组成部分,它定义了API的具体功能和如何访问这些功能。比如我们使用什么大模型,以及api-key等。我这里只有gpt-3.5的key, 大家如果有gpt-4等,可以加在config_list里。

逐步掌握最佳Ai Agents框架-AutoGen 二

  • 构建Agents
python
复制代码
# create a assistantAgent named assistant assistant = autogen.AssistantAgent( name="assistant", llm_config=llm_config ) #create a proxyAgent named user_proxy user_proxy = autogen.UserProxyAgent( name="user_proxy", human_input_mode="TERMINATE", #用户输入模式是从命令行 max_consecutive_auto_reply=10, # 代理Agent会代替用户做执行,这里配置最大的连续自动proxy次数是 10 # `lambda`关键字在Python中用于创建匿名函数,也就是没有名字的函数。这个函数接受一个参数`x`,然后返回一个布尔值。检查`x`的"content"字段的值是否以"TERMINATE"结束 is_termination_msg=lambda x: x.get("content", "").rstrip().endswith("TERMINATE"), # 工作目录设置为当前目录,不使用docker, 如果使用docker,agent就会在一个相对隔离的环境里运行 code_execution_config={"work_dir":".", "use_docker":"False"}, # 这个有点意思,感觉是我们在向代理agent授权。 system_message="Reply TERMINATE if the task has been solved at full satisfaction.Otherwise, reply CONTINUE, or the reason why the task is not solved yet." )

建议大家仔细看看user_proxy的注释, 再往下走….

  • 查看sample_data 目录并让user_proxy 开始工作

逐步掌握最佳Ai Agents框架-AutoGen 二

  在上一步的code_execution_config配置中,我们把工作目录配置为当前目录。在colab这个云AI“虚拟机”中,当前目录下默认有一个sample_data,目录下有一些csv的数据文件等。

  接下来,我们就是要让user_proxy 接受我们打印sample_data目录下文件的命令,并交由assistant来执行。user_proxy 检查任务完成情况,反馈给我们或继续问询assistant。有点意思,有了user_proxy, 包租公可以第天去找阿丽了….

DEMO 步骤

  • 列出目录下的所有文件
python
复制代码
user_proxy.initiate_chat( assistant, message=""" List all the files in the sample_data folder """ )

  代理agent 收到我们的任务message,以chat 的方式将任务交给助理agent去完成,多么的和谐。接下来,我们看下执行细节

  1. user_proxy 将任务交给assistant, 图中“to assistant”讲的很清楚。assistant在接收到任务后,生成了相应的python代码,即下图的list_files函数,调用os模块返回了相应目录下的文件,最后调用此函数,并打印。这种assistant之间聊聊天,自动执行完事的感觉太爽了。亲,别再抱怨AutoGen API换来换去,这不还只是0.1.0版本吗?怎么的,您现在就想上天啊?个人感觉比LangChain强太多,是面向未来的….

逐步掌握最佳Ai Agents框架-AutoGen 二

  1. USING AUTO REPLY… user_proxy 自动执行,调用了assistant返回的代码。user_proxy 告诉assistant任务成功了,可以退出。 最后我们得到了执行的结果。

逐步掌握最佳Ai Agents框架-AutoGen 二

  1. 在反馈输入框中输入exit 退出对话

总结

  本结中,我们再次将assistant 和 proxy 两个agent 结合,完成了一个文件列表的例子。笔者在最近的学习和实践中有以下感觉:

  • 对prompt工程的理解越来越深刻

  当我们在原来的工作流中,刻意停下来,加入prompt 设计的时候,prompt就开始在发挥威力。就好像后端在需求,要先花时间设计数据库一样。我们现在做AI应用,将以前的很多功能交给prompt设计很重要,你会像我一样惊叹的发现,以前的大部份功能不需要再coding,prompt 一下交给大模型就能解决。目前,我学习中的很多后端功能,确实通过prompt,少写了很多代码。注意,是不怎么需要写代码,而不是copilot 帮我们生成代码,有点类似低代码,或无代码。

  • AutoGen是框架

  prompt + LLM 仍然是语义化或NPL化解决任务的方式,大模型可以换,目前我用的比较多的是OpenAI。AutoGen或LangChain是框架,帮我们将AI工作流快速,简单构建了起来。AutoGen比LangChain更先进的地方在于,它吸收了LangChain里Agent的概念,同时更自动,chat方式让agents的协同更拟人化。

参考资料

最后,欢迎和我一样在学习LangChain和AutoGen。走向AI应用开发!!!!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
人工智能

copilot源码详细分析(二)activate入口分析

2024-5-11 19:32:51

人工智能

copilot源码详细分析(三)ghostText核心逻辑

2024-5-11 23:32:24

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索