# 智能体(Agent)
智能体（Agent）能够自主行动实现人类设定的目标，它具备学习、推理、决策和执行能力，通过任务拆分、工具知识使用、进度控制等步骤，实现目标并自主结束工作。在agentUniverse中智能体是最重要的领域组件之一，它将工具、知识、工具、计划等一系列其他领域组件组成一个整体，并最终完成人们交给它的任务。

智能体的表现直接影响了应用服务能力的强弱，在复杂的服务场景中往往需要一个或多个非常出色的智能体去完成任务。agentUniverse根据业界与学界的成果结合实际产业落地过程中的经验拥有如下对于agent的定义，见图。
![](../../../../_picture/agent.jpg)

让我们分别来介绍一下Agent组件中各个组成部分的作用。

## 全局设定（Profile）
该部分是Agent的全局设定，包含了Agent的Target、Introduction、LLM部分。

### 介绍（Introduction）
对于Agent的角色描述，例如：你是一位精通信息分析的ai助手。

### 目标（Target）
Agent需要实现的核心目标, Agent会围绕着这个目标去完成后续一系列的工作。
  
```text
设定agent的目标，需要言简意骇，描述有指向性的职责目标，能给出一个具体专精领域范围最优。

✅ 比较好的例子，如：金融领域问题解答，代码性能优化改写

❌ 不太好的例子，如：随便聊聊等无目的性的描述  
```

### 指令（Instruction）
包含了对于Agent的具体设定，如性格设定、背景知识、行为指导等。

```text
如何写好Instruction？我们可以采取如下范式：
明确的擅长的职责范围（推荐填写）+  性格设定（按需填写） + 背景知识（按需填写）+ 用户输入格式（按需填写）+ 行为指导（推荐填写） +  agent输出格式（按需填写） +  实际的例子-fewshot（推荐填写）

根据上述范式定义有如下举例：
✅ 比较好的例子，如：
你擅长回答各类生活中遇见的专业问题与闲聊，你尤为擅长回答金融类问题【明确的擅长的职责范围】。
你的性格开朗活泼【性格设定】。
Jerry平日里对于财经类新闻特别感兴趣，同时比较关注宏观层面的政策【背景知识】。
Jerry会用自然语言的形式与你进行问答交流【用户输入格式】。
请你按照如下原则进行回答，对于专业类型的问题请优先使用知识检索工具进行汇总与回答，请严肃对待专业问题，若无法得出有把握的结论请如实告诉Jerry【行为指导】。
请你用自然语言的形式输出你的回答【agent输出格式】。
下面是一个与Jerry交流的实际例子：Jerry问如何看待 2023年12月宏观数据? 回答：CPI环比由降转涨，同比降幅收窄12月份，受寒潮天气及节前消费需求增加等因素影响，CPI环比由降转涨，同比降幅收窄；扣除食品和能源价格的核心CPI同比上涨0.6%，涨幅保持稳定。PPI环比下降，同比降幅收窄12月份，受国际油价继续下行、部分工业品需求不足等因素影响，全国PPI环比下降，同比降幅收窄。【实际的例子-fewshot】
（【】符号中的文字为说明，实际填写不需要提示）。

❌ 不太好的例子，如：
你善于针对不同人群给出各类健身计划（给出的信息太少，给出的结果不确定性高，会比较泛泛而谈，往往不符合实际诉求） 
```

### 模型（LLM）
智能体(Agent)使用的LLM。agentUniverse提供了大量已有的LLM组件与标准的LLM自定义方式，您可以选择使用或定义自己要使用的LLM。我们会在LLM章节中具体说明他们如何工作。

## 计划（Planning）
该部分将影响实际Agent工作时的协作与执行策略，它承载了pattern的协作与执行思想，Planning将包含多种类型，例如让Agent遵从完全由人工编排的工作流程（workflow）、遵从某一个标准作业流程（SOP）、或使用某些特定模式的工作方式如检索增强模式（RAG）、或让智能体完全自主工作(Auto)。当然Planning不单单可以影响单个智能体工作时的执行策略，也可以在计划中连接任何其他的智能体。例如PEER就是典型的多智能体协作模式，我们将在其他篇幅中重点介绍这一有趣的协作模式。

## 动作（Action）
该部分主要包含了工具与知识。如同人类使用工具与知识完成任务一样，智能体在执行复杂任务的过程中需要额外挂载工具与知识输入，这将在增强智能体在特定领域下的表现。

### 工具（Tool）
可供Agent使用的工具。agentUniverse提供了大量已有的Tool组件与标准的Tool自定义方式，您可以选择使用或定义自己要使用的Tool，并且通过配置加载至Agent中去。结合agentUniverse底层所提供的技术组件，如HTTP、GRPC等能力这意味着能够将目前任何第三方的服务、企业内部的已有服务、或本地函数进行工具注册。我们会在Tool章节中具体说明他们如何工作。

### 知识（Knowledge）
可供Agent使用的知识。agentUniverse提供了大量已有的Knowledge组件与标准的Knowledge自定义方式，您可以选择使用或定义自己要使用的Knowledge，并且通过配置加载至Agent中去。同时agentUniverse支持了对于底层存储技术中间件的扩展接入，如SqlLite、Chroma等存储选型，这意味着您可以将任何存储介质中的数据进行接入。我们会在Knowledge章节中具体说明他们如何工作。

## 记忆（Memory）
可供Agent使用的记忆。agentUniverse提供了标准可选的记忆类型，大部分情况下用户无需关注记忆的具体实现，记忆组件也提供了用户自己定制的能力。我们会在Memory章节中具体说明他们如何工作。

# 总结
至此您已经全面了解了Agent的组成部分与原理，在下一节我们将具体向您介绍Agent组件的标准定义、如何自定义一个Agent、如何使用Agent等。