Usage

This page explains how to set up and use the CICADA framework.


Setting Up the Environment

Prerequisites

Before setting up CICADA, ensure you have the following installed:

  • Python 3.11+

  • Conda or pip (for dependency management)

Installation Steps (Quick Start)

# activate your venv or conda env first
pip install cicada-agent

Installation Steps (For Developers)

1. Clone the Repository

git clone https://github.com/Oaklight/cicada.git
cd cicada

2. Install Dependencies

Option 1: Using Conda (Recommended)

conda env create -f environment.yml
conda activate cicada

Option 2: Using pip

python -m venv cicada
source cicada/bin/activate
pip install -r requirements.txt

3. Update API Keys

The provided API keys in the config files are deprecated. Update the api_key and api_base_url in config.yaml or config/*.yaml in each module.


Key Modules and Usage

geometry_pipeline

  • convert.py: Converts 3D models (STEP, OBJ, STL) to point cloud data (PLY) or other formats.

    python geometry_pipeline/convert.py --step_file <path_to_step_file> --convert_step2obj
    

    Options:
    --convert_step2obj, --convert_obj2pc, --convert_step2stl, --convert_obj2stl, --convert_stl2obj, --convert_stl2pc, --reaxis_gravity

  • snapshots.py: Generates preview snapshots of 3D models from multiple angles.

    python geometry_pipeline/snapshots.py --step_file <path_to_step_file> --snapshots
    

    Options:
    --obj_file, --step_file, --stl_file, -o OUTPUT_DIR, -r RESOLUTION, -d DIRECTION, -p, --reaxis_gravity

describe

  • describer_v2.py: Generates descriptive metadata for 3D models using advanced language models.

    python describe/describer_v2.py "Describe the 3D model" --config <path_to_config> --prompts <path_to_prompts>
    

    Options:
    --config CONFIG, --prompts PROMPTS, -img REF_IMAGES, -o OUTPUT

coding

  • coder.py: Generates CAD scripts based on design goals.

    python coding/coder.py "Design a mechanical part" --config <path_to_config> --prompts <path_to_prompts>
    

    Options:
    --config CONFIG, --master_config_path MASTER_CONFIG_PATH, --prompts PROMPTS, -o OUTPUT_DIR

feedbacks

  • visual_feedback.py: Analyzes rendered images of a design against the design goal.

    python feedbacks/visual_feedback.py --design_goal "Design a mechanical part" --rendered_images <path_to_images>
    

    Options:
    --config CONFIG, --prompts PROMPTS, --reference_images REFERENCE_IMAGES, --rendered_images RENDERED_IMAGES

retrieval

  • tools/build123d_retriever.py: Retrieves and manages documentation for CAD tools and libraries.

    python retrieval/tools/build123d_retriever.py [--force-rebuild] [--interactive] [--metric {l2,cosine}] [--query QUERY] [--debug]
    

    Options:
    --force-rebuild: Force rebuild the database.
    --interactive: Run in interactive mode to ask multiple questions.
    --metric {l2,cosine}: Distance metric to use for similarity search.
    --query QUERY: Query text to search in the database.
    --debug: Enable debug mode for detailed logging.

    Examples:
    Interactive mode:

    python retrieval/tools/build123d_retriever.py --interactive
    

    Single query:

    python retrieval/tools/build123d_retriever.py --query "How to extrude a shape?"
    

workflow

  • codecad_agent.py: Orchestrates the automation workflows for CAD design.

    python workflow/codecad_agent.py "Design a mechanical part" --config <path_to_config> --prompts <path_to_prompts>
    

    Options:
    --config CONFIG: Path to the configuration file.
    --prompts PROMPTS: Path to the prompts file.
    -img REF_IMAGES: Path to reference images (optional).
    -o OUTPUT_DIR: Directory to save output files (optional).

    Example:

    python workflow/codecad_agent.py "Design a mechanical part" --config workflow/config/code-llm.yaml --prompts workflow/prompts/code-llm.yaml -o output/