MemGPT + AutoGen + Open Source LLM
Published: 2024-01-28 15:51:17

**	
MemGPT + AutoGen + Open Source LLM**


2 Agents

import autogen
from memgpt.autogen.memgpt_agent import create_memgpt_autogen_agent_from_config 

config_list = [
    {
        "model" : "default",
        "api_base" : "http://localhost:5001/v1",
        "api_key" : "NULL",
    }
]

llm_config = {"config_list" : config_list}

user_proxy = autogen.UserProxyAgent(
    name="user_proxy",
    code_execution_config={
        "work_dir" : "coding",
    },
    default_auto_reply="..."
)

coder = create_memgpt_autogen_agent_from_config(
    name="MemGPTcoder",
    llm_config=llm_config,
    system_message="You are a python developer"
)

user_proxy.initiate_chat(
    coder,
    message="create a python function to find the first 5 even numbers"
)

Installing Text generation web ui

git clone https://github.com/oobabooga/text-generation-webui
cd text-generation-webui
bash start_macos.sh --api --listen --extensions openai

export OPENAI_API_BASE="http://localhost:5000"
export BACKEND_TYPE="webui"

Run the code

python app.py

3 Agents

"""Example of how to add MemGPT into an AutoGen groupchat

Begin by doing:
  pip install "pyautogen[teachable]"
  pip install pymemgpt
  or
  pip install -e . (inside the MemGPT home directory)
"""
import autogen
from memgpt.autogen.memgpt_agent import create_memgpt_autogen_agent_from_config

import random
random_seed = random.randint(0, 1000)
config_list = [
    {
        "model": "gpt-4",
        "api_base": "http://localhost:8000",
        "api_key": "NULL",
        "seed": random_seed,
    }
]

llm_config = {"config_list": config_list, "seed": random_seed}

# The user agent
user_proxy = autogen.UserProxyAgent(
    name="User_proxy",
    system_message="I am Mervin Praison, a human admin.",
    code_execution_config={"work_dir": "groupchat"},
    default_auto_reply="...",  # Set a default auto-reply message here (non-empty auto-reply is required for LM Studio)
)

# The agent playing the role of the product manager (PM)
pm = autogen.AssistantAgent(
    name="Product_manager",
    system_message="Creative in software product ideas.",
    llm_config=llm_config,
    default_auto_reply="...",  # Set a default auto-reply message here (non-empty auto-reply is required for LM Studio)
)

coder = create_memgpt_autogen_agent_from_config(
    "MemGPT_coder",
    llm_config=llm_config,
    system_message=f"You are participating in a group chat with a user ({user_proxy.name}) "
    f"and a product manager ({pm.name}).",
)

groupchat = autogen.GroupChat(agents=[user_proxy, pm, coder], messages=[], max_round=12)
manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config)

user_proxy.initiate_chat(
    manager,
    message="Create python code that prints the first 10 numbers of the fibonacci sequence and save the file",
)

Required: LiteLLM in port number 8000 and Web Gen UI at port 5000

export OPENAI_API_BASE="http://127.0.0.1:5000"
export BACKEND_TYPE="webui"

LiteLLM

litellm --model ollama/mistral --add_function_to_prompt --drop_params --request_timeout 1000 --debug --max_tokens 5000

Using LM Studio

export OPENAI_API_BASE="http://127.0.0.1:1234"
export BACKEND_TYPE="lmstudio"

import autogen
from memgpt.autogen.memgpt_agent import create_memgpt_autogen_agent_from_config

import random
random_seed = random.randint(0, 1000)

config_list = [
    {
        "model": "gpt-4",
        "api_base": "http://localhost:1234/v1",
    }
]

llm_config = {"config_list": config_list, "seed": random_seed}

pm = autogen.AssistantAgent(
    name="Product_manager",
    system_message="Creative in software product ideas.",
    llm_config=llm_config,
    default_auto_reply="...", 
)

user_proxy = autogen.UserProxyAgent(
    name="User_proxy",
    system_message="I am Mervin Praison, a human admin.",
    code_execution_config={"work_dir": "coding"},
    default_auto_reply="...",  
)

coder = create_memgpt_autogen_agent_from_config(
    "MemGPT_coder",
    llm_config=llm_config,
    system_message=f"You are participating in a group chat with a user ({user_proxy.name}) "
    f"and a product manager ({pm.name}).",
)

groupchat = autogen.GroupChat(agents=[user_proxy, pm, coder], messages=[], max_round=12)
manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config)

user_proxy.initiate_chat(
    manager,
    message="Create python code that prints the first 10 numbers of the fibonacci sequence and save the file",
)