Agent K: 自动化的AI智能体,AGI的未来?

文摘   2024-08-18 08:09   中国香港  

TLDR:创造出能够像人类一样思考、学习和解决问题的机器,一直是人工智能 (AI) 领域的终极目标,我们称之为通用人工智能(AGI)。本文介绍了 Agent K,一个由协作智能体组成的自进化 AGI 系统,旨在通过自动创建新的智能体和工具来完成用户交付的任务,其核心特点是模块化、可扩展和自我修复,为 AGI 的发展指明了新的方向。

Agent K:迈向AGI的新路径

不同于依赖庞大、单一模型的传统 AI 系统,Agent K 另辟蹊径,它由多个协作智能体组成,每个智能体都拥有其专业知识和能力。这种模块化的架构赋予了 Agent K 强大的可扩展性和适应性,使其能够随着时间的推移不断学习和进化。

模块化和可扩展的架构

想象一下,一个由许多专家组成的团队,每个专家都精通各自的领域。当面对复杂的任务时,他们可以协同合作,共同找到最佳解决方案。Agent K 正是基于这种理念构建的。

每个智能体都是一个独立的单元,可以独立开发和测试,然后与其他智能体集成以完成更复杂的任务。这种模块化的设计带来了以下优势:

  • • 可扩展性: 可以轻松地添加新的智能体和工具,而无需对核心系统进行重大更改。

  • • 可维护性: 由于每个智能体都有特定的职责,因此更容易识别和修复错误或进行改进。

  • • 可理解性: 模块化设计使 Agent K 的内部工作机制更容易被理解,这对于构建信任和确保负责任的 AI 开发至关重要。

自测试和自我修复

在软件开发领域,我们都知道测试的重要性。测试可以帮助我们发现和修复代码中的错误,确保软件的质量和稳定性。但是,对于 AGI 系统来说,测试的意义远不止于此。

Agent K 被鼓励为自己编写测试,这在 AGI 开发中是一个新颖且重要的概念。通过自动检测和修复错误,Agent K 可以减少对人工干预的依赖,并提高其可靠性和鲁棒性。这种自我修复能力对于在现实世界中部署 AGI 至关重要,在现实世界中,系统需要能够在没有持续人工监督的情况下自主运行。

Agent K 的 Demo 展示

以下内容展示了 Agent K 如何与用户交互并完成任务的示例:

用户输入:

fetch a quote of the day from the web

Agent K 输出:

Understood. Our goal is to fetch a quote of the day from the web.

Here's the plan:

1. Assign the `web_researcher` agent the task of finding a reliable source for a quote of the day.
2. Once the source is identified, have the `web_researcher` fetch the current quote of the day from that source.

I'll start by assigning the `web_researcher` to find a reliable source for a quote of the day.

... (Agent K 执行任务的过程) ...

Here is the quote of the day from Best Life Online:

"The only person you are destined to become is the person you decide to be." — Ralph Waldo Emerson

If you need more positive quotes, feel free to check out the full article [here](https://bestlifeonline.com/positive-quotes/).

Agent K 如何工作?

Agent K 的工作流程可以概括为以下几个步骤:

  1. 1. 接收用户请求: Agent K 的协调器 "Hermes" 接收用户的请求,例如从网络上获取一条当天的名言。

  2. 2. 理解目标并制定计划: "Hermes" 分析用户的请求,理解其目标,并制定一个计划来实现目标。例如,为了获取当天的名言,"Hermes" 制定的计划可能包括:寻找可靠来源和获取名言两个步骤。

  3. 3. 分配任务给其他智能体: "Hermes" 根据计划将任务分配给其他智能体。例如,"Hermes" 会将寻找可靠来源的任务分配给 "WebResearcher" 智能体,将从可靠来源获取名言的任务分配给其他合适的智能体 (如果需要)。

  4. 4. 智能体协作执行任务: 被分配任务的智能体会根据其核心 prompt 执行相应的操作。例如,"WebResearcher" 会使用网络搜索引擎查找可靠的 "quote of the day" 来源,并返回结果给 "Hermes"。

  5. 5. 返回结果给用户: "Hermes" 收集所有智能体执行任务的结果,并将最终结果返回给用户。

Agent K的核心智能体

Agent K 的内核包含四个关键智能体:

  • • Hermes: 协调器,负责与用户交互,理解目标,制定计划,分配任务并协调其他智能体的活动。

    # agents/hermes.py

    # ... (省略导入语句) ...

    system_prompt = f"""You are Hermes, a ReAct agent that achieves goals for the user.

    # ... (省略Agent K 架构说明) ...

    You interact with a user in this specific order:
    1. Reach a shared understanding on a goal.
    2. Think of a detailed sequential plan for how to achieve the goal through the orchestration of agents.
    3. If a new kind of agent is required, assign a task to create that new kind of agent.
    4. Assign agents and coordinate their activity based on your plan.
    4. Respond to the user once the goal is achieved or if you need their input.

    # ... (省略其他代码) ...

    def reasoning(state: MessagesState):
        print()
        print("hermes is thinking...")
        messages = state['messages']
        tooled_up_model = config.default_langchain_model.bind_tools(tools)
        response = tooled_up_model.invoke(messages)
        return {"messages": [response]}

    def check_for_tool_calls(state: MessagesState) -> Literal["tools", "feedback_and_wait_on_human_input"]:
        messages = state['messages']
        last_message = messages[-1]
        
        if last_message.tool_calls:
            # ... (省略部分代码) ...
        else:
            return "feedback_and_wait_on_human_input"

    # ... (省略其他代码) ...
  • • AgentSmith: 架构师,负责设计、创建和维护其他智能体,根据任务需求打造出最合适的工具。

    # agents/agent_smith.py
    # ... (省略导入语句) ...
        
    system_prompt = f"""You are agent_smith, a ReAct agent that develops other ReAct agents.
    # ... (省略智能体描述) ...

    def reasoning(state: MessagesState):
        print()
        print("agent_smith is thinking...")
        messages = state['messages']
        tooled_up_model = config.default_langchain_model.bind_tools(tools)
        response = tooled_up_model.invoke(messages)
        return {"messages": [response]}

    def check_for_tool_calls(state: MessagesState) -> Literal["tools", END]:
        messages = state['messages']
        last_message = messages[-1]
        
        if last_message.tool_calls:
            # ... (省略部分代码) ...
        
        return END

    # ... (省略其他代码) ...
  • • ToolMaker: 工具开发者,负责创建和改进智能体执行任务所需的工具。

    # agents/tool_maker.py
    # ... (省略导入语句) ...
        
    system_prompt = """You are tool_maker, a ReAct agent that develops LangChain tools for other agents.
    # ... (省略智能体描述) ...

    def reasoning(state: MessagesState):
        print()
        print("tool_maker is thinking...")
        messages = state['messages']
        tooled_up_model = config.default_langchain_model.bind_tools(tools)
        response = tooled_up_model.invoke(messages)
        return {"messages": [response]}

    def check_for_tool_calls(state: MessagesState) -> Literal["tools", END]:
        messages = state['messages']
        last_message = messages[-1]
        
        if last_message.tool_calls:
            # ... (省略部分代码) ...
        
        return END

    # ... (省略其他代码) ...
  • • WebResearcher: 知识收集器,负责使用网络搜索信息,并将其转化为 Agent K 可以理解和利用的知识。

    # agents/web_researcher.py
    # ... (省略导入语句) ...

    system_prompt = """You are web_researcher, a ReAct agent that can use the web to research answers.
    # ... (省略智能体描述) ...
    """

        
    # ... (省略其他代码) ...
    def reasoning(state: MessagesState):
        print("web_researcher is thinking...")
        messages = state['messages']
        tooled_up_model = config.default_langchain_model.bind_tools(tools)
        response = tooled_up_model.invoke(messages)
        return {"messages": [response]}

    def check_for_tool_calls(state: MessagesState) -> Literal["tools", END]:
        messages = state['messages']
        last_message = messages[-1]
        
        if last_message.tool_calls:
           # ... (省略部分代码) ...
        
        return END

    # ... (省略其他代码) ...

挑战和未来方向

Agent K代表了AGI发展的新方向。通过其模块化、可扩展和自我修复的架构,Agent K有潜力克服传统AI系统的局限性,并为实现真正通用的AGI铺平道路。

尽管Agent K已经展现出巨大的潜力,但它仍然处于发展的早期阶段。在通往AGI的道路上,Agent K还需要克服许多挑战,例如:

  • • 提高智能体之间的协作效率。 如何让不同的智能体更高效地协同工作,是Agent K面临的一个重要挑战。

  • • 开发更强大的自学习和推理能力。 为了实现AGI,Agent K需要具备更强的学习和推理能力,才能真正像人类一样思考和解决问题。

  • • 解决与AGI相关的伦理和安全问题。 AGI的发展也引发了人们对于伦理和安全的担忧。Agent K需要在设计之初就考虑到这些问题,并采取相应的措施。

Agent K是一个令人兴奋的项目,它为AGI的发展提供了新的视角。通过其独特的架构和对自测试和自我修复的关注,Agent K有可能彻底改变我们与AI互动的方式,并预示着智能自动化新时代的到来。

相关链接

  • • Agent K GitHub仓库: https://github.com/NicerInPerson/Agent-K

  • • LangGraph官方网站: https://smith.langchain.com/

子非AI
子非AI,焉知AI之乐:分享AI的有趣应用和创新案例,让你了解AI的乐趣。
 最新文章