Spaces:
Sleeping
Sleeping
File size: 3,056 Bytes
784651e 1bd9ce8 ca22196 1bd9ce8 784651e 1bd9ce8 ca22196 1bd9ce8 ca22196 1bd9ce8 ca22196 1bd9ce8 784651e 1bd9ce8 ca22196 1bd9ce8 ca22196 1bd9ce8 784651e 1bd9ce8 ca22196 1bd9ce8 ca22196 | 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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | 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"
@CrewBase
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
@agent
def engineering_lead(self) -> Agent:
return Agent(
config=self._agent_config('engineering_lead'),
llm=create_llm(),
verbose=True,
)
@agent
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
)
@agent
def frontend_engineer(self) -> Agent:
return Agent(
config=self._agent_config('frontend_engineer'),
llm=create_llm(),
verbose=True,
)
@agent
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
)
@agent
def python_code_runner(self) -> Agent:
return Agent(
config=self._agent_config('python_code_runner'),
llm=create_llm(),
verbose=True,
tools=[PythonCodeRunTool()],
)
@task
def design_task(self) -> Task:
return Task(
config=self.tasks_config['design_task']
)
@task
def code_task(self) -> Task:
return Task(
config=self.tasks_config['code_task'],
)
@task
def frontend_task(self) -> Task:
return Task(
config=self.tasks_config['frontend_task'],
)
@task
def test_task(self) -> Task:
return Task(
config=self.tasks_config['test_task'],
)
@task
def python_code_run_task(self) -> Task:
return Task(
config=self.tasks_config['python_code_run_task']
)
@crew
def crew(self) -> Crew:
"""Creates the research crew"""
return Crew(
agents=self.agents,
tasks=self.tasks,
process=Process.sequential,
verbose=True,
)
|