Skip to content

Commit b0ef7bd

Browse files
committed
update muagent
1 parent 87a29c8 commit b0ef7bd

File tree

527 files changed

+978
-4851
lines changed

Some content is hidden

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

527 files changed

+978
-4851
lines changed

.gitignore

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
**/__pycache__
2+
knowledge_base
3+
logs
4+
embedding_models
5+
jupyter_work
6+
code_base
7+
data
8+
.DS_Store
9+
.idea
10+
.pyc
11+
test_config.py
12+
package.sh
13+
setup_test.py
14+
build
15+
*egg-info
16+
dist

README.md

+18-8
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,22 @@
22
<a href="README_zh.md">中文</a>&nbsp | &nbsp<a>English&nbsp </a>
33
</p>
44

5-
# <p align="center">MuAgent: A Multi-Agent FrameWork For Faster Build Agents</p>
5+
# <p align="center">CodeFuse-muAgent: A Multi-Agent FrameWork For Faster Build Agents</p>
66

77
<p align="center">
88
<a href="README.md"><img src="https://img.shields.io/badge/文档-中文版-yellow.svg" alt="ZH doc"></a>
99
<a href="README_en.md"><img src="https://img.shields.io/badge/document-English-yellow.svg" alt="EN doc"></a>
10-
<img src="https://img.shields.io/github/license/codefuse-ai/muagent" alt="License">
11-
<a href="https://github.com/codefuse-ai/muagent/issues">
12-
<img alt="Open Issues" src="https://img.shields.io/github/issues-raw/codefuse-ai/muagent" />
10+
<img src="https://img.shields.io/github/license/codefuse-ai/CodeFuse-muAgent" alt="License">
11+
<a href="https://github.com/codefuse-ai/CodeFuse-muAgent/issues">
12+
<img alt="Open Issues" src="https://img.shields.io/github/issues-raw/codefuse-ai/CodeFuse-muAgent" />
1313
</a>
1414
<br><br>
1515
</p>
1616

1717

1818

1919
## 🔔 News
20-
- [2024.04.01] muagent is now open source, featuring functionalities such as knowledge base, code library, tool usage, code interpreter, and more
20+
- [2024.04.01] codefuse-muagent is now open source, featuring functionalities such as knowledge base, code library, tool usage, code interpreter, and more
2121

2222
## 📜 Contents
2323
- [🤝 Introduction](#-Introduction)
@@ -28,17 +28,17 @@
2828

2929

3030
## 🤝 Introduction
31-
Developed by the Ant CodeFuse Team, muagent is a Multi-Agent framework whose primary goal is to streamline the Standard Operating Procedure (SOP) orchestration for agents. muagent integrates a rich collection of toolkits, code libraries, knowledge bases, and sandbox environments, enabling users to rapidly construct complex Multi-Agent interactive applications in any field. This framework allows for the efficient execution and handling of multi-layered and multi-dimensional complex tasks.
31+
Developed by the Ant CodeFuse Team, CodeFuse-muAgent is a Multi-Agent framework whose primary goal is to streamline the Standard Operating Procedure (SOP) orchestration for agents. muagent integrates a rich collection of toolkits, code libraries, knowledge bases, and sandbox environments, enabling users to rapidly construct complex Multi-Agent interactive applications in any field. This framework allows for the efficient execution and handling of multi-layered and multi-dimensional complex tasks.
3232

3333
![](docs/resources/agent_runtime.png)
3434

3535
## 🚀 快速使用
36-
For complete documentation, see: [muagent](docs/overview/o1.muagent.md)
36+
For complete documentation, see: [CodeFuse-muAgent](docs/overview/o1.muagent.md)
3737
For more [demos](docs/overview/o3.quick-start.md)
3838

3939
1. Installation
4040
```
41-
pip install muagent
41+
pip install codefuse-muagent
4242
```
4343

4444
2. Code answer Prepare related llm and embedding model configurations
@@ -70,6 +70,7 @@ embed_config = EmbedConfig(
7070

7171
Initialize the codebase
7272
```
73+
from muagent.base_configs.env_config import CB_ROOT_PATH
7374
codebase_name = 'client_local'
7475
code_path = "D://chromeDownloads/devopschat-bot/client_v2/client"
7576
@@ -89,6 +90,15 @@ phase_name = "codeChatPhase"
8990
phase = BasePhase(
9091
phase_name, embed_config=embed_config, llm_config=llm_config,
9192
)
93+
#
94+
query_content = "what does the remove' function?"
95+
query = Message(
96+
role_name="user", role_type="human", input_query=query_content,
97+
code_engine_name=codebase_name, score_threshold=1.0, top_k=3, cb_search_type="tag",
98+
local_graph_path=CB_ROOT_PATH, use_nh=False
99+
)
100+
output_message3, output_memory3 = phase.step(query)
101+
print(output_memory3.to_str_messages(return_all=True, content_key="parsed_output_list"))
92102
```
93103

94104
## Key Technologies

README_zh.md

+19-8
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,22 @@
22
<a>中文</a>&nbsp | &nbsp<a href="README.md">English&nbsp </a>
33
</p>
44

5-
# <p align="center">MuAgent: A Multi-Agent FrameWork For Faster Build Agents</p>
5+
# <p align="center">CodeFuse-muAgent: A Multi-Agent FrameWork For Faster Build Agents</p>
66

77
<p align="center">
88
<a href="README_zh.md"><img src="https://img.shields.io/badge/文档-中文版-yellow.svg" alt="ZH doc"></a>
99
<a href="README.md"><img src="https://img.shields.io/badge/document-English-yellow.svg" alt="EN doc"></a>
10-
<img src="https://img.shields.io/github/license/codefuse-ai/muagent" alt="License">
11-
<a href="https://github.com/codefuse-ai/muagent/issues">
12-
<img alt="Open Issues" src="https://img.shields.io/github/issues-raw/codefuse-ai/muagent" />
10+
<img src="https://img.shields.io/github/license/codefuse-ai/CodeFuse-muAgent" alt="License">
11+
<a href="https://github.com/codefuse-ai/CodeFuse-muAgent/issues">
12+
<img alt="Open Issues" src="https://img.shields.io/github/issues-raw/codefuse-ai/CodeFuse-muAgent" />
1313
</a>
1414
<br><br>
1515
</p>
1616

1717

1818

1919
## 🔔 更新
20-
- [2024.04.01] muagent 开源,支持知识库、代码库、工具使用、代码解释器等功能
20+
- [2024.04.01] CodeFuse-muAgent 开源,支持知识库、代码库、工具使用、代码解释器等功能
2121

2222
## 📜 目录
2323
- [🤝 介绍](#-介绍)
@@ -28,18 +28,18 @@
2828

2929

3030
## 🤝 介绍
31-
muagent是蚂蚁CodeFuse团队开发的Mulit Agent框架,其核心宗旨在于简化agents的标准操作程序(SOP)编排流程。muagent整合了一系列丰富的工具库、代码库、知识库以及沙盒环境,可支撑用户在任何领域场景都能依托muagent迅速搭建起复杂的多Agent交互应用。通过这一框架,用户能够高效地执行和处理多层次、多维度的复杂任务。
31+
CodeFuse-muAgent 是蚂蚁CodeFuse团队开发的Mulit Agent框架,其核心宗旨在于简化agents的标准操作程序(SOP)编排流程。muagent整合了一系列丰富的工具库、代码库、知识库以及沙盒环境,可支撑用户在任何领域场景都能依托muagent迅速搭建起复杂的多Agent交互应用。通过这一框架,用户能够高效地执行和处理多层次、多维度的复杂任务。
3232

3333
![](docs/resources/agent_runtime.png)
3434

3535

3636
## 🚀 快速使用
37-
完整文档见:[muagent](docs/overview/o1.muagent.md)
37+
完整文档见:[CodeFuse-muAgent](docs/overview/o1.muagent.md)
3838
更多[demo](docs/overview/o3.quick-start.md)
3939

4040
1. 安装
4141
```
42-
pip install muagent
42+
pip install codefuse-muagent
4343
```
4444

4545
2. code answer
@@ -74,6 +74,8 @@ embed_config = EmbedConfig(
7474
初始化代码库
7575
```
7676
# initialize codebase
77+
from muagent.base_configs.env_config import CB_ROOT_PATH
78+
7779
codebase_name = 'client_local'
7880
code_path = "D://chromeDownloads/devopschat-bot/client_v2/client"
7981
@@ -93,6 +95,15 @@ phase_name = "codeChatPhase"
9395
phase = BasePhase(
9496
phase_name, embed_config=embed_config, llm_config=llm_config,
9597
)
98+
99+
query_content = "remove 可以做什么?"
100+
query = Message(
101+
role_name="user", role_type="human", input_query=query_content,
102+
code_engine_name=codebase_name, score_threshold=1.0, top_k=3, cb_search_type="tag",
103+
local_graph_path=CB_ROOT_PATH, use_nh=False
104+
)
105+
output_message3, output_memory3 = phase.step(query)
106+
print(output_memory3.to_str_messages(return_all=True, content_key="parsed_output_list"))
96107
```
97108

98109
## 🧭 关键技术

docs/overview/o1.muagent.md

+13-13
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
2-
title: muagent 概览
3-
slug: muagent 概览
4-
url: "muagent/muagent-概览"
2+
title: muAgent 概览
3+
slug: muAgent 概览
4+
url: "muAgent/muAgent-概览"
55
aliases:
6-
- "/muagent/muagent-概览"
7-
- "/muagent/multi-agent-zh"
8-
- "/muagent/muagent-zh"
6+
- "/muAgent/muAgent-概览"
7+
- "/muAgent/multi-agent-zh"
8+
- "/muAgent/muAgent-zh"
99
---
1010

1111
# 简介
@@ -21,12 +21,12 @@ aliases:
2121
本项目的Mutli-Agent框架汲取兼容了多个框架的优秀设计,比如metaGPT中的消息池(message pool)、autogen中的代理选择器(agent selector)等。
2222

2323
<div align=center>
24-
<img src="/docs/resources/muagent_framework.png" alt="图片" style="width: 500px; height:auto;">
24+
<img src="/docs/resources/muAgent_framework.png" alt="图片" style="width: 500px; height:auto;">
2525
</div>
2626

2727

28-
# MuAgent框架
29-
在MuAgent中,我们除了定义Agent交互链路和AgentBase基础执行流以外,还额外设计了 Prompt Manager 和 Memory Manager 两个基础组件,分别用于自动化构建Prompt和chat history管理。最终构建出一个可扩展、易于使用的Multi-Agent框架,包括以下内容
28+
# muAgent框架
29+
在muAgent中,我们除了定义Agent交互链路和AgentBase基础执行流以外,还额外设计了 Prompt Manager 和 Memory Manager 两个基础组件,分别用于自动化构建Prompt和chat history管理。最终构建出一个可扩展、易于使用的Multi-Agent框架,包括以下内容
3030
- Agent Base:构建了四种基本的Agent类型BaseAgent、ReactAgent、ExecutorAgent、SelectorAgent,支撑各种场景的基础活动
3131
- Communication:通过Message和Parse Message 实体完成Agent间的信息传递,并与Memory Manager交互再Memory Pool完成记忆管理
3232
- Prompt Manager:通过Role Handler、Doc/Tool Handler、Session Handler、Customized Handler,来自动化组装Customized 的Agent Prompt
@@ -82,7 +82,7 @@ Agent接受到任务清单([List[task]),对这个任务清单Task进行循环
8282

8383
### Prompt Manager
8484
提问LLM已经成为一种常见的实践,但如何让多个大模型分工并协调好LLM间的规划、调用工具、代码编写能力,来引导它们产生期望的输出,成为了一个关键的问题,其本质就是将业务问题抽象并拆解到可执行的Prompt,那与其说我们是在设计Agents,不如说是对当前需求的深入理解后进行框架设计。
85-
在LLM介入到实际业务场景(不涉及SFT过程),我们能通过设计Agent Prompt的内容来指定LLM完成相应任务得到相应输出。在MuAgent这个过程中,将这个Prompt分成了三个部分,System Prompt、Context Prompt、Customized Prompt
85+
在LLM介入到实际业务场景(不涉及SFT过程),我们能通过设计Agent Prompt的内容来指定LLM完成相应任务得到相应输出。在muAgent这个过程中,将这个Prompt分成了三个部分,System Prompt、Context Prompt、Customized Prompt
8686
- System Prompt 包括 Role Name、Role Description、Task等
8787
- Context Prompt 包括 Doc Context、Code Context、Tool Context、Agent Context、Session Context等
8888
- Customized Prompt 则是 自定义的一些 Input 和 Ouput,比如说 ...
@@ -109,7 +109,7 @@ Agent接受到任务清单([List[task]),对这个任务清单Task进行循环
109109
## Component
110110
### Retrieval
111111
在所有Prompt的Context中,除了Chat History的会话信息外,还需要依赖于从外界文档知识库、代码库、互联网搜索得来的相关信息,这些模型参数知识外的知识体系能够极大提升Agent完成复杂任务的能力。
112-
于是在MuAgent中我们集成了Doc、Internet Search、Code Retrieval三种检索信息的方式,并定义了一个抽象IMRetrieval类,可支持开发者自定义个性化的知识库,来完成Agent的知识库注册。
112+
于是在muAgent中我们集成了Doc、Internet Search、Code Retrieval三种检索信息的方式,并定义了一个抽象IMRetrieval类,可支持开发者自定义个性化的知识库,来完成Agent的知识库注册。
113113

114114
**Doc Retrieval**
115115
文档向量数据库是当前最主流的知识库构建方法,使用Text Embedding 模型对文档进行向量化并在向量数据库中存储。未来我们也会去支持基于知识图谱查询以及通过大模型自动抽取实体和关系的方式,来挖掘数据中多种复杂关系。
@@ -121,11 +121,11 @@ LLM在代码生成、修复以及组件理解的任务上,会面临代码训
121121
除了现成的文档和代码知识库以及之外,在日常中实践中会去浏览大量网页内容获取更多的知识,帮助我们理解新兴的场景、业务、技术等,于是我们接入了duckduckgosearch这款开源的搜索工具,能够为LLM提供知识储备以外的内容。
122122

123123
### Tool
124-
随着OpenAI推出了Function Call功能,通过LLM生成指定工具的参数并执行调用,使机器能更好地理解和回应人类的需求,从而解决实际问题和重复性的工作。现如今工具学习能力越来越作为开源模型的标配。那在MuAgent中也支持Agent完成Tool的注册,通过Python注册模板`BaseToolModel`类,编写Tool_name、Tool_description、ToolInputArgs、ToolOutputArgs、run等相关属性和方法即可实现工具的快速接入,同时支持langchain Tool接口的直接使用。
124+
随着OpenAI推出了Function Call功能,通过LLM生成指定工具的参数并执行调用,使机器能更好地理解和回应人类的需求,从而解决实际问题和重复性的工作。现如今工具学习能力越来越作为开源模型的标配。那在muAgent中也支持Agent完成Tool的注册,通过Python注册模板`BaseToolModel`类,编写Tool_name、Tool_description、ToolInputArgs、ToolOutputArgs、run等相关属性和方法即可实现工具的快速接入,同时支持langchain Tool接口的直接使用。
125125
例如像上述 XXRetrieval 的功能也可以注册为Tool,最终由LLM执行调用。
126126

127127
### Action
128-
在MuAgent的定义里,Action是作为LLM具体要执行的动作或动作流,会包括LLM信息处理、知识检索、工具调用以及代码执行等一个综合性的复杂过程,是一个动态过程。比如在React过程中,我们通过LLM获取到了一个Tool参数,接下来"将工具参数放入到Tool并执行调用"这个过程就是Action,它去实践性的调用了Tool。又或者说我们定义了一个Agent,它编排在一个固定Agent的Action步骤之中,这个Agent的输入参数由Action特殊指定。也就是说无论是由LLM产生参数还是工程设定参数,只有涉及具体的执行过程,就是一个Action。
128+
在muAgent的定义里,Action是作为LLM具体要执行的动作或动作流,会包括LLM信息处理、知识检索、工具调用以及代码执行等一个综合性的复杂过程,是一个动态过程。比如在React过程中,我们通过LLM获取到了一个Tool参数,接下来"将工具参数放入到Tool并执行调用"这个过程就是Action,它去实践性的调用了Tool。又或者说我们定义了一个Agent,它编排在一个固定Agent的Action步骤之中,这个Agent的输入参数由Action特殊指定。也就是说无论是由LLM产生参数还是工程设定参数,只有涉及具体的执行过程,就是一个Action。
129129

130130

131131
# 模块分类

docs/overview/o3.quick-start.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ aliases:
1010

1111

1212
## 快速使用
13+
### pip instal
14+
```
15+
pip install codefuse-muagent
16+
```
17+
1318
### 首先,填写LLM配置
1419
```
1520
import os, sys
@@ -34,7 +39,6 @@ os.environ["DUCKDUCKGO_PROXY"] = os.environ.get("DUCKDUCKGO_PROXY") or "socks5:/
3439
```
3540
from muagent.llm_models.llm_config import EmbedConfig, LLMConfig
3641
37-
3842
llm_config = LLMConfig(
3943
model_name=os.environ["model_name"], api_key=os.environ["OPENAI_API_KEY"],
4044
api_base_url=os.environ["API_BASE_URL"], temperature=0.3
-6.13 KB
Binary file not shown.
-1.13 KB
Binary file not shown.

examples/muagent_examples/baseGroup_example.py

+27-6
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,20 @@
1313
model_name = os.environ["model_name"]
1414
embed_model = os.environ["embed_model"]
1515
embed_model_path = os.environ["embed_model_path"]
16+
17+
try:
18+
from test_config import BgeBaseChineseEmbeddings
19+
embeddings = BgeBaseChineseEmbeddings()
20+
except:
21+
embeddings = None
1622
except Exception as e:
1723
# set your config
1824
api_key = ""
1925
api_base_url= ""
2026
model_name = ""
2127
embed_model = ""
2228
embed_model_path = ""
29+
embeddings = None
2330
logger.error(f"{e}")
2431

2532

@@ -41,9 +48,15 @@
4148
model_name=model_name, api_key=api_key, api_base_url=api_base_url, temperature=0.3
4249
)
4350

44-
embed_config = EmbedConfig(
45-
embed_engine="model", embed_model=embed_model, embed_model_path=embed_model_path
46-
)
51+
if embeddings:
52+
embed_config = EmbedConfig(
53+
embed_model="default",
54+
langchain_embeddings=embeddings
55+
)
56+
else:
57+
embed_config = EmbedConfig(
58+
embed_engine="model", embed_model=embed_model, embed_model_path=embed_model_path
59+
)
4760

4861
#
4962
phase_name = "baseGroupPhase"
@@ -60,10 +73,18 @@
6073

6174
# round-1
6275
query_content = "确认本地是否存在employee_data.csv,并查看它有哪些列和数据类型;然后画柱状图"
63-
# query_content = "帮我确认下127.0.0.1这个服务器的在10点是否存在异常,请帮我判断一下"
6476
query = Message(
65-
role_name="human", role_type="user", tools=[], input_query=query_content,
77+
role_name="human", role_type="user", tools=tools, input_query=query_content,
6678
)
6779
# phase.pre_print(query)
6880
output_message, output_memory = phase.step(query)
69-
print(output_memory.to_str_messages(return_all=True, content_key="parsed_output_list"))
81+
print(output_memory.to_str_messages(return_all=True, content_key="parsed_output_list"))
82+
83+
# # round-2
84+
# query_content = "帮我确认下127.0.0.1这个服务器的在10点是否存在异常,请帮我判断一下"
85+
# query = Message(
86+
# role_name="human", role_type="user", tools=tools, input_query=query_content,
87+
# )
88+
# # phase.pre_print(query)
89+
# output_message, output_memory = phase.step(query)
90+
# print(output_memory.to_str_messages(return_all=True, content_key="parsed_output_list"))

examples/muagent_examples/code_base/docs/com.theokanning.openai.AuthenticationInterceptor.md

-8
This file was deleted.

examples/muagent_examples/code_base/docs/com.theokanning.openai.OpenAiApi.md

-8
This file was deleted.

examples/muagent_examples/code_base/docs/com.theokanning.openai.UtilsTest.md

-17
This file was deleted.

examples/muagent_examples/code_base/docs/com.theokanning.openai.client.AuthenticationInterceptor.md

-17
This file was deleted.

0 commit comments

Comments
 (0)