跳转到主要内容

热门内容

今日:


总体:


最近浏览:


Chinese, Simplified

category

深入研究从简单的编程实践到创建复杂、自主的Agent的转变,为构建AGI系统铺平了道路。

介绍


在整个宇宙中,如果有一种重复的模式,那就是——有时,就像变形虫一样,事物从一个细胞和目标开始。随着时间的推移,它们变得更大、更专业、更复杂,然后开始分裂。最终,随着体积的增长,这些独立的实体相互作用,形成一个网络,通常是一个更大、更复杂的有机体。
一些例子包括一只蛋如何变成一只鸟,并最终由一群鸟协同飞行和迁徙,或者人类如何建立一个公司并共同努力实现共同目标。
人工智能生成的Starlings杂音动画
在软件开发中,我们也看到了这种模式——从用C编写的单文件程序到模块、对象、包,再到相互协调的复杂微服务。
随着一年的世代人工智能热潮,我们现在看到了类似的模式,尽管这一次我们重复使用了一个已经存在了一段时间但现在有了全新生命的术语——代理(有趣的是,OpenAI称之为助理)。我相信,这些是构建通用人工智能(AGI)系统的早期构建块。
顺便说一句,就在20年前,我的硕士论文是关于创建一个嵌入Microsoft Word的应用程序,该应用程序使用Agent(一组独立部署的Java包,通过网络套接字相互通信)进行研究,并帮助作者实时编写更好的内容。该项目和论文是当时一个名为多代理软件工程(MaSE)的新框架的一部分。


了解MaSE


多代理软件工程(MaSE)【Multi-Agent Software Engineering】是一种软件范式,它将软件系统视为称为代理的自主(autonomous)、交互式实体的集合。MaSE中的每个代理都被设计用于执行特定任务,并具有与其他代理交互以实现复杂目标的能力。这种方法在任务是分布式的并且需要在各种软件组件之间进行协作的环境中特别有效。然而,二十年前,当没有API,没有基于NLP的交互时,这种方法还停留在学术界。有了人工智能一代,现在我们看到了这一成果。
首先,让我们定义什么是Agent以及它由什么组成。
一个简单的Agent有三个核心属性,这三个属性使它成为自包含和专用的:

  1. 自定义知识库和存储器(这是除了LLM的知识之外,它可以与LLM的信息交互以及存储和访问存储器的方式,
  2.  技能和工具——根据提供给它的自定义指令和它可以使用的工具完成专门任务的能力,最后
  3.  效应器和受体——使用自然语言和API与其他服务和代理进行对话以实现特定目标的能力。

 

A conceptual diagram of an independent, specialized agent

人工智能架构的演变


在第二代人工智能领域,当LLM流行起来时,我们看到了两个开源框架的出现——LangChain和Llamaindex,它们允许开发人员在早期从LLM来回传递信息。随着用例的发展,需要对LLM不知道的数据进行语义搜索,我们看到了以一种称为检索增强生成(RAG)的模式封装对象以与矢量数据库对话。


公平地说,LangChain一直有Agent的概念,您可以使用Tools和vector store的组合来构建自定义用例。最近,LangChain在堆栈中添加了一些内容,使该体系结构更加有用,并可用于生产。这包括LangSmith(一种调试LLM应用程序的方法)、LangServe(一种部署应用程序的方式)以及Templates(一种创建独立和专门的人工智能服务的方式),这些服务随后自动公开为API端点,使其能够轻松地与其他Templates和代理通信。


Autoagents的崛起


当你将多个专业实体(代理)结合在一起时,你现在有了一些有趣的用例,这些用例开始成为现实,例如,研究、写作、自我批评、重写和发布,类似于营销功能。如果这听起来非常类似于通用人工智能(AGI)在物理对象中的体现,例如汽车或人形机器人,你现在可以看到这些构建块是如何模块化组装以创建AGI系统的。


目前,有一些流行的框架允许用户创建代理,并让他们共同努力实现一个共同的目标。

  • AutoGPT——最初的GenAI Autoagents框架之一,您可以使用它来构建自己的代理,一旦您定义了目标,AutoGPT就可以与多个代理一起工作,进行自我提示,拥有一系列想法并完成任务。
  • SuperAGI——与AutoGPT非常相似,它允许用户也构建自己的代理。
  • 微软的Autogen:微软最近宣布的Autogen标志着另一个重要的里程碑。在Autogen中,可以在配置文件中定义代理,并通过代理进行管理,结合了人工循环方法。这使得人工智能系统更具动态性和响应能力。

Autogent Architecture from Microsoft’s Autogen Documentation

示例:
让我们看一个示例来说明如何创建代理,以及如何将它们一起用于解决特定任务。我最喜欢的是LangChain和使用私有数据的模板,因为创建者对代理具有最大的灵活性和细粒度的控制。
步骤1——安装Langchain CLI并创建新的应用程序

pip install -U langchain-cli
langchain app new my-app


步骤2-将现有模板添加到应用程序


langchain app add pirate-speak


步骤3——部署和访问API。一旦添加了模板,就可以在IDE中打开代码并进行更改以满足您的需求。最后,整个应用程序现在可供您从其他服务和应用程序调用。


从LangChain文档中的LangChain模板生成的示例API
在Autogen中,创建代理的方式看起来略有不同。您可以使用几行代码配置和创建代理。以下是Autogen文档中的一个简单示例。


来自autogen import AssistantAgent、UserProxyAgent、config_list_from_json

# Load LLM inference endpoints from an env variable or a file
# See https://microsoft.github.io/autogen/docs/FAQ#set-your-api-endpoints
# and OAI_CONFIG_LIST_sample
config_list = config_list_from_json(env_or_file="OAI_CONFIG_LIST")
# You can also set config_list directly as a list, for example, config_list =
 [{'model': 'gpt-4', 'api_key': '<your OpenAI API key here>'},]
assistant = AssistantAgent("assistant", llm_config={"config_list": config_list})
user_proxy = UserProxyAgent("user_proxy", code_execution_config={"work_dir": "coding"})
user_proxy.initiate_chat(assistant, message="Plot a chart of NVDA and 
TESLA stock price change YTD.")
# This initiates an automated chat between the two agents to solve the task


上周,开放人工智能进入了多智能体架构的世界,并提出了自己的定义和方法。他们把它命名为助理。这似乎是他们在Assistant框架中逐步构建AGI的尝试。让我们来看看这个新框架。
 

OpenAI的助手:并行开发


OpenAI的助手具有一些与代理非常相似的概念。每个助手都有线程(一次对话中有多条消息)、使用工具(自定义函数和API调用)以及存储和检索上下文和内存(检索工具)的能力。然而,在撰写本文时,他们目前缺乏API支持和跨年龄通信的能力,而跨年龄通信可能即将出现。这并不是要忽略这样一个事实,即如果您使用这些代理的SDK,则可以调用它们并通过代码执行它们。然而,这个框架令人印象深刻的是,您可以使用这个框架生成图像,也可以发送音频、文本和视频文件作为输入。


这意味着,我可以构建一个助手,它可以看到、听到和响应文本、图像、视频、声音,也可以执行操作。在我看来,我们现在正见证构建AGI应用程序的最初阶段。


比较分析:多代理与助理


当将多智能体系统与OpenAI的助手进行比较时,会出现几个关键差异:

  • 控制和目标受众:多代理系统提供更细粒度的控制,通常更适合B2B应用程序。您可以选择使用多个LLM,使用自己的数据语料库,并能够根据需要设置护栏。到目前为止,对于Assistants,它似乎是针对B2C用例的,更多的是针对希望快速构建和上市的独立开发者和初创公司。
  • 定价和可访问性:到目前为止,LangChain是开源的,但如果你使用某些企业功能,我相信这些功能将作为付费选项。您还必须构建并部署到您的基础设施,其中包括使用LLM、创建嵌入、存储矢量和数据以及最终使用计算的成本。另一方面,当涉及到检索工具时,助理的入门价格非常高。截至目前,在助理中存储和检索非结构化数据的成本为每天每GB 0.20美元。这意味着,如果我使用OpenAI使用1GB的数据,我每年将支付大约73美元!!相比之下,Dropbox账户每月3TB数据的成本约为18美元。如果OpenAI希望成为LLM使用的所有非结构化数据的存储库,则需要大幅降低定价。


OpenAI的助理定价页面截图显示检索成本为每天每GB 20美分
 

结论


软件工程中从模块到代理的演变反映了该行业对更具动态性、适应性和效率的系统的持续追求。随着人工智能的不断发展,LangChain和AutoGPT等平台上的代理集成,以及微软的Autogen和OpenAI的助手等发展,可能会重新定义我们如何与人工智能互动和利用人工智能,并朝着构建AGI系统的方向发展。

本文地址
最后修改
星期日, 三月 24, 2024 - 17:28
Article