from crewai import Agent, Task, Crew class IngestAgent(Agent): def run(self, file_path): return {"df": load_csv_to_df(file_path)} class TransformAgent(Agent): def run(self, df): transformed = df.dropna().drop_duplicates() return {"df": transformed} class LoadAgent(Agent): def run(self, df): return {"success": upload_df_to_db(df)} ingest = IngestAgent(role="Ingest") transform = TransformAgent(role="Transform") load = LoadAgent(role="Load") task1 = Task(ingest, inputs=["file_path"]) task2 = Task(transform, inputs=["df"]) task3 = Task(load, inputs=["df"]) crew = Crew(tasks=[task1, task2, task3]) crew.setup_dependencies([(task1, task2), (task2, task3)]) # Run: crew.run({"file_path": "/tmp/source.csv"})