AGYIntelligence / autogen_utils.py
thinkall's picture
Add AutoGen Playground
bbdc1ce
raw
history blame
3.91 kB
import sys
import threading
from ast import literal_eval
import autogen
import chromadb
from autogen import AssistantAgent, UserProxyAgent
from autogen.agentchat.contrib.compressible_agent import CompressibleAgent
from autogen.agentchat.contrib.gpt_assistant_agent import GPTAssistantAgent
from autogen.agentchat.contrib.llava_agent import LLaVAAgent
from autogen.agentchat.contrib.math_user_proxy_agent import MathUserProxyAgent
from autogen.agentchat.contrib.retrieve_assistant_agent import RetrieveAssistantAgent
from autogen.agentchat.contrib.retrieve_user_proxy_agent import RetrieveUserProxyAgent
from autogen.agentchat.contrib.teachable_agent import TeachableAgent
from autogen.code_utils import extract_code
def get_retrieve_config(docs_path, model_name, collection_name):
return {
"docs_path": literal_eval(docs_path),
"chunk_token_size": 1000,
"model": model_name,
"embedding_model": "all-mpnet-base-v2",
"get_or_create": True,
"client": chromadb.PersistentClient(path=".chromadb"),
"collection_name": collection_name,
}
# autogen.ChatCompletion.start_logging()
def termination_msg(x):
return isinstance(x, dict) and "TERMINATE" == str(x.get("content", ""))[-9:].upper()
def _is_termination_msg(message):
"""Check if a message is a termination message.
Terminate when no code block is detected. Currently only detect python code blocks.
"""
if isinstance(message, dict):
message = message.get("content")
if message is None:
return False
cb = extract_code(message)
contain_code = False
for c in cb:
# todo: support more languages
if c[0] == "python":
contain_code = True
break
return not contain_code
def initialize_agents(
llm_config, agent_name, system_msg, agent_type, retrieve_config=None, code_execution_config=False
):
if "RetrieveUserProxyAgent" == agent_type:
agent = RetrieveUserProxyAgent(
name=agent_name,
is_termination_msg=termination_msg,
human_input_mode="NEVER",
max_consecutive_auto_reply=5,
retrieve_config=retrieve_config,
code_execution_config=code_execution_config, # set to False if you don't want to execute the code
default_auto_reply="Reply `TERMINATE` if the task is done.",
)
elif "GPTAssistantAgent" == agent_type:
agent = GPTAssistantAgent(
name=agent_name,
instructions=system_msg,
llm_config=llm_config,
is_termination_msg=termination_msg,
)
elif "CompressibleAgent" == agent_type:
compress_config = {
"mode": "COMPRESS",
"trigger_count": 600, # set this to a large number for less frequent compression
"verbose": True, # to allow printing of compression information: contex before and after compression
"leave_last_n": 2,
}
agent = CompressibleAgent(
name=agent_name,
system_message=system_msg,
llm_config=llm_config,
compress_config=compress_config,
is_termination_msg=termination_msg,
)
elif "UserProxy" in agent_type:
agent = globals()[agent_type](
name=agent_name,
is_termination_msg=termination_msg,
human_input_mode="NEVER",
system_message=system_msg,
default_auto_reply="Reply `TERMINATE` if the task is done.",
max_consecutive_auto_reply=5,
code_execution_config=code_execution_config,
)
else:
agent = globals()[agent_type](
name=agent_name,
is_termination_msg=termination_msg,
human_input_mode="NEVER",
system_message=system_msg,
llm_config=llm_config,
)
return agent