Agent设计范式与常见框架

1. 什么是Agent

Agent指的是一个能够感知其环境并根据感知到的信息做出决策以实现特定目标的系统,通过大模型的加持,Agent比以往任何时候都要更加引人注目。

Agent的本质还是prompt engineering

2. Agent的设计范式

"Agent范式"是指在人工智能领域中,特别是在设计和开发智能代理(Autonomous agents 或简称 Agents)时所采用的不同方法和技术。智能代理是指能够在环境中感知、推理并采取行动以完成特定任务的系统。在大型语言模型(LLMs)的背景下,Agent范式通常涉及到如何利用这些模型来提升代理的规划、决策和执行能力。

目前没有一个统一的Agent设计范式,但是有一些常见的设计模式,我们这边选择吴恩达文章中提到的几种设计范式进行介绍:

  • Reflection
  • Tool use
  • Planning
  • Multi-agent collaboration

3. Agent范式一: Reflection

Reflection是指Agent能够对自己的行为和决策进行推理和分析的能力。这种能力使Agent能够更好地理解自己的行为和决策,并在未来的决策中更好地利用这些信息。

请添加图片描述

如何在工作流里面嵌入self-reflection?以一个NL2SQL的例子来说明:

第一次交互

question = ''
prompt = f'{question}'
plain_query = llm.invoke(prompt)
try:
    df = pd.read_sql(plain_query)
    print(df)
except Exception as e:
    print(e)

reflection

reflection = f"Question: {question}. Query: {plain_query}. Error:{e}, so it cannot answer the question. Write a corrected sqlite query."

第二次交互

reflection_prompt = f'{reflection}'
reflection_query = llm.invoke(reflection_prompt)
try:
    df = pd.read_sql(reflection_query )
    print(df)
except Exception as e:
    print(e)

你可以通过反思,我们可以不断改进我们的问题,直到我们得到我们想要的答案。

4. Agent范式二: Tool use

就像人类使用工具来帮助完成任务一样,Agent也可以使用工具来帮助完成任务。这种Agent范式涉及到Agent如何利用外部工具和资源来提升自己的决策和执行能力。

请添加图片描述

比如使用外置计算器或者wikipeida来解决我们的问题。

from langchain.agents import load_tools, initialize_agent
from langchain.agents import AgentType
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(temperature=0, model=llm_model)
tools = load_tools(["llm-math","wikipedia"], llm=llm)
agent= initialize_agent(
    tools, 
    llm, 
    agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,
    handle_parsing_errors=True,
    verbose = True)

5. Agent范式三: Planning

规划是Agent AI 的一个关键设计模式,我们使用大型语言模型自主决定执行哪些步骤来完成更大的任务。例如,如果我们要求Agent对给定主题进行在线研究,我们可能会使用 LLM 将目标分解为较小的子任务,例如研究特定子主题、综合研究结果和编写报告。

请添加图片描述

6. Agent范式四: Multi-agent collaboration

多智能体协作是四种关键人工智能智能体设计模式中的最后一种。对于编写软件这样的复杂任务,多智能体方法会将任务分解为由不同角色(例如软件工程师、产品经理、设计师、QA(质量保证)工程师等)执行的子任务,并让不同的智能体完成不同的子任务。

请添加图片描述

7. 其它设计范式

其它的范式设计中的主要区别是有没有把Memory单独拎出来,你可能在各种场合见到下图这种设计范式:

请添加图片描述

和吴恩达的差别在于有没有显式的提及Memory,但是这并不影响我们的理解,因为Memory是Agent的一个重要组成部分。

Memory又可以分为Short-term memory和Long-term memory,这个和人类的记忆系统有点类似。

  • Short-term memory: 就是利用上下文Context
  • Long-term memory: 就是利用外挂直属库,典型的是RAG技术

8. 高阶的Agent设计范式

8.1. ReAct

Reasoning and Action,这个设计范式是指Agent根据环境的变化做出反应。这种设计范式涉及到Agent如何根据环境的变化来调整自己的决策和行为。

请添加图片描述

8.2. Planing & Execute

请添加图片描述

两者区别

  • ReAct:走一步看一步
  • Planing & Execute 事前计划好(当然可以再根据反馈再迭代)

Planing vs. ReAct

  • Planning: Agent自主决定执行哪些步骤来完成更大的任务
  • ReAct: Agent根据环境的变化做出反应

9.多智能体协作框架

9.1. Langgraph

以Langchain为代表的Agent框架,是目前在国内最被广泛使用的开源框架,LangChain刚开始的设计理念是将工作流设计为DAG(有向无环图),这就是Chain的由来;

随着Muti-Agent理念的兴起和Agent范式的逐渐确立,Agent工作流会越来越复杂,其中包含了循环等条件,需要用Graph图的方式,由此又开发了LangGraph。

9.3. AutoGen

AutoGen从组织交流的角度设计了多智能体的协作,主要分为四种策略:

  • 两个agents
  • 顺序agents
  • Group agents
  • Nested agents

9.4. two agents

类似于两个人协作完成任务,这个是最简单的协作模式

请添加图片描述

9.5. 顺序agents

顺序Agents指的是一个任务过来,agentA去轮询其它agents,每次都带着问题和前几个人的沟通结果,最终得到解决方案.

请添加图片描述

9.6. Group agents

和一个公司或者团队类似, 一个任务过来,给到manager,manager负责分发任务给不同的agent,获得反馈,广播,并选择下一个agent。

请添加图片描述

9.7. Nested agents

Nested agents是指一个agent里面还有一个agent,这个是最复杂的协作模式。在AutoGen中,Nested agents对外暴露一个和human交流的接口,内部是一个agent的协作。

请添加图片描述

参考

[1] www.deeplearning.ai

[2] autogen

欢迎关注我的GitHub和微信公众号,来不及解释了,快上船!

GitHub: LLMForEverybody

请添加图片描述

### 关于 Agent Project Framework in Software Development 在软件开发领域,Agent 技术被广泛应用于构建复杂的分布式系统。这些系统的实现通常依赖特定的框架来简化开发过程并提高效率。以下是几个常见 agent 相关的项目框架: #### 1. **JADE (Java Agent DEvelopment Framework)** JADE 是一种基于 Java 的开源框架,用于设计和开发多代理系统(Multi-Agent Systems, MAS)。它遵循 FIPA(Foundation for Intelligent Physical Agents)标准,提供了一组丰富的工具和库以支持复杂的应用场景[^2]。 ```java // 创建一个简单的 JADE Agent 示例 import jade.core.Agent; public class MyFirstAgent extends Agent { protected void setup() { System.out.println("MyFirstAgent is ready."); } } ``` #### 2. **Jason** Jason 是另一个流行的 Multi-Agent 开发环境,专注于逻辑编程范式。它的核心理念是以 BDI(Belief-Desire-Intention)模型为基础,允许开发者通过高级抽象描述智能体的行为模式[^3]。 ```prolog % Jason 中的一个简单行为定义 +!start :- write("Agent started"), nl, plan.finished. ``` #### 3. **Apache Camel** 虽然 Apache Camel 主要是一个集成框架,但它也提供了强大的路由引擎功能,可以用来模拟消息传递型的 Agent 行为。这种灵活性使得它可以作为轻量级解决方案的一部分,在某些情况下替代传统意义上的 Agent 框架[^4]。 ```xml <!-- 配置 Apache Camel 路由 --> <route> <from uri="direct:start"/> <to uri="mock:result"/> </route> ``` #### 4. **OpenCog** OpenCog 是一个人工通用智能平台,其中包含了多种类型的认知架构组件,其中包括分布式的节点通信机制以及学习算法接口等特性。对于希望探索更深层次 AI 应用程序的研究人员来说尤其有用[^5]。 --- ### 总结 上述提到的各种框架各有侧重:如果目标是严格遵守国际标准,则可以选择像 JADE 这样的成熟产品;而对于那些倾向于理论研究或者教育用途的人群而言,采用类似 Jason 工具会更加合适一些。至于实际工程项目当中可能还会涉及到其他因素考量比如性能需求、团队技能匹配度等等都需要综合评估后再做决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值