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
ceo_guidelines
manager_retry
output_directory
interactive
emoji
tasks
def hire_employees(self) -> List[Dict[str, gpt_enterprise.employee.Employee]]:
 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

def fire_employees(self, employees_to_fire: List[gpt_enterprise.employee.Employee]):
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

Fire the given employee

Arguments:
  • employee (List[Employee]): _description_