Skip to main content

multi agent framework

Project description

MultiAgentX

A flexible framework for building multi-agent systems.

Installation

Install from pypi

You can install the package from pypi

pip install multiagentx -i https://pypi.org/simple

You can also upgrade the package from pypi

pip install multiagentx --upgrade -i https://pypi.org/simple

Install from source

You can also install the package directly from source:

pip install .

For development installation:

pip install -e .

Usage

Step Zero

from dotenv import load_dotenv
from openai import OpenAI
from src import Env,Agent,Group

load_dotenv()
# model_client used for creating Openai agent or Group internal processing
model_client = OpenAI(
    api_key=os.environ.get("OPENAI_API_KEY"),
    base_url=os.environ.get("OPENAI_BASE_URL"),
)

Step One

Agent is the basic unit of the framework, it can build from scratch or connect to third-party agents

Creat Agent like this

artist = Agent(name="artist",
        role="Artist", 
        description="Transfer to me if you need help with art.",
        persona = "You are a professional artist who has been working in the industry for over 10 years. You have a deep understanding of art history and have a strong passion for creating art. You are known for your unique style and innovative approach to art. You are always looking for new ways to express yourself and push the boundaries of what is possible in the art world.",
        model_client=model_client,
        verbose=True)

can use agent like this

response = artist.do("Can you help me with art?",model="gpt-4o-mini")

can add tools like this

def web_search(qury:str)->str:
    """
    web search tool
    """
    # do web search
    return "web search result"

researcher = Agent(name="researcher",
        role="Researcher",
        description="Transfer to me if you need help with research.",
        persona = "You are a professional researcher who can do web search to conduct research on a wide range of topics. You have a deep understanding of how to find and evaluate information from a variety of sources. You are known for your ability to quickly find relevant information and present it in a clear and concise manner.",
        tools=[web_search],
        model_client=model_client,
        verbose=True)

or equip with memory like this

telos = Agent(name="telos",
              role="Assistant",
              description="Transfer to me if you need help with general questions.",
              persona="You are a general assistant who can help with a wide range of questions. You have a deep understanding of a variety of topics and can provide information and assistance on a wide range of subjects. You are known for your ability to quickly find answers to questions and provide helpful information in a clear and concise manner.",
              model_client=model_client,
              verbose=True)

telos.init_memory(working_memory_threshold=3)

or connect a third-party agent that was created at Dify like this.

mathematician = Agent(name="mathematician",
    role="Mathematician", 
    description="Transfer to me if you need help with math.", 
    dify_access_token="app-rlK8IzzWCVkNbkxxxxxxx",
    verbose=True)
# persona is not needed for Dify agent, it already has its own persona

or connect a url iagent like this

iAgent = Agent(name="Tim",
               role="Designer",
               description="Transfer to me if you need help with art and design.",
               iagent_url="http://127.0.0.1:7860/v1/chat",
               verbose=True)

iAgent.do(message="Hey,who are you?",sender="Jun")

Step Two

Env is the environment where agents live, you can add a description and agents to the environment. In addition,it can be created with or without relationships between agents, and can also set the language used in the environment. Env will be used to create a group of agents.

Create Env like this (all agents are fully connected by default)

env = Env(
    description="This is a test environment",
    members=[mathematician, artist]
)

or like this (self-defined topology relationships between agents)

env = Env(
    description="This is a test environment",
    members=[mathematician, artist],
    relationships={"agent1": ["agent2"]}
)

or set language used in the environment

env = Env(
    description="This is a test environment",
    members=[mathematician, artist],
    language="中文"
)

Step Three

Group is a collection of agents that can be used to chat, perform tasks, and handle basic control with a human in the loop.

Build Group like this

g = Group(env=env,model_client=model_client,verbose=True)

can add extra agent into group dynamically like this

designer = Agent(name="designer",
    role="Designer", 
    description="Transfer to me if you need help with design.", 
    model_client=OpenAI(),
    verbose=True)

g.add_member(designer)

or delete agent from group dynamically like this

takeaway,observed_speakers = g.delete_member("artist") # delete by name
# will return takeaway and observed_speakers for memory retrieval in the future

or invite agent to join group dynamically like this

# automatically create agent
g.invite_member("a philosopher who calls himself agent4 , he is a big fan of plato and aristotle")

or dismiss the group like this

g.dismiss_group()
# when the group is dismissed, all agents will be deleted and each of them will get their own memory back

Step Four

Some examples of how to use the group

chat with group of agents(dynamic agent selection)

response= g.chat("Can you explain the concept of complex numbers?",model="gpt-4o-mini")
response= g.chat("Can you help me with art?",model="gpt-4o-mini")

internal dialogue within group of agents based on the current environment description

g.dialogue(model="gpt-4o-mini",max_turns=10)

task for group of agents

response = g.task("I want to build a simplistic and user-friendly bicycle help write a design brief.",model="gpt-4o-mini",strategy="auto")

low-level API example

g.user_input("can you help me with math?")
next_agent = g.handoff(next_speaker_select_mode="auto",include_current=True,model="gpt-4o-mini")
g.user_input("Discuss the concept of abstract art.")
response = g.call_agent(next_speaker_select_mode="auto",include_current=True,model="gpt-4o-mini")
response = g.call_agent(next_speaker_select_mode="auto",include_current=True,model="gpt-4o-mini")
g.user_input("how do you feel about abstract art?")
response = g.call_agent(next_speaker_select_mode="auto",include_current=True,model="gpt-4o-mini")
response = g.call_agent(next_speaker_select_mode="auto",include_current=True,model="gpt-4o-mini")
response = g.call_agent(next_speaker_select_mode="auto",include_current=True,model="gpt-4o-mini")

Package Upload

First time upload

pip install build twine
python -m build
twine upload dist/*

Subsequent uploads

rm -rf dist/ build/ *.egg-info/
python -m build
twine upload dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multiagentx-0.1.7.tar.gz (29.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

multiagentx-0.1.7-py3-none-any.whl (31.8 kB view details)

Uploaded Python 3

File details

Details for the file multiagentx-0.1.7.tar.gz.

File metadata

  • Download URL: multiagentx-0.1.7.tar.gz
  • Upload date:
  • Size: 29.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for multiagentx-0.1.7.tar.gz
Algorithm Hash digest
SHA256 74154f268fee836dbd99b1e39a869a999f4cbf678746a06fbfb6e81deadac5f6
MD5 6bbe831747a14cfc5040cdc2a234a604
BLAKE2b-256 dde32a6b2a60c1d2f4958042c0ac9dac753b48b783cd717d1bcd4820597dd416

See more details on using hashes here.

File details

Details for the file multiagentx-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: multiagentx-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 31.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for multiagentx-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 c4421eeaa77be0e178d11c5726fe55bc3356bc43419b35f6b667d5fd29f63e1a
MD5 489bbf1b2ed51913af07d9fc3a49ef98
BLAKE2b-256 69b2b07185537fc0791d18a7a1200acd739f0626dc4a447d32e50942c92ca7f5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page