SOP_Generation-multi / gen_utils.py
callanwu's picture
init
200916c
from design_states import gen_agent_style,gen_agent_state,gen_begin_role_query
def get_agent_names(design_states):
agents_name = set()
for design_state in design_states:
for role in design_state["roles"]:
agents_name.add(role)
return list(agents_name)
def get_final_agents(agents,design_states):
final_agents = {}
for agent,style in agents.items():
final_agents[agent] = {"style":"","roles":{}}
final_agents[agent]["style"] = style
for design_state in design_states:
if agent in design_state["roles"]:
final_agents[agent]["roles"][design_state["state_name"]] = agent
return final_agents
def get_agents(design_states,index):
agents = get_agent_names(design_states)
agents = gen_agent_style(agents,design_states,index)
agents = get_final_agents(agents,design_states)
return agents
def get_relations(design_states):
relations = {}
n = len(design_states)
for i in range(n):
relations[design_states[i]["state_name"]] = {}
relations[design_states[i]["state_name"]]["0"] = design_states[i]["state_name"]
relations[design_states[i]["state_name"]]["1"] = design_states[i+1]["state_name"] if i!=n-1 else "end_state"
return relations
def gen_states(design_states,index):
states = {"end_state":{
"agent_states":{}
}}
for design_state in design_states:
state_name = design_state["state_name"]
environment_prompt = design_state["environment_prompt"]
roles = design_state["roles"]
max_chat_nums = 1 if len(roles)==1 else len(roles)*2
states[state_name] = {"controller":{"controller_type": "order", "max_chat_nums" : max_chat_nums},"environment_prompt":environment_prompt,"roles":roles}
agent_state = {}
for role in roles:
agent_state[role] = gen_agent_state(role,environment_prompt,index)
states[state_name]["agent_states"] = agent_state
begin_role,begin_query = gen_begin_role_query(environment_prompt,roles,index)
begin_role = ("_").join(begin_role.split(" "))
print(begin_role)
if begin_role not in roles:
begin_role = begin_role +"_1"
if begin_role in roles:
states[state_name]["begin_role"] = begin_role
states[state_name]["begin_query"] = begin_query
return states