Spaces:
Sleeping
Sleeping
| import os | |
| from crewai import Agent, Crew, Process, Task | |
| from crewai.project import CrewBase, agent, crew, task | |
| from .model_client import create_llm | |
| from .tools.python_code_run_tool import PythonCodeRunTool | |
| def is_running_in_hf_space() -> bool: | |
| """Returns True if running in a Hugging Face Space.""" | |
| return os.environ.get("SPACE_ID") is not None | |
| # If running in Hugging Face Space, then do not run code execution in docker | |
| run_in_docker = "unsafe" if is_running_in_hf_space() else "safe" | |
| class EngineeringTeam(): | |
| """EngineeringTeam crew""" | |
| agents_config = 'config/agents.yaml' | |
| tasks_config = 'config/tasks.yaml' | |
| def _agent_config(self, name: str) -> dict: | |
| config = dict(self.agents_config[name]) | |
| config.pop("llm", None) | |
| return config | |
| def engineering_lead(self) -> Agent: | |
| return Agent( | |
| config=self._agent_config('engineering_lead'), | |
| llm=create_llm(), | |
| verbose=True, | |
| ) | |
| def backend_engineer(self) -> Agent: | |
| return Agent( | |
| config=self._agent_config('backend_engineer'), | |
| llm=create_llm(), | |
| verbose=True, | |
| allow_code_execution=True, | |
| code_execution_mode=run_in_docker, | |
| max_execution_time=500, | |
| max_retry_limit=3 | |
| ) | |
| def frontend_engineer(self) -> Agent: | |
| return Agent( | |
| config=self._agent_config('frontend_engineer'), | |
| llm=create_llm(), | |
| verbose=True, | |
| ) | |
| def test_engineer(self) -> Agent: | |
| return Agent( | |
| config=self._agent_config('test_engineer'), | |
| llm=create_llm(), | |
| verbose=True, | |
| allow_code_execution=True, | |
| code_execution_mode=run_in_docker, | |
| max_execution_time=500, | |
| max_retry_limit=3 | |
| ) | |
| def python_code_runner(self) -> Agent: | |
| return Agent( | |
| config=self._agent_config('python_code_runner'), | |
| llm=create_llm(), | |
| verbose=True, | |
| tools=[PythonCodeRunTool()], | |
| ) | |
| def design_task(self) -> Task: | |
| return Task( | |
| config=self.tasks_config['design_task'] | |
| ) | |
| def code_task(self) -> Task: | |
| return Task( | |
| config=self.tasks_config['code_task'], | |
| ) | |
| def frontend_task(self) -> Task: | |
| return Task( | |
| config=self.tasks_config['frontend_task'], | |
| ) | |
| def test_task(self) -> Task: | |
| return Task( | |
| config=self.tasks_config['test_task'], | |
| ) | |
| def python_code_run_task(self) -> Task: | |
| return Task( | |
| config=self.tasks_config['python_code_run_task'] | |
| ) | |
| def crew(self) -> Crew: | |
| """Creates the research crew""" | |
| return Crew( | |
| agents=self.agents, | |
| tasks=self.tasks, | |
| process=Process.sequential, | |
| verbose=True, | |
| ) | |