diff --git a/src/crewai/cli/create_pipeline.py b/src/crewai/cli/create_pipeline.py index ad1d4d966..7b555ca20 100644 --- a/src/crewai/cli/create_pipeline.py +++ b/src/crewai/cli/create_pipeline.py @@ -1,9 +1,9 @@ +import os +import shutil from pathlib import Path import click -from crewai.cli.utils import copy_template - def create_pipeline(name, router=False): """Create a new pipeline project.""" @@ -42,28 +42,40 @@ def create_pipeline(name, router=False): if router: crew_template_files.append("crews/write_linkedin_crew.py") + def process_file(src_file, dst_file): + with open(src_file, "r") as file: + content = file.read() + + content = content.replace("{{name}}", name) + content = content.replace("{{crew_name}}", class_name) + content = content.replace("{{folder_name}}", folder_name) + content = content.replace("{{pipeline_name}}", class_name) + + with open(dst_file, "w") as file: + file.write(content) + # Copy and process root template files for file_name in root_template_files: src_file = templates_dir / file_name dst_file = project_root / file_name - copy_template(src_file, dst_file, name, class_name, folder_name) + process_file(src_file, dst_file) # Copy and process src template files for file_name in src_template_files: src_file = templates_dir / file_name dst_file = project_root / "src" / folder_name / file_name - copy_template(src_file, dst_file, name, class_name, folder_name) + process_file(src_file, dst_file) # Copy tools and config files for file_name in tools_template_files + config_template_files: src_file = templates_dir / file_name dst_file = project_root / "src" / folder_name / file_name - copy_template(src_file, dst_file, name, class_name, folder_name) + shutil.copy(src_file, dst_file) # Copy and process crew files for file_name in crew_template_files: src_file = templates_dir / file_name dst_file = project_root / "src" / folder_name / file_name - copy_template(src_file, dst_file, name, class_name, folder_name) + process_file(src_file, dst_file) click.secho(f"Pipeline {name} created successfully!", fg="green", bold=True) diff --git a/src/crewai/cli/templates/pipeline/crews/research_crew.py b/src/crewai/cli/templates/pipeline/crews/research_crew.py index 07ade70ab..b241fc269 100644 --- a/src/crewai/cli/templates/pipeline/crews/research_crew.py +++ b/src/crewai/cli/templates/pipeline/crews/research_crew.py @@ -17,8 +17,8 @@ class ResearchReport(BaseModel): @CrewBase class ResearchCrew(): """Research Crew""" - agents_config = '../config/agents.yaml' - tasks_config = '../config/tasks.yaml' + agents_config = 'config/agents.yaml' + tasks_config = 'config/tasks.yaml' @agent def researcher(self) -> Agent: diff --git a/src/crewai/cli/templates/pipeline/crews/write_linkedin_crew.py b/src/crewai/cli/templates/pipeline/crews/write_linkedin_crew.py index edeb1bf89..e34f12f98 100644 --- a/src/crewai/cli/templates/pipeline/crews/write_linkedin_crew.py +++ b/src/crewai/cli/templates/pipeline/crews/write_linkedin_crew.py @@ -10,8 +10,8 @@ from crewai.project import CrewBase, agent, crew, task @CrewBase class WriteLinkedInCrew(): """Research Crew""" - agents_config = '../config/agents.yaml' - tasks_config = '../config/tasks.yaml' + agents_config = 'config/agents.yaml' + tasks_config = 'config/tasks.yaml' @agent def researcher(self) -> Agent: diff --git a/src/crewai/cli/templates/pipeline/crews/write_x_crew.py b/src/crewai/cli/templates/pipeline/crews/write_x_crew.py index bb8af2279..933417c66 100644 --- a/src/crewai/cli/templates/pipeline/crews/write_x_crew.py +++ b/src/crewai/cli/templates/pipeline/crews/write_x_crew.py @@ -10,8 +10,8 @@ from crewai.project import CrewBase, agent, crew, task @CrewBase class WriteXCrew(): """Research Crew""" - agents_config = '../config/agents.yaml' - tasks_config = '../config/tasks.yaml' + agents_config = 'config/agents.yaml' + tasks_config = 'config/tasks.yaml' @agent def x_writer_agent(self) -> Agent: diff --git a/src/crewai/cli/templates/pipeline/main.py b/src/crewai/cli/templates/pipeline/main.py index 46649c592..829008a0b 100644 --- a/src/crewai/cli/templates/pipeline/main.py +++ b/src/crewai/cli/templates/pipeline/main.py @@ -1,6 +1,6 @@ #!/usr/bin/env python import asyncio -from pipeline import {{pipeline_name}}Pipeline +from {{folder_name}}.pipeline import {{pipeline_name}}Pipeline async def run(): """ diff --git a/src/crewai/cli/templates/pipeline/pipeline.py b/src/crewai/cli/templates/pipeline/pipeline.py index 69f6984dd..1fc4a7938 100644 --- a/src/crewai/cli/templates/pipeline/pipeline.py +++ b/src/crewai/cli/templates/pipeline/pipeline.py @@ -43,7 +43,7 @@ from .crews.write_x_crew import WriteXCrew # Uncomment the following code block to use Example 1 @PipelineBase -class ContentPipeline: +class {{pipeline_name}}Pipeline: def __init__(self): # Initialize crews self.research_crew = ResearchCrew().crew() @@ -64,12 +64,12 @@ class ContentPipeline: return results -# EXAMPLE 2: Three-Stage Pipeline with Parallel Execution +# EXAMPLE 2: Two-Stage Pipeline with Parallel Execution # ------------------------------------------------------- # Uncomment the following code block to use Example 2 # @PipelineBase -# class ContentPipeline: +# class {{pipeline_name}}Pipeline: # def __init__(self): # # Initialize crews # self.research_crew = ResearchCrew().crew() diff --git a/src/crewai/cli/templates/pipeline/pyproject.toml b/src/crewai/cli/templates/pipeline/pyproject.toml index bf0413ebd..e000b39a7 100644 --- a/src/crewai/cli/templates/pipeline/pyproject.toml +++ b/src/crewai/cli/templates/pipeline/pyproject.toml @@ -11,7 +11,7 @@ crewai = { extras = ["tools"], path = "/Users/brandonhancock/Code/crewai/crewAI" asyncio = "*" [tool.poetry.scripts] -{{folder_name}} = "{{folder_name}}.src.{{folder_name}}.main:main" +{{folder_name}} = "{{folder_name}}.main:main" [build-system] requires = ["poetry-core"] diff --git a/src/crewai/project/crew_base.py b/src/crewai/project/crew_base.py index 2f33c06af..0085e2eb4 100644 --- a/src/crewai/project/crew_base.py +++ b/src/crewai/project/crew_base.py @@ -34,6 +34,8 @@ def CrewBase(cls): "Unable to dynamically determine the project's base directory, you must run it from the project's root directory." ) + print("Base directory: ", self.base_directory) + self.agents_config = self.load_yaml( os.path.join(self.base_directory, self.original_agents_config_path) )