@@ -46,10 +46,10 @@ agent = Agent(llm=llm,
46
46
47
47
``` python
48
48
from course_graph.agent import Controller
49
- controller = Controller(max_turns = 10 )
49
+ controller = Controller()
50
50
```
51
51
52
- ` Controller ` 负责启动 ` Agent ` 并为 ` Agent ` 提供上下文、具体执行外部工具等功能, ` max_turns ` 参数代表运行最大轮数 。
52
+ ` Controller ` 负责启动 ` Agent ` 并为 ` Agent ` 提供上下文、具体执行外部工具等功能。
53
53
54
54
## 启动智能体
55
55
@@ -59,7 +59,7 @@ resp = controller.run_sync(agent=translator, message="请帮我翻译蛋白质
59
59
60
60
其中 ` message ` 参数代表用户的具体指令或者是用户与智能体对话的开始。
61
61
62
- ` controller.run_sync ` 方法返回一个 ` ControllerResponse ` 对象, 其中 ` agent ` 代表最后响应的 ` Agent ` 对象 (暂时还用不到) , ` message ` 代表智能体最后的相应内容, ` turns ` 代表智能体运行的轮数 。
62
+ ` controller.run_sync ` 方法返回一个 ` ControllerResponse ` 对象, 其中 ` agent ` 代表最后响应的 ` Agent ` 对象, ` message ` 代表智能体最后的相应内容。
63
63
64
64
## 使用外部工具
65
65
@@ -374,24 +374,23 @@ controller = Controller(trace_callback=pprint)
374
374
该回调函数需要接受一个 ` TraceEvent ` 类型的参数, 其中事件类型包括:
375
375
376
376
- ` USER_MESSAGE ` : 用户消息
377
+ - ` AGENT_THINK ` : 智能体思考过程
377
378
- ` AGENT_MESSAGE ` : 智能体消息
378
379
- ` AGENT_SWITCH ` : 智能体切换
379
380
- ` TOOL_CALL ` : 工具调用
380
381
- ` TOOL_RESULT ` : 工具调用结果
381
382
- ` CONTEXT_UPDATE ` : 上下文变量更新
382
383
- ` MCP_TOOL_CALL ` : MCP 工具调用
383
384
384
- ## 多智能协作
385
+ ## 多智能体协作
385
386
386
- 除了让智能体使用 <a href =' #transfer-function ' >转移函数</a > 自行决定接下来被激活的智能体外 ,也提供了一些固定的协作范式,称之为团队。
387
+ 除了手动编写协作流程或让智能体使用 <a href =' #transfer-function ' >转移函数</a > 自行决定切换外 ,也提供了一些固定的协作范式,称之为团队。
387
388
388
389
### 团队
389
390
390
- 以 ` RoundTeam ` 为例,团队中每个 ` Agent ` 对象会依次被激活,所有 ` Agent ` 以广播的方式共享相同的上下文。
391
-
392
391
#### 创建团队
393
392
394
- 直接使用 ` RoundTeam ` 类创建一个团队:
393
+ 以 ` RoundTeam ` 为例, 直接使用 ` RoundTeam ` 类创建一个团队:
395
394
396
395
``` python
397
396
team = RoundTeam([agent1, agent2, agent3])
@@ -403,44 +402,49 @@ team = RoundTeam([agent1, agent2, agent3])
403
402
team: RoundTeam = agent1 | agent2 | agent3
404
403
```
405
404
406
- #### 添加任务
407
-
408
- 团队中所有 ` Agent ` 都将围绕这个任务进行协作:
409
-
410
- ``` python
411
- team.add_task(" 请创作一首关于春天的七律诗。" )
412
- ```
413
-
414
405
#### 添加终止器
415
406
416
407
团队中可以设置一个终止器,当满足终止条件时,团队将停止运行:
417
408
418
409
``` python
419
- team.terminator = MaxTurnsTerminator( max_turns = 10 )
410
+ team.termination = TextMentionTermination( text = " APPROVED " )
420
411
```
421
412
422
413
终止器包含以下类型:
423
414
424
- - ` MaxTurnsTerminator ` : 最大轮数终止, 包含每个 ` Agent ` 调用工具的次数。
425
- - ` MaxActiveTerminator ` : 最大激活次数终止, 表示团队中能够激活 ` Agent ` 的最大次数。
426
- - ` TextTerminator ` : 当团队中任意一个 ` Agent ` 的响应中包含指定的文本时,团队将停止运行。
427
- - ` TimeOutTerminator ` : 超时终止,表示整个团队运行的最长时长。
415
+ - ` TextMentionTermination ` : 响应中包含指定的文本时,团队将停止运行。
428
416
429
417
所有终止器都支持 ` & ` 和 ` | ` 操作符来组合使用。
430
418
431
419
#### 运行团队
432
420
433
- 使用 ` run_sync ` 或 ` run ` 方法运行团队:
421
+ 使用 ` run_sync ` 或 ` run ` 方法运行团队,团队中所有成员都将围绕这个任务进行协作 :
434
422
435
423
``` python
436
- team.run_sync()
424
+ team.run_sync(task = " 请创作一首关于春天的七律诗。 " )
437
425
```
438
426
439
- 不提供返回值,你可以使用 ` team.global_messages ` 获取团队中所有 ` Agent ` 的对话历史或者 ` add_trace_callback ` 方法添加一个回调函数来获取内部流程 。
427
+ 该方法提供一个 ` TeamResponse ` 类型的返回值。如果想知道团队的内部流程, 可以使用 ` trace ` 属性或通过 ` set_trace_callback ` 方法设置一个回调函数 。
440
428
441
429
### 团队类型
442
430
431
+ - ` RoundTeam ` : 轮询团队,团队中每个成员会依次被激活并循环该过程,直到满足终止条件。所有成员以广播的方式共享相同的上下文。
432
+
433
+ ``` python
434
+ team: RoundTeam = agent1 | agent2 | agent3
435
+ ```
436
+
437
+ - ` LinearTeam ` : 线性团队,团队中每个成员会依次被激活,每个成员仅接收前一个成员的运行结果。团队在最后一个成员运行结束后自动结束。
443
438
439
+ ``` python
440
+ team: LinearTeam = agent1 = > agent2 = > agent3
441
+ ```
444
442
443
+ - ` LeaderTeam ` : 领导团队,团队中有一个领导和一个或多个下属,领导负责判断用户意图并切换到相应的下属上执行任务, 每个下属仅接收领导的指令。
445
444
445
+ ``` python
446
+ team: LeaderTeam = agent1 <= [agent2, agent3] <= [" 负责..." , " 负责..." ]
447
+ ```
446
448
449
+ > [ !TIP]
450
+ > 可以通过第二个 ` <= ` 操作符设置下属 ` Agent ` 的描述, 也可以省略使用默认描述
0 commit comments