|
以后MAS系列,部分内容,会在公众号发布,有个独立专栏! 多智能体系统MAS(Multi-Agent System)的0-1学习项目,上线! 至于什么是MAS,同时发出的另外一篇,有介绍! 生产级AI多智能体系统MAS学习指南 这是,长期项目!还没看的,上面看!
雄哥一直都说,做任何实践,必须先得到!
犹如,蜘蛛网,只有技能逐个握在手上,才能织成大网! 我们从一个完整的生成式AI框架中,聚焦多智能体系统,拆开智能体的七大组件:
①感知 ②目标推理 ③规划 ④多Agent对齐 ⑤函数调用/实体执行 ⑥评估 ⑦自进化/迭代 说好0-1,今天,跟着雄哥,做一个简单多智能体协作应用,Crew AI来爬取海南旅游官网,并且分析输出营销优化方案! --实现-- 
(Agent根据任务调用tools爬取网站,并深入分析网站内容)


这个系统,可以只运行在系统底层,支撑最终的输出或物理动作,它干了几件核心的事: #A 分析目标
#B 根据目标调用tools #C 获取tools执行后的数据(也可是现实世界的实体反馈) #D 根据数据,结合目标,输出方案 #E 输出反馈及审核 #F 再次优化方案 #G审核-多Agent同意方案,最终输出
ok!人的专注力只有10分钟,一边跑,一边聊MAS的原理,先得到! 第一部分:CrewAI是什么? 第二部分:代码如何工作? 第三部分:跑起来!边跑边聊代码细节!
第一部分:CrewAI是什么?代码如何工作?
这是一个用于编排角色扮演、自主 AI Agent的尖端框架,让AI成为多个不同角度的Agent,围绕目标去展开方案和工作! 可能你对雄哥之前做的RAG+Tools的方案比较熟悉,之前我们的Agent的入口都是RAG,现在,入口在“Agent”!
RAG能在这个框架下运行!更可作为,外部子系统,调用!

CrewAI就是这样出发的一个Agent框架,但未来,Agent能干的事,还远不止于此!更不会拘泥于某一个开发框架!
在MAS的学习指南中,CrewAI是其中一部分,雄哥认为这,很有价值! 
对这个项目感兴趣的朋友,一定要留意我们的系列实践,也可到它的官方仓库,找到资料: https://github.com/crewAIInc/crewAI 当然啦,除了这个项目,我们还会做一些同样有价值的Agent框架实践,比如AutoGen、SWE-Agent等,甚至还会有雄哥团队做的Agent项目实践部分,属私货内容!
第二部分:代码是如何工作的?
刚刚雄哥,都介绍到啦,他是如何工作的? 通过多Agent协作,解决问题!
我们从自己实际的场景,来设计Agent的任务流,让他围绕我这个真实的目标,去编排,不就行咯!
雄哥刚刚在海南回来,假如你是“海南旅游官网”的产品经理,你应该如何优化这个网站呢? https://hainanly.cn 
那要干这个活,就要有这些Agent,来编排:
①公司研究Agent:帮助你收集有关 “海南旅游”的商业模式、服务和市场地位的详细见解,以定制营销方案; ②网站分析Agent:帮助评估 “海南旅游” 的网站,以寻找设计、可用性和 SEO 优化的改进; ③内容策略Agent:该Agent帮助你制定与 “海南旅游” 的品牌和目标相一致的内容策略,从而增强其在线形象; ④销售推介Agent:该Agent吸收了所有其他Agent的发现,以创建一个完备的方案,突出Web 开发专业知识、以前的工作,并提出量身定制的解决方案以满足“海南旅游”官方的业务目标; 当然啦,可以自定义,你可以根据自己的任务,设计自己的Agent编排! 稍后,雄哥也会详细介绍,他们之间,是如何工作的!
第三部分:跑起来!边跑边聊代码细节!
刚刚,我们定义了四个Agent,来优化,并输出完备的方案!
3.1 公司研究Agent
定位: -收集海南旅游的详细信息,包括业务、产品、服务和市场地位; 背景: -负责收集有关潜在客户的全面数据,为销售宣传提供信息; 工具: -search_tool:查找有关公司背景、产品和服务的信息; -scrape_tool:从公司的网站和在线状态收集更多详细信息; 任务: -将调查结果委托给网站分析Agent,以确保全面理解;
3.2网站分析代理 定位: -分析“海南旅游”网站需要改进的点,包括设计、性能和用户体验; 背景: -专注于确定客户网站上的具体问题和改进方案; 工具: -scrape_tool:从公司网站提取数据进行详细分析; -search_tool:与最佳实践进行比较并确定改进之处; 任务: -将调查结果委托给内容策略Agent,以纳入销售宣传;
3.3内容策略代理 定位: -制定内容策略,并确定改进的内容如何推动参与度和转化率; 背景: -专门为网站上的内容改进创建指定的叙述和策略; 工具: -search_tool:查找内容策略的示例和最佳实践; -scrape_tool:分析当前内容并提出改进建议; 任务: -将内容策略委托给销售推销Agent,以整合到最终推销中;
3.4推销代理 定位: -创建一个个性化和有说服力的销售宣传,以说服公司通过“Code With Prince”升级优化网站; 背景: -将研究、分析和内容策略相结合,打造完美的方案; 工具: -search_tool:收集推介所需的所有信息; -scrape_tool:根据其他Agent的见解+补充完善推介; 任务: -需要保持对销售宣传创建过程的直接控制,确保有凝聚力+有针对性;
ok!以上,就是雄哥的Agent编排的思路!
现在,我们动手,把这个项目,在本地,用代码跑起来!

你可以识别以上二维码,在星球,会员盘中,找到这个代码和环境要求!
末尾联系工程师-小胖,报 “老粉” 获取优惠券+进群喔! 
如果你还未搭建,本地环境,马上点击下方,搭建环境!
第四天!0基础微调大模型+知识库,部署在微信!手把手安装AI必备环境!4/45
已经搭建好的,打开conda,直接跟着操作! 你如果习惯使用其他工具的,例如vscode等,怎么顺手怎么来,小白跟着操作! 创建conda环境!
一个项目,对应一个独立环境,养成习惯!名称crewai,指定Python版本3.10!
condacreate-ncrewaipython=3.10 
激活刚创建的crewai环境!
安装jupyter!
我们所有的代码,都在这个环境操作,如果你是用其他工具的,就不用安装了! 
cd进入下载的工作目录中! 确保没有中文!cd你放代码文件的目录! pip安装依赖! pipinstall-rrequirements.txt
进入操作环境! 就是,刚刚我们安装了jupyter!会自动跳转到浏览器! 
双击打开这份代码! 
看到这,就已经成功进入了!
如何操作,非常简单了,ctrl+回车,就是运行当前代码块!
如果你不太熟jupyter,一定要学,上手极快! 
在你这个文件夹中,还有api key,如果你还未申请,需要去申请或买一个!然后填到.env文件中! OK!
首先,导入.env中的api! importdotenv%load_extdotenv%dotenv
获取网站数据!创建tools! #创建搜索工具search_tool=DuckDuckGoSearchRun()#创建网络爬虫工具scrape_tool=ScrapeWebsiteTool()
创建4个Agent,并且给他们分发任务! 这里,雄哥用到了什么提示词工程方法,在星球也分享过,看有没有伙伴记得?
这是第一个Agent,负责研究这个研究这个公司网站的!其他三个同理! # 定义公司研究agentcompany_research_agent = Agent(role="Company Research Agent",goal="收集目标公司的详细信息,包括其业务、产品、服务和市场地位.",backstory=("负责收集潜在客户的全面数据,以便为销售陈述提供信息."),allow_delegation=True,verbose=True)
# 定义公司研究agent的任务company_research_task = Task(description=("收集的数据包括 {company_name} 网站的 ({company_website}) 和其他的内容. ""包括关于他们的业务、产品、服务以及市场地位的细节."),expected_output=("详细报告关于 {company_name} 业务、产品、服务及市场地位的详细报告."),agent=company_research_agent,tools=[search_tool, scrape_tool])
依次定义好其他三个Agent后,我们要创建MAS中,非常重要的功能:
功能一:记忆功能
让Agent具有记忆,即使是多轮的对话或者输出再次交互,也不会遗忘历史对话! 功能二:共享缓存
Agent①已经调用tools获得的数据,多个Agent工作的时候,其他Agent应该都知道这份数据,不用重复劳动,提升效率!
那我们定义好四个Agent,对应四个任务!
crew=Crew(agents=[company_research_agent,website_analysis_agent,content_strategy_agent,sales_pitch_agent],tasks=[company_research_task,website_analysis_task,content_strategy_task,sales_pitch_task],verbose=2,memory=True,cache=True) memory是记忆功能,cache是共享缓存功能!True!
然后,爬取网站数据!它会深入网站去做分析,甚至二级菜单!
启动程序,开始干活!
#执行启动result=crew.kickoff(inputs=inputs)
你会看到Agent集群,开始在各自的角度工作! 
你也可以把这个对话保存为.md文件! 当然啦,这还是单个model编排,真实的Agent任务中,还要根据每个任务的要求,安排微调后的Agent专用models来干的,这,也是MAS学习指南的重磅内容!
今天,我们就聊到这,目标,是让家人们,体验Agent作为入口,是如何工作和编排的,还非常初级!后面,我们会有更多的内容上线!
|