# Advanced Usage for Developers: Integrating Curie with Your Own Projects.

This tutorial extends the QuickStart guide, introducing two advanced features of Curie:

1. Integrating Your Own Starting Files – If you have existing articles, papers, datasets, or code, Curie can incorporate them into its workflow. This allows the system to work with pre-defined experimental setups rather than generating everything from scratch, making it more adaptable to real-world research scenarios.

2. Configuring Curie for Custom Tasks – Beyond experimentation, Curie allows developers to redefine agent responsibilities, enabling its use in broader applications such as data science workflows, travel planning, and complex multi-stage decision-making. This flexibility ensures that Curie can be tailored to fit various automation needs.

*Please make sure you have installed the environment by following the instructions [here](installation.md).*

## Adding Your Own Starting Files

1. Have your starter file and dataset ready:

```
/my_project
  ├── question.txt
  ├── context/
  │    ├── paper.pdf
  ├── scripts/
  │    ├── run.py
  │    ├── preprocess.sh  
/my_dataset
  ├── experiment_data.csv
```

2. Configuring Curie to Use Your Files

Modify the job configuration file `curie/configs/template.json`:
- `"workspace_name": "/my_project"`
- `"dataset_dir": "/my_dataset"`
- Edit more arguments as needed, and none of these arguments are required.

3. Running Curie

```bash
cd Curie/
python3 -m curie.main -f /my_project/question.txt \
                      --task_config curie/configs/template.json 
```

- Upon execution, Curie will copy your `my_project` directory into `workspace/my_project_<ID>`, ensuring all modifications occur in a controlled environment.

## Customize Curie for Different Tasks

1. Modify Configuration for Task Adaptation

Adjust `curie/configs/template.json` to suit your task requirements. You can customize the system prompts used by Curie’s agents by modifying the following fields:

- `"supervisor_system_prompt_filename"` – Defines high-level instructions for the Supervisor Agent.
- `"control_worker_system_prompt_filename"` – Configures the Experimentation Worker for executing experiments and processing tasks.
- `"coding_prompt_filename"` – Provides instructions for the Coding Agent, which is responsible for generating code and scripts necessary for experiment execution.
- `"llm_verifier_system_prompt_filename"` – Specifies instructions for the LLM Verifier, which reviews outputs generated by other agents, cross-checking their reasoning and ensuring alignment with scientific rigor.
- (Additional parameters can be customized as needed—refer to the full configuration list for more options.)

