Skip to content

Commit

Permalink
update muagent
Browse files Browse the repository at this point in the history
  • Loading branch information
lightislost committed Apr 23, 2024
1 parent 87a29c8 commit b0ef7bd
Show file tree
Hide file tree
Showing 527 changed files with 978 additions and 4,851 deletions.
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
**/__pycache__
knowledge_base
logs
embedding_models
jupyter_work
code_base
data
.DS_Store
.idea
.pyc
test_config.py
package.sh
setup_test.py
build
*egg-info
dist
26 changes: 18 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,22 @@
<a href="README_zh.md">中文</a>&nbsp | &nbsp<a>English&nbsp </a>
</p>

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

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



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

## 📜 Contents
- [🤝 Introduction](#-Introduction)
Expand All @@ -28,17 +28,17 @@


## 🤝 Introduction
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.
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.

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

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

1. Installation
```
pip install muagent
pip install codefuse-muagent
```

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

Initialize the codebase
```
from muagent.base_configs.env_config import CB_ROOT_PATH
codebase_name = 'client_local'
code_path = "D://chromeDownloads/devopschat-bot/client_v2/client"
Expand All @@ -89,6 +90,15 @@ phase_name = "codeChatPhase"
phase = BasePhase(
phase_name, embed_config=embed_config, llm_config=llm_config,
)
#
query_content = "what does the remove' function?"
query = Message(
role_name="user", role_type="human", input_query=query_content,
code_engine_name=codebase_name, score_threshold=1.0, top_k=3, cb_search_type="tag",
local_graph_path=CB_ROOT_PATH, use_nh=False
)
output_message3, output_memory3 = phase.step(query)
print(output_memory3.to_str_messages(return_all=True, content_key="parsed_output_list"))
```

## Key Technologies
Expand Down
27 changes: 19 additions & 8 deletions README_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,22 @@
<a>中文</a>&nbsp | &nbsp<a href="README.md">English&nbsp </a>
</p>

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

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



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

## 📜 目录
- [🤝 介绍](#-介绍)
Expand All @@ -28,18 +28,18 @@


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

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


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

1. 安装
```
pip install muagent
pip install codefuse-muagent
```

2. code answer
Expand Down Expand Up @@ -74,6 +74,8 @@ embed_config = EmbedConfig(
初始化代码库
```
# initialize codebase
from muagent.base_configs.env_config import CB_ROOT_PATH
codebase_name = 'client_local'
code_path = "D://chromeDownloads/devopschat-bot/client_v2/client"
Expand All @@ -93,6 +95,15 @@ phase_name = "codeChatPhase"
phase = BasePhase(
phase_name, embed_config=embed_config, llm_config=llm_config,
)
query_content = "remove 可以做什么?"
query = Message(
role_name="user", role_type="human", input_query=query_content,
code_engine_name=codebase_name, score_threshold=1.0, top_k=3, cb_search_type="tag",
local_graph_path=CB_ROOT_PATH, use_nh=False
)
output_message3, output_memory3 = phase.step(query)
print(output_memory3.to_str_messages(return_all=True, content_key="parsed_output_list"))
```

## 🧭 关键技术
Expand Down
26 changes: 13 additions & 13 deletions docs/overview/o1.muagent.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
title: muagent 概览
slug: muagent 概览
url: "muagent/muagent-概览"
title: muAgent 概览
slug: muAgent 概览
url: "muAgent/muAgent-概览"
aliases:
- "/muagent/muagent-概览"
- "/muagent/multi-agent-zh"
- "/muagent/muagent-zh"
- "/muAgent/muAgent-概览"
- "/muAgent/multi-agent-zh"
- "/muAgent/muAgent-zh"
---

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

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


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

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

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

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

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


# 模块分类
Expand Down
6 changes: 5 additions & 1 deletion docs/overview/o3.quick-start.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ aliases:


## 快速使用
### pip instal
```
pip install codefuse-muagent
```

### 首先,填写LLM配置
```
import os, sys
Expand All @@ -34,7 +39,6 @@ os.environ["DUCKDUCKGO_PROXY"] = os.environ.get("DUCKDUCKGO_PROXY") or "socks5:/
```
from muagent.llm_models.llm_config import EmbedConfig, LLMConfig
llm_config = LLMConfig(
model_name=os.environ["model_name"], api_key=os.environ["OPENAI_API_KEY"],
api_base_url=os.environ["API_BASE_URL"], temperature=0.3
Expand Down
Binary file removed examples/__pycache__/start.cpython-39.pyc
Binary file not shown.
Binary file removed examples/__pycache__/test_config.cpython-39.pyc
Binary file not shown.
33 changes: 27 additions & 6 deletions examples/muagent_examples/baseGroup_example.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,20 @@
model_name = os.environ["model_name"]
embed_model = os.environ["embed_model"]
embed_model_path = os.environ["embed_model_path"]

try:
from test_config import BgeBaseChineseEmbeddings
embeddings = BgeBaseChineseEmbeddings()
except:
embeddings = None
except Exception as e:
# set your config
api_key = ""
api_base_url= ""
model_name = ""
embed_model = ""
embed_model_path = ""
embeddings = None
logger.error(f"{e}")


Expand All @@ -41,9 +48,15 @@
model_name=model_name, api_key=api_key, api_base_url=api_base_url, temperature=0.3
)

embed_config = EmbedConfig(
embed_engine="model", embed_model=embed_model, embed_model_path=embed_model_path
)
if embeddings:
embed_config = EmbedConfig(
embed_model="default",
langchain_embeddings=embeddings
)
else:
embed_config = EmbedConfig(
embed_engine="model", embed_model=embed_model, embed_model_path=embed_model_path
)

#
phase_name = "baseGroupPhase"
Expand All @@ -60,10 +73,18 @@

# round-1
query_content = "确认本地是否存在employee_data.csv,并查看它有哪些列和数据类型;然后画柱状图"
# query_content = "帮我确认下127.0.0.1这个服务器的在10点是否存在异常,请帮我判断一下"
query = Message(
role_name="human", role_type="user", tools=[], input_query=query_content,
role_name="human", role_type="user", tools=tools, input_query=query_content,
)
# phase.pre_print(query)
output_message, output_memory = phase.step(query)
print(output_memory.to_str_messages(return_all=True, content_key="parsed_output_list"))
print(output_memory.to_str_messages(return_all=True, content_key="parsed_output_list"))

# # round-2
# query_content = "帮我确认下127.0.0.1这个服务器的在10点是否存在异常,请帮我判断一下"
# query = Message(
# role_name="human", role_type="user", tools=tools, input_query=query_content,
# )
# # phase.pre_print(query)
# output_message, output_memory = phase.step(query)
# print(output_memory.to_str_messages(return_all=True, content_key="parsed_output_list"))

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Loading

0 comments on commit b0ef7bd

Please sign in to comment.