Skip to content

Commit 95893d5

Browse files
authored
docs: add markdown docs for xagent1.0, generated by our RepoAgent (#367)
docs: add markdown docs for xagent1.0
1 parent ea70ee3 commit 95893d5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+17985
-0
lines changed

.project_hierarchy.json

Lines changed: 8776 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
***

Markdown_Docs/XAgent/agent/base_agent.md

Lines changed: 357 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,211 @@
1+
# ClassDef AgentDispatcher
2+
**AgentDispatcher函数**: 这个类的功能是Agent调度器,是一个抽象基类。
3+
4+
Agent调度器是一个用于调度任务的基类,它负责根据任务的需求类型将任务分配给相应的Agent。Agent调度器维护了一个代理市场(agent_markets),其中包含了各种能力类型所对应的代理。它还提供了一些方法用于注册代理、分配角色以及构建代理。
5+
6+
AgentDispatcher类的构造函数初始化了代理市场(agent_markets)和日志记录器(logger)。代理市场是一个字典,其中的键是需求类型(RequiredAbilities),值是一个代理列表,用于存储具有相应能力的代理。日志记录器用于记录构造AgentDispatcher对象的日志。
7+
8+
AgentDispatcher类还定义了一个抽象方法dispatch,用于根据任务的需求类型分派任务给相应的代理。具体的分派逻辑由子类实现。此外,AgentDispatcher类还提供了dispatch_role方法用于分派角色,regist_agent方法用于注册代理。
9+
10+
AgentDispatcher的子类AutomaticAgentDispatcher和XAgentDispatcher分别实现了dispatch方法。AutomaticAgentDispatcher类是一个自动调度器,它根据任务的需求类型自动将任务分派给代理市场中相应能力的代理。XAgentDispatcher类是一个特定的Agent调度器,它根据任务的需求类型构建代理,并对任务的提示进行细化。
11+
12+
**注意**: 在使用AgentDispatcher类时,需要注意以下几点:
13+
- AgentDispatcher是一个抽象基类,不能直接实例化,需要通过继承它的子类来使用。
14+
- 子类需要实现dispatch方法,根据任务的需求类型来具体实现任务的分派逻辑。
15+
- 在使用regist_agent方法注册代理时,需要确保代理具有相应的能力。
16+
17+
**输出示例**:
18+
```
19+
# 创建AgentDispatcher对象
20+
dispatcher = AgentDispatcher(logger)
21+
22+
# 注册代理
23+
dispatcher.regist_agent(agent1)
24+
dispatcher.regist_agent(agent2)
25+
26+
# 分派任务
27+
agent = dispatcher.dispatch(RequiredAbilities.plan_generation, target_task)
28+
```
29+
## FunctionDef dispatch_role
30+
**dispatch_role函数**:这个函数的作用是为目标任务分派一个角色。
31+
32+
详细代码分析和描述:
33+
这个函数接受一个名为target_task的参数,它是一个TaskSaveItem类型的对象,表示需要分派角色的任务。在函数体内部,它返回一个默认的AgentRole对象。
34+
35+
**注意**:使用这段代码时需要注意以下几点:
36+
- 这个函数的返回值是一个AgentRole对象。
37+
38+
**输出示例**:模拟代码返回值的可能外观。
39+
```
40+
AgentRole()
41+
```
42+
## FunctionDef regist_agent
43+
**regist_agent函数**:该函数的功能是将代理注册到相应的代理市场中,根据其能力。
44+
45+
该函数接受一个参数agent,代表需要注册的代理。函数首先遍历所有的RequiredAbilities,如果某个ability在agent的abilities列表中,就将该agent添加到对应ability的代理市场中。
46+
47+
**注意**:使用该代码时需要注意以下几点:
48+
- 参数agent必须是BaseAgent的实例。
49+
- agent的abilities属性必须包含所有的RequiredAbilities中的某个ability,否则该agent不会被注册到代理市场中。
50+
***
51+
# ClassDef AutomaticAgentDispatcher
52+
**AutomaticAgentDispatcher函数**: 这个类的功能是自动将任务分派给代理。
53+
54+
AutomaticAgentDispatcher是AgentDispatcher的子类,它负责自动将任务分派给代理。它具有一个dispatch方法,该方法根据任务的能力类型将任务分派给市场中对应的代理。
55+
56+
**dispatch方法**:
57+
这个方法接受两个参数,ability_type和target_task。ability_type是任务所需的能力类型,target_task是需要分派的任务。该方法返回一个BaseAgent对象,该对象负责执行任务。
58+
59+
参数:
60+
- ability_type (RequiredAbilities): 任务所需的能力类型。
61+
- target_task: 需要分派的任务。
62+
63+
返回值:
64+
- BaseAgent: 负责执行任务的BaseAgent对象。
65+
66+
**注意**:
67+
- AutomaticAgentDispatcher类继承自AgentDispatcher类,因此它可以使用AgentDispatcher类中的方法和属性。
68+
- dispatch方法根据任务的能力类型从agent_markets中选择一个代理,并返回该代理的实例。
69+
70+
**输出示例**:
71+
假设agent_markets中的ability_type为RequiredAbilities.ABILITY1,那么dispatch方法将返回agent_markets[ability_type][0]()的实例。
72+
***
73+
# ClassDef XAgentDispatcher
74+
**XAgentDispatcher函数**:这个类的功能是生成给定任务的提示和代理。
75+
76+
XAgentDispatcher是AgentDispatcher的子类,用于生成给定任务的提示和代理。它包含了初始化函数、获取示例函数、构建代理函数和调度函数。
77+
78+
**初始化函数**
79+
- `__init__(self, config, enable=True, logger=None)`:初始化XAgentDispatcher对象。
80+
- 参数:
81+
- `config`:调度器的配置。
82+
- `enable`(可选):调度器是否激活,默认为True。
83+
- `logger`(可选):日志记录器对象。
84+
- 功能:初始化XAgentDispatcher对象。
85+
86+
**获取示例函数**
87+
- `get_examples(self, ability_type: RequiredAbilities)`:根据能力类型获取示例。
88+
- 参数:
89+
- `ability_type`:需要示例的能力类型。
90+
- 返回值:调度器的示例。
91+
- 功能:根据能力类型获取示例。
92+
93+
**构建代理函数**
94+
- `build_agent(self, ability_type: RequiredAbilities, config, prompt_messages: List[Message], *args, **kwargs) -> BaseAgent`:根据能力类型构建代理。
95+
- 参数:
96+
- `ability_type`:代理所需的能力类型。
97+
- `config`:代理的配置。
98+
- `prompt_messages`:代理的提示消息列表。
99+
- `*args`:其他参数。
100+
- `**kwargs`:其他关键字参数。
101+
- 返回值:构建的代理对象。
102+
- 功能:根据能力类型构建代理对象。如果构建失败,则使用默认代理。
103+
104+
**调度函数**
105+
- `dispatch(self, ability_type: RequiredAbilities, target_task: TaskSaveItem, *args, **kwargs) -> BaseAgent`:将任务调度给与任务能力类型对应的代理。
106+
- 参数:
107+
- `ability_type`:任务所需的能力类型。
108+
- `target_task`:需要调度的任务。
109+
- `*args`:其他参数。
110+
- `**kwargs`:其他关键字参数。
111+
- 返回值:负责该任务的基础代理对象。
112+
- 功能:将任务调度给与任务能力类型对应的代理。此外,还会对任务的提示进行优化,并构建代理对象。
113+
114+
**注意**:在使用该代码时需要注意以下几点:
115+
- 需要提供调度器的配置。
116+
- 可以选择是否激活调度器。
117+
- 可以通过注册代理来扩展调度器的功能。
118+
119+
**输出示例**
120+
```python
121+
dispatcher = XAgentDispatcher(config, enable=True, logger=logger)
122+
examples = dispatcher.get_examples(RequiredAbilities.plan_generation)
123+
agent = dispatcher.build_agent(RequiredAbilities.plan_generation, config, prompt_messages, *args, **kwargs)
124+
result = dispatcher.dispatch(RequiredAbilities.plan_generation, target_task, *args, **kwargs)
125+
```
126+
## FunctionDef __init__
127+
**__init__函数**:这个函数的功能是初始化XAgentDispatcher。
128+
129+
在这个函数中,有以下参数:
130+
- config:Dispatcher的配置。
131+
- enable(可选参数):指示Dispatcher是否处于活动状态,默认为True。
132+
133+
在函数内部,首先将传入的logger赋值给self.logger。然后调用父类的__init__函数,将logger作为参数传入。接着将传入的config赋值给self.config。然后创建一个DispatcherAgent对象,并将config作为参数传入,将该对象赋值给self.dispatcher。最后将enable赋值给self.enable。
134+
135+
**注意**:关于代码使用的注意事项
136+
## FunctionDef get_examples
137+
**get_examples函数**:该函数的功能是根据能力类型获取示例。
138+
139+
该函数根据传入的能力类型参数,返回对应能力类型的示例。示例的获取方式是通过根据能力类型导入相应的模块,并调用该模块中的get_examples_for_dispatcher函数来获取示例。
140+
141+
参数:
142+
- ability_type (RequiredAbilities):需要示例的能力类型。
143+
144+
返回值:
145+
- 返回dispatcher的示例。
146+
147+
调用情况:
148+
该函数在以下文件中被调用:
149+
文件路径:XAgent/agent/dispatcher.py
150+
调用代码如下:
151+
```python
152+
example_input, example_system_prompt, example_user_prompt = self.get_examples(
153+
ability_type
154+
)
155+
```
156+
157+
代码分析和描述:
158+
该函数根据传入的ability_type参数,通过判断ability_type的值,来决定导入哪个模块并调用对应模块中的get_examples_for_dispatcher函数。根据不同的ability_type值,分别导入plan_generate_agent、plan_refine_agent、tool_agent和reflect_agent模块,并调用这些模块中的get_examples_for_dispatcher函数。最后,返回get_examples_for_dispatcher函数的返回值。
159+
160+
注意事项:
161+
- 该函数依赖于其他模块中的get_examples_for_dispatcher函数,需要确保这些函数的正确性和可用性。
162+
163+
输出示例:
164+
假设ability_type为RequiredAbilities.plan_generation,那么根据该ability_type的值,将导入plan_generate_agent模块,并调用该模块中的get_examples_for_dispatcher函数。假设get_examples_for_dispatcher函数返回的示例为example,那么函数的返回值将为example。
165+
## FunctionDef build_agent
166+
**build_agent函数**:该函数的功能是根据所需的能力类型构建代理。如果失败,则回退到使用默认代理。
167+
168+
该函数接受以下参数:
169+
- ability_type(RequiredAbilities):代理所需的能力类型。
170+
- config:代理的配置。
171+
- prompt_messages(List[Message]):代理的提示消息列表。
172+
173+
该函数返回一个BaseAgent对象,表示构建的代理。
174+
175+
该函数首先尝试使用ability_type从agent_markets字典中获取相应的代理类,并使用config、prompt_messages以及其他参数构建代理对象。如果构建失败,则捕获异常,并使用默认代理类再次尝试构建代理对象。
176+
177+
在代码中,该函数被以下文件调用:
178+
文件路径:XAgent/agent/dispatcher.py
179+
调用代码如下:
180+
```
181+
agent = self.build_agent(ability_type, self.config, prompt_messages, *args, **kwargs)
182+
```
183+
184+
**注意**:在构建代理对象时,如果能力类型对应的代理类无法创建,则会使用默认代理类进行构建。
185+
186+
**输出示例**:假设能力类型为RequiredAbilities.A,config为{"param1": "value1"},prompt_messages为[Message(role="system", content="System prompt"), Message(role="user", content="User prompt")],则函数可能返回一个BaseAgent对象。
187+
## FunctionDef dispatch
188+
**dispatch函数**:此函数的功能是将任务分派给与任务能力类型相对应的市场中的代理,并对任务进行进一步的提示细化和代理构建。
189+
190+
此函数接受以下参数:
191+
- ability_type (RequiredAbilities):任务所需的能力类型。
192+
- target_task (TaskSaveItem):需要分派的任务。
193+
- *args:可变长度的位置参数。
194+
- **kwargs:可变长度的关键字参数。
195+
196+
该函数的返回值为BaseAgent对象,表示负责该任务的基础代理。
197+
198+
该函数首先调用get_examples方法获取示例输入、示例系统提示和示例用户提示。然后,如果启用了分派器(enable为True),将使用dispatcher对象的parse方法对目标任务、示例输入、示例系统提示和示例用户提示进行解析,获取解析后的提示信息。如果解析后的提示信息的内容为空,则表示分派器无法遵循输出格式,将使用默认提示。否则,将提示信息作为参数,调用build_agent方法构建代理对象。最后,返回构建的代理对象。
199+
200+
**注意**:在调用dispatch函数之前,需要确保已经调用了get_examples方法获取示例输入、示例系统提示和示例用户提示。
201+
202+
**输出示例**
203+
```
204+
agent = agent_dispatcher.dispatch(RequiredAbilities.plan_generation, target_task="Generate a plan to accomplish the task: {self.query.task}")
205+
print(agent)
206+
```
207+
输出:
208+
```
209+
<agent.dispatcher_agent.agent.Agent object at 0x7f8a0b1f5a90>
210+
```
211+
***
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
***
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# ClassDef PlanGenerateAgent
2+
**PlanGenerateAgent函数**: 这个类的功能是生成计划。它是BaseAgent的子类。
3+
4+
该类具有以下属性:
5+
- abilities: 一个集合,表示该Agent所需的能力。
6+
7+
该类具有以下方法:
8+
- parse: 解析占位符、参数、函数调用和附加消息,生成计划。
9+
10+
**parse方法**:
11+
该方法用于解析占位符、参数、函数调用和附加消息,以生成计划。
12+
13+
参数:
14+
- placeholders (dict, optional): 包含要填充到消息中的占位符的字典。
15+
- arguments (dict, optional): 包含要在函数中使用的参数的字典。
16+
- functions: 用于计划生成的函数。
17+
- function_call: 表示函数调用的对象。
18+
- stop: 如果指定了条件,则停止计划生成过程。
19+
- additional_messages (List[Message], optional): 要添加到初始提示消息中的附加消息。
20+
- *args: 可变长度参数列表。
21+
- **kwargs: 任意关键字参数。
22+
23+
返回值:
24+
该方法返回由"generate"方法生成的计划的结果。
25+
26+
**注意**:
27+
- 该类继承自BaseAgent类,因此可以使用BaseAgent类中的方法和属性。
28+
- 该类的abilities属性指示了该Agent所需的能力。
29+
- parse方法用于解析占位符、参数、函数调用和附加消息,生成计划。
30+
- parse方法返回计划生成方法"generate"的结果。
31+
32+
**输出示例**:
33+
```
34+
# 创建PlanGenerateAgent对象
35+
agent = PlanGenerateAgent()
36+
37+
# 解析占位符、参数、函数调用和附加消息,生成计划
38+
plan = agent.parse(
39+
placeholders={"placeholder1": "value1", "placeholder2": "value2"},
40+
arguments={"arg1": "value1", "arg2": "value2"},
41+
functions=[function1, function2],
42+
function_call=function_call,
43+
stop=stop_condition,
44+
additional_messages=[message1, message2]
45+
)
46+
47+
# 打印计划结果
48+
print(plan)
49+
```
50+
51+
**注意**:
52+
- 在使用PlanGenerateAgent类时,可以通过设置placeholders、arguments、functions、function_call、stop和additional_messages等参数来定制计划生成的过程。
53+
- 可以根据具体需求对parse方法进行定制,以生成符合预期的计划。
54+
## FunctionDef parse
55+
**parse函数**:该函数的作用是解析占位符、参数、函数调用和附加消息,生成一个计划。
56+
57+
该函数接受以下参数:
58+
- placeholders(可选):一个包含要填充到消息中的占位符的字典。
59+
- arguments(可选):一个包含要在函数中使用的参数的字典。
60+
- functions:用于计划生成过程中使用的函数。
61+
- function_call:表示函数调用的对象。
62+
- stop:如果指定了条件,则停止计划生成过程。
63+
- additional_messages(可选):要添加到初始提示消息中的附加消息的列表。
64+
- *args:可变长度参数列表。
65+
- **kwargs:任意关键字参数。
66+
67+
该函数首先使用fill_in_placeholders方法填充占位符,然后将填充后的消息与附加消息合并。最后,调用generate方法生成计划,并返回计划的结果。
68+
69+
**注意**:使用该代码的注意事项。
70+
71+
**输出示例**:模拟代码返回值的可能外观。
72+
***
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# FunctionDef get_examples_for_dispatcher
2+
**get_examples_for_dispatcher函数**:该函数的功能是为调度器生成提示提供示例。
3+
4+
该函数返回三个值,分别是example_input、example_system_prompt和example_user_prompt。其中,example_input是用户查询或任务的示例输入,example_system_prompt是系统提示的示例,example_user_prompt是用户提示的示例。
5+
6+
该函数在以下文件中被调用:
7+
- XAgent/agent/dispatcher.py
8+
- XAgent/agent/plan_refine_agent/prompt.py
9+
- XAgent/agent/reflect_agent/prompt.py
10+
- XAgent/agent/tool_agent/prompt.py
11+
12+
在XAgent/agent/dispatcher.py文件中,get_examples_for_dispatcher函数根据传入的ability_type参数选择不同的模块,并调用相应模块中的get_examples_for_dispatcher函数。
13+
14+
在XAgent/agent/plan_refine_agent/prompt.py文件中,get_examples_for_dispatcher函数返回了一个用于计划细化的示例。
15+
16+
在XAgent/agent/reflect_agent/prompt.py文件中,get_examples_for_dispatcher函数返回了一个用于反思的示例。
17+
18+
在XAgent/agent/tool_agent/prompt.py文件中,get_examples_for_dispatcher函数返回了一个用于工具树搜索的示例。
19+
20+
**注意**:使用该代码时需要注意以下几点:
21+
- 该函数需要在调用之前导入相应的模块。
22+
- 该函数返回的示例可以作为调度器生成提示的输入。
23+
24+
**输出示例**
25+
```
26+
example_input = "Generate a plan for writing a Python-based calculator."
27+
example_system_prompt = SYSTEM_PROMPT
28+
example_user_prompt = USER_PROMPT
29+
```
30+
***
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
***
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# ClassDef PlanRefineAgent
2+
**PlanRefineAgent功能**:PlanRefineAgent是PlanGenerateAgent的子类,用于对计划进行细化。
3+
4+
该类利用计划细化的必要能力来解析信息并生成细化的计划。它包含占位符作为所需的表达式。
5+
6+
**属性**
7+
- abilities:Agent所需的一组必要能力。对于PlanRefineAgent,它包括计划细化。
8+
9+
**方法**
10+
- parse方法:解析信息以便细化现有计划。
11+
12+
该方法使用相应的表达式填充占位符,然后处理和合并提示和附加消息到最终消息中。最后,调用PlanGenerateAgent类的'generate'方法生成最终消息。
13+
14+
参数:
15+
- placeholders(可选):要填充部分完成的文本片段的所需表达式。
16+
- arguments(可选):函数的参数。
17+
- functions(可选):要执行的函数。
18+
- function_call(可选):用户的功能请求。
19+
- stop(可选):在某个特定点停止解析。
20+
- additional_messages(可选):要包含在最终消息中的附加消息列表。
21+
- additional_insert_index(可选):附加消息应插入到提示消息中的索引位置。
22+
- *args:可变长度参数列表。
23+
- **kwargs:任意关键字参数。
24+
25+
返回值:
26+
- object:从提供的占位符、参数、函数和消息生成的细化计划。
27+
28+
**注意**:使用该代码的注意事项
29+
30+
**输出示例**:模拟代码返回值的可能外观。
31+
## FunctionDef parse
32+
**parse函数**:该函数的作用是解析信息以便完善现有的计划。
33+
34+
该方法将占位符填充为相应的表达式,然后处理提示和附加消息,并将它们汇总为最终消息。最后,将在最终消息上调用PlanGenerateAgent类的'generate'方法。
35+
36+
参数:
37+
- placeholders(字典,可选):要填充部分完成的文本片段的期望表达式。
38+
- arguments(字典,可选):函数的参数。
39+
- functions(可选):要执行的函数。
40+
- function_call(可选):用户的功能请求。
41+
- stop(可选):在某个特定点停止解析。
42+
- additional_messages(List[Message],可选):要包含在最终消息中的附加消息。
43+
- additional_insert_index(int,可选):附加消息应插入到提示消息中的索引。
44+
- *args:可变长度参数列表。
45+
- **kwargs:任意关键字参数。
46+
47+
返回值:
48+
- object:从提供的占位符、参数、函数和消息生成的完善计划。
49+
50+
**注意**:关于代码使用的注意事项
51+
52+
**输出示例**:模拟代码返回值的可能外观。
53+
***
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# FunctionDef get_examples_for_dispatcher
2+
**get_examples_for_dispatcher函数**:该函数的功能是为调度器提供示例。
3+
4+
该函数返回三个变量,分别是example_input、example_system_prompt和example_user_prompt。其中example_input是用户查询或任务的示例输入,example_system_prompt是系统提示的示例,example_user_prompt是用户提示的示例。
5+
6+
该函数没有任何参数。
7+
8+
**注意**:无
9+
10+
**输出示例**
11+
```
12+
示例输入:Refine a plan for writing a Python-based calculator.
13+
示例系统提示:系统提示
14+
示例用户提示:用户提示
15+
```
16+
***

0 commit comments

Comments
 (0)