大模型-AIAgent 智能体现状总结
AutoGen面向多个agent的开源框架,agent可定制 可对话 能够无缝的允许人类参与
有一个master agent 制定计划 分发给不同的agent-->智能体去中心 任意两个可直接对话 (或者分层的结构 上下两层之间才能交互)
构建复杂的多智能体对话系统,基于llm工作流,agent可以是基于llm,工具或者人类,
定义一组具有专门功能和角色的agent集合
定义agent之间的交互行为,例如:一个agent接收到另一个agent的消息时,需要回复什么内容。
以会话为中心的设计好处:用户可以无缝的加入或者退出
项目:编写python代码实现从1开始报数,如果能被3整除 则输出Fizz 如果能被5整除报Buzz 如果同时能被3或者5整除报FizzBuzz
内置的不同功能的Agent:
UserProxyAgent 检索用户的输入并执行代码
AssistantAgent 默认的系统消息代理 允许agent 充当任务完成的助理
ConversableAgent 上面2种Agent之间的构建会话的Agent
主要支持openai的llm 如GPT-3.5 GPT-4,但是用户也可以与本地或其他托管的LLM使用
群聊:每个agent都可以看到组内其他的agent发送的所有消息。一旦启动,群聊将继续,直到满足最终的终止条件,每个群聊都有一个管理agent,负责消息的管理,监督消息的广播,发言人的选择,以及聊天的终止,
选择下一位发言人的方法:
--manual 用户手动选择
--random 随机选择
--round robin 轮询选择
--auto让llm选择
基于AutoGen的旅游智能体系统:2个AssistantAgent + UserProxyAgent
TourAgent 相应用户的查询,以及在生成最终的相应前收集信息
LocationResearcher 位置研究以及目的地景点 餐厅 住宿的查询
UserProxy 用户代理
CrewAI 建立在LangChain之上的 构建多个智能体组成的协作系统(斯坦福小镇 模拟软件开发ChatDev),多Agent框架,促进Agent之间的合作 共同解决复杂问题
Agent1 Agent2 ...AgentN task1 task2 ...taskN
Process将agent task串在一起
项目:自动写信并发邮件
写信
检查内容
发邮件
只能按照定义的顺序 一个agent处理一个task 而且agent之间没有交流 没有共同决策的能力 因此对于资源或者时效有要求的场景 适合使用
帮助用户任务分解,任务规划, 任务执行,是AutoGen的顶级替代
AutoGen ChatDev CrewAI 架构的区别
特点:
基于角色的Agent设计
Agent可以自主委派任务并相互协商
用户可以使用自定义的工具定义任务,并动态的分配给agent
ollama本地模型的集成
目前仅支持顺序的工作流
项目:使用CrewAi + Ollama + Langchain 构建超级Agent
AutoGen VS ChatDev VS CrewAI
AutoGen:虽然擅长创建会话agent 缺乏固有的流程概念,协调agent之间的交互需要额外的编程,任务规模的扩大,这个编程会变得越来越复杂,
ChatDev:将过程的概念引入到Agent领域,但是实现很僵硬,阻碍实际的应用的可扩展性
CrewAI:构建的时候就考虑到实际的生产环境,既有AutoGen的的对话灵活性,也具有ChatDev的体系化过程方法,CrewAI是应获得 流程的设计是动态的且强大,
能够无缝的适应开发与生产的流程。
AutoGPT:
多智能体框架
zero to hero,reshaping llm
microsoft开发的 用于简化llm工作流的编排 优化以及自动化 提供了可定制的 可交谈的agent 可以集成人类智慧以及外部工具 在多个agent之间可以实现自动化聊天。
ChatGPT GPT4 虽然可以调用一些插件来完成更多的功能,但是整体功能有限,
开源的实验性项目,定义特定的角色和一系列的目标,让GPT-4自动的创建和执行实现目标需要的必要任务,
AutoGPT的向量数据库 pinecore weaviate
BabayAGI
AI支持的任务管理系统,使用OPENAI+Pinecore创建,根据优先级排序并执行任务,
基于前一个任务的结果和预定义的目标创建新的任务,并使用通Pinecore存储和检索任务结果获取上下文,是一个原始任务驱动的的自驱动智能体--autonomous agents
Autonomous agent(自主智能体)在人工智能领域中指的是能够在环境中感知、学习和执行动作的智能实体。
这种实体具有自主性,即它能够独立地做出决策和行动,而无需人为干预。
一个循环:拉取最前的未完成任务 并执行 存储结果到vector db(pinecore)-->基于前一个任务的结果创建新任务-->根据优先级对任务的进行重新的排序
execution_agent task_creation_agent prioritization_agent
HuggingGPT
HuggingFace+ChatGPT
根据用户的自然语言描述的需求自动分析需要哪些AI模型,然后去Huggingface上直接调用对应的模型,最终输出结果。
四阶段:ChatGPT根据用户的需求解析为任务列表-->ChatGPT根据Huggingface上托管的各个专家模型的描述,为任务分配合适的模型
-->任务的执行:混合端点 包括本地推理和Huggingface推理并将结果返回给ChatGPT-->生成相应
AgentGPT:
https://github.com/reworkd/AgentGPT.git
自主的AI Agent平台 用户只需要为Agent指定名称以及目标 就可以在页面中使用
AgentTuning:
清华大学以及智普AI提出的AgentTuning提高大语言模型的Agent能力
背景:开源的模型与商业模型(ChatGPT)在生产场景任然有较大差距,
Agent把LLM当做核心的控制器来完成任务的规划,记忆和工具的使用,这些都需要依赖于细粒度的Prompt,又需要强大的llm来获得满意的性能。
现有的llm agent的能力主要关注与 prompt的设计或者构建框架来完成某一个特定的任务,而没有从根本上提升llm自身的通用Agent的能力,
AgentTuning 即可增强llm的agent能力,又能保持其通用的llm的能力,
方法:搜集 包含告质量的交互轨迹的 指令微调(prompt turning) 数据集AgentInstruction
使用混合指令微调策略 将 数据集AgentInstruction 与 通用领域的开源指令相结合
AutoGen Studio
微软发布的 建立在AutoGen之上的 提供用户界面应用程序
促进多智能体 工作流的快速设计 并提供展示界面 但是还不能用于生产
Swarm 蜂群
openai 最近发布 ,多智能体肯定是未来重要的研究方向,
实验性质的多智能体编排框架,主打的特征是 ergonomic(高效) lightweight(轻量)
重点:让智能体的协作和执行变得轻量 可控 和 易于测试
2个元语抽象 Agent handoff(交接),'智能体'包含指令以及工具 并且在任何时间都可以选择将对话'交接'给另外一个智能体,
适合处理存在大量独立功能和指令的情况--很难编码成单个提示实现。
如果开发者想要完全的透明,并且能够细粒度的控制上下文,步骤以及工具的调用,swarm就是最佳的选择
核心组件:
Client:client=Swarm()实例化一个客户端,本质上是OpenAi的客户端, client.run() 类似于Chat Completions API 的chat.completion.create()
但是重点在于,run() 还处理Agent函数的执行,交接,上下文变量引用 并且可以在返回response之前进行多轮执行。
本质是运行了一个如下的循环:
1. 先让当前的Agent完成一个结果,
2. 执行工具调用并附加结果
3. 如果有必要 切换智能体
4. 如有必要 更新上下文的变量
5. 如没有新的函数需要调用, 返回
Agent: 将一组指令 与 一组函数 封装在一起 有能力将执行过程交接给另一个Agent
Chat Completions API
链接:https://medium.com/the-ai-archives/getting-started-with-openais-chat-completions-api-in-2024-462aae00bf0a
之前有 assistant api 用于开发智能助手 (页面GPTS 实现0代码 生成 智能助手)
this API connects users to the most basic and fundamental features of ChatGPT. It acts as the bridge that connects applications to people, enabling the generation of human-like text responses based on user input。
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)
response:
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "The 2020 World Series was played in Texas at Globe Life Field in Arlington.",
"role": "assistant"
},
"logprobs": null
}
],
"created": 1677664795,
"id": "chatcmpl-7QyqpwdfhqwajicIEznoc6Q47XAyW",
"model": "gpt-3.5-turbo-0613",
"object": "chat.completion",
"usage": {
"completion_tokens": 17,
"prompt_tokens": 57,
"total_tokens": 74
}
}
the official OpenAI quickstart guide that is available on GitHub: https://github.com/openai/openai-quickstart-python/tree/master/examples/chat-basic
an additional GitHub repo :https://github.com/logankilpatrick/ChatGPT-Simple