File size: 2,400 Bytes
200916c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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