大模型-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
    
    posted @ 2024-10-15 14:47  jack-chen666  阅读(51)  评论(0编辑  收藏  举报