gpt_enterprise.team_leader
🕺 Team leader 🕺
1""" 2\U0001F57A 3Team leader 4\U0001F57A 5""" 6 7import os 8import ast 9import json 10from typing import List, Dict 11 12from gpt_enterprise.gpt_utils import generate_text, EMPLOYEE_PROMPTS_PATH 13from gpt_enterprise.employee import Employee 14 15 16MANAGER_PROMPTS_PATH = os.path.join(os.path.dirname(__file__), "prompts", "managers") 17 18 19class TeamLeader: 20 """ 21 A team leader will try to achieve CEO guidelines by hiring employes. 22 """ 23 24 def __init__( 25 self, 26 ceo_guidelines: str, 27 manager_retry: int, 28 output_directory: str, 29 interactive: bool = False, 30 ): 31 """ 32 33 Args: 34 ceo_guidelines (str): _description_ 35 manager_retry (int): _description_ 36 output_directory (str): _description_ 37 interactive (bool): Defaults to False 38 """ 39 with open( 40 os.path.join( 41 ( 42 MANAGER_PROMPTS_PATH 43 if not os.getenv("CUSTOM_MANAGER_PROMPTS_PATH") 44 else os.getenv("CUSTOM_MANAGER_PROMPTS_PATH") 45 ), 46 "team_leader.txt", 47 ), 48 "r", 49 ) as file: 50 self.role = file.read() 51 self.ceo_guidelines = ceo_guidelines 52 self.manager_retry = manager_retry 53 self.output_directory = output_directory 54 self.interactive = interactive 55 self.emoji = "\U0001F57A" 56 self.tasks = None 57 58 def hire_employees(self) -> List[Dict[str, Employee]]: 59 """ 60 Ask the team leader to find and hire employees 61 62 Returns: 63 List[Dict[str, Employee]]: A list containing employee CV by employee name 64 """ 65 employees_to_hire = None 66 for _ in range(self.manager_retry): 67 try: 68 print( 69 f"\n {self.emoji} Hey, I'm hiring employees to achieve your guidelines !\n" 70 ) 71 response = generate_text( 72 system_prompt=self.role, 73 user_prompt=f"Here are the CEO guidelines : {self.ceo_guidelines}", 74 model=os.getenv("GPT_VERSION", "gpt-3.5-turbo"), # TODO 75 temperature=1.0, 76 ) 77 # Convert to dict 78 employees_to_hire = ast.literal_eval( 79 response.choices[0].message.content 80 ) 81 print(json.dumps(employees_to_hire, indent=4)) 82 if self.interactive: 83 if "y" in ( 84 input( 85 f"\n {self.emoji} Are these employees good for you ?" 86 ).lower() 87 or "y" 88 ): 89 break 90 else: 91 continue 92 break 93 except Exception as err: 94 print( 95 f"\n {self.emoji} I've messed up, retrying to find employees... \n Error : \n {err}\n" 96 ) 97 else: 98 raise err 99 print(f"\n Ok, I've hired them ! Please welcome :\n") 100 hired_employees = {} 101 if employees_to_hire: 102 for employee in employees_to_hire: 103 hired_employees[employee["name"]] = Employee( 104 role_prompt=employee["role"], 105 name=employee["name"], 106 role_name=employee["role_name"], 107 creativity=float(employee["creativity"]), 108 emoji=employee["emoji"], 109 ) 110 # Add a helpful employee for task assigned to a non hired one 111 hired_employees["helpful"] = Employee( 112 role_filename=os.path.join(EMPLOYEE_PROMPTS_PATH, "helpful_employee.txt"), 113 role_name="Helpful employee", 114 ) 115 return hired_employees 116 117 def fire_employees(self, employees_to_fire: List[Employee]): 118 """ 119 Fire the given employee 120 121 Args: 122 employee (List[Employee]): _description_ 123 """ 124 pass
MANAGER_PROMPTS_PATH =
'/opt/hostedtoolcache/Python/3.11.8/x64/lib/python3.11/site-packages/gpt_enterprise/prompts/managers'
class
TeamLeader:
20class TeamLeader: 21 """ 22 A team leader will try to achieve CEO guidelines by hiring employes. 23 """ 24 25 def __init__( 26 self, 27 ceo_guidelines: str, 28 manager_retry: int, 29 output_directory: str, 30 interactive: bool = False, 31 ): 32 """ 33 34 Args: 35 ceo_guidelines (str): _description_ 36 manager_retry (int): _description_ 37 output_directory (str): _description_ 38 interactive (bool): Defaults to False 39 """ 40 with open( 41 os.path.join( 42 ( 43 MANAGER_PROMPTS_PATH 44 if not os.getenv("CUSTOM_MANAGER_PROMPTS_PATH") 45 else os.getenv("CUSTOM_MANAGER_PROMPTS_PATH") 46 ), 47 "team_leader.txt", 48 ), 49 "r", 50 ) as file: 51 self.role = file.read() 52 self.ceo_guidelines = ceo_guidelines 53 self.manager_retry = manager_retry 54 self.output_directory = output_directory 55 self.interactive = interactive 56 self.emoji = "\U0001F57A" 57 self.tasks = None 58 59 def hire_employees(self) -> List[Dict[str, Employee]]: 60 """ 61 Ask the team leader to find and hire employees 62 63 Returns: 64 List[Dict[str, Employee]]: A list containing employee CV by employee name 65 """ 66 employees_to_hire = None 67 for _ in range(self.manager_retry): 68 try: 69 print( 70 f"\n {self.emoji} Hey, I'm hiring employees to achieve your guidelines !\n" 71 ) 72 response = generate_text( 73 system_prompt=self.role, 74 user_prompt=f"Here are the CEO guidelines : {self.ceo_guidelines}", 75 model=os.getenv("GPT_VERSION", "gpt-3.5-turbo"), # TODO 76 temperature=1.0, 77 ) 78 # Convert to dict 79 employees_to_hire = ast.literal_eval( 80 response.choices[0].message.content 81 ) 82 print(json.dumps(employees_to_hire, indent=4)) 83 if self.interactive: 84 if "y" in ( 85 input( 86 f"\n {self.emoji} Are these employees good for you ?" 87 ).lower() 88 or "y" 89 ): 90 break 91 else: 92 continue 93 break 94 except Exception as err: 95 print( 96 f"\n {self.emoji} I've messed up, retrying to find employees... \n Error : \n {err}\n" 97 ) 98 else: 99 raise err 100 print(f"\n Ok, I've hired them ! Please welcome :\n") 101 hired_employees = {} 102 if employees_to_hire: 103 for employee in employees_to_hire: 104 hired_employees[employee["name"]] = Employee( 105 role_prompt=employee["role"], 106 name=employee["name"], 107 role_name=employee["role_name"], 108 creativity=float(employee["creativity"]), 109 emoji=employee["emoji"], 110 ) 111 # Add a helpful employee for task assigned to a non hired one 112 hired_employees["helpful"] = Employee( 113 role_filename=os.path.join(EMPLOYEE_PROMPTS_PATH, "helpful_employee.txt"), 114 role_name="Helpful employee", 115 ) 116 return hired_employees 117 118 def fire_employees(self, employees_to_fire: List[Employee]): 119 """ 120 Fire the given employee 121 122 Args: 123 employee (List[Employee]): _description_ 124 """ 125 pass
A team leader will try to achieve CEO guidelines by hiring employes.
TeamLeader( ceo_guidelines: str, manager_retry: int, output_directory: str, interactive: bool = False)
25 def __init__( 26 self, 27 ceo_guidelines: str, 28 manager_retry: int, 29 output_directory: str, 30 interactive: bool = False, 31 ): 32 """ 33 34 Args: 35 ceo_guidelines (str): _description_ 36 manager_retry (int): _description_ 37 output_directory (str): _description_ 38 interactive (bool): Defaults to False 39 """ 40 with open( 41 os.path.join( 42 ( 43 MANAGER_PROMPTS_PATH 44 if not os.getenv("CUSTOM_MANAGER_PROMPTS_PATH") 45 else os.getenv("CUSTOM_MANAGER_PROMPTS_PATH") 46 ), 47 "team_leader.txt", 48 ), 49 "r", 50 ) as file: 51 self.role = file.read() 52 self.ceo_guidelines = ceo_guidelines 53 self.manager_retry = manager_retry 54 self.output_directory = output_directory 55 self.interactive = interactive 56 self.emoji = "\U0001F57A" 57 self.tasks = None
Arguments:
- ceo_guidelines (str): _description_
- manager_retry (int): _description_
- output_directory (str): _description_
- interactive (bool): Defaults to False
59 def hire_employees(self) -> List[Dict[str, Employee]]: 60 """ 61 Ask the team leader to find and hire employees 62 63 Returns: 64 List[Dict[str, Employee]]: A list containing employee CV by employee name 65 """ 66 employees_to_hire = None 67 for _ in range(self.manager_retry): 68 try: 69 print( 70 f"\n {self.emoji} Hey, I'm hiring employees to achieve your guidelines !\n" 71 ) 72 response = generate_text( 73 system_prompt=self.role, 74 user_prompt=f"Here are the CEO guidelines : {self.ceo_guidelines}", 75 model=os.getenv("GPT_VERSION", "gpt-3.5-turbo"), # TODO 76 temperature=1.0, 77 ) 78 # Convert to dict 79 employees_to_hire = ast.literal_eval( 80 response.choices[0].message.content 81 ) 82 print(json.dumps(employees_to_hire, indent=4)) 83 if self.interactive: 84 if "y" in ( 85 input( 86 f"\n {self.emoji} Are these employees good for you ?" 87 ).lower() 88 or "y" 89 ): 90 break 91 else: 92 continue 93 break 94 except Exception as err: 95 print( 96 f"\n {self.emoji} I've messed up, retrying to find employees... \n Error : \n {err}\n" 97 ) 98 else: 99 raise err 100 print(f"\n Ok, I've hired them ! Please welcome :\n") 101 hired_employees = {} 102 if employees_to_hire: 103 for employee in employees_to_hire: 104 hired_employees[employee["name"]] = Employee( 105 role_prompt=employee["role"], 106 name=employee["name"], 107 role_name=employee["role_name"], 108 creativity=float(employee["creativity"]), 109 emoji=employee["emoji"], 110 ) 111 # Add a helpful employee for task assigned to a non hired one 112 hired_employees["helpful"] = Employee( 113 role_filename=os.path.join(EMPLOYEE_PROMPTS_PATH, "helpful_employee.txt"), 114 role_name="Helpful employee", 115 ) 116 return hired_employees
Ask the team leader to find and hire employees
Returns:
List[Dict[str, Employee]]: A list containing employee CV by employee name