ClaudeHopper

by Arborist-ai
Verified
#!/bin/bash # Script to install the required Ollama models for the ClaudeHopper project # Usage: ./install_models.sh [--all] echo "=== 🏗️ Installing Ollama Models for ClaudeHopper ===" echo "" # Check if Ollama is installed if ! command -v ollama &> /dev/null; then echo "❌ Ollama is not installed. Please install Ollama first from https://ollama.com/" exit 1 fi # Check ollama status if ! ollama list &> /dev/null; then echo "❌ Ollama is not running. Please start Ollama and try again." exit 1 fi # Read model configuration from user_config.ts CONFIG_FILE="src/config/user_config.ts" # Function to extract model name from user_config.ts get_model_name() { local model_type=$1 grep -o "\\[ModelTaskType.${model_type}\\]: '[^']*'" "$CONFIG_FILE" | sed "s/.*: '\\(.*\\)'.*/\\1/" } # Extract model names EMBEDDING_MODEL=$(get_model_name "EMBEDDING") SUMMARIZATION_MODEL=$(get_model_name "SUMMARIZATION") METADATA_MODEL=$(get_model_name "METADATA_EXTRACTION") IMAGE_MODEL=$(get_model_name "IMAGE_EMBEDDING") SECTION_MODEL=$(get_model_name "SECTION_DETECTION") # If we couldn't extract the model names, use defaults if [ -z "$EMBEDDING_MODEL" ]; then EMBEDDING_MODEL="nomic-embed-text" fi if [ -z "$SUMMARIZATION_MODEL" ]; then SUMMARIZATION_MODEL="phi4" fi if [ -z "$METADATA_MODEL" ]; then METADATA_MODEL="phi4" fi if [ -z "$IMAGE_MODEL" ]; then IMAGE_MODEL="granite3.2-vision" fi if [ -z "$SECTION_MODEL" ]; then SECTION_MODEL="phi4" fi # Check if --all flag is provided INSTALL_ALL=false if [ "$1" == "--all" ]; then INSTALL_ALL=true echo "Installing ALL available models (this may take a while)..." else echo "Installing default models for construction document processing:" echo "- Embedding: $EMBEDDING_MODEL" echo "- Summarization: $SUMMARIZATION_MODEL" echo "- Metadata extraction: $METADATA_MODEL" echo "- Section detection: $SECTION_MODEL" echo "" echo "Use --all flag to install all available models." fi # Install required models from configuration echo "" echo "Installing embedding model: $EMBEDDING_MODEL" ollama pull "$EMBEDDING_MODEL" echo "" echo "Installing summarization model: $SUMMARIZATION_MODEL" ollama pull "$SUMMARIZATION_MODEL" # Only install metadata model if different from summarization model if [ "$METADATA_MODEL" != "$SUMMARIZATION_MODEL" ]; then echo "" echo "Installing metadata extraction model: $METADATA_MODEL" ollama pull "$METADATA_MODEL" fi # Only install section detection model if different from other models if [ "$SECTION_MODEL" != "$SUMMARIZATION_MODEL" ] && [ "$SECTION_MODEL" != "$METADATA_MODEL" ]; then echo "" echo "Installing section detection model: $SECTION_MODEL" ollama pull "$SECTION_MODEL" fi # Install additional models if --all flag is provided if [ "$INSTALL_ALL" = true ]; then # Get all available models from models.ts registry MODELS_FILE="src/config/models.ts" echo "" echo "Installing additional embedding models..." for model in $(grep -o "'[^']*'" "$MODELS_FILE" | grep -v "$EMBEDDING_MODEL" | sort | uniq | tr -d "'"); do # Skip models we've already installed if [ "$model" != "$SUMMARIZATION_MODEL" ] && [ "$model" != "$METADATA_MODEL" ] && [ "$model" != "$SECTION_MODEL" ]; then # Check if it looks like a model name (no spaces, special chars) if [[ $model =~ ^[a-zA-Z0-9._:-]+$ ]]; then echo "Installing $model..." ollama pull "$model" || echo "Failed to install $model (may not be available)" fi fi done fi echo "" echo "=== Model Installation Complete ===" echo "" echo "Installed models for construction document processing:" echo "- $EMBEDDING_MODEL (embedding)" echo "- $SUMMARIZATION_MODEL (summarization)" if [ "$METADATA_MODEL" != "$SUMMARIZATION_MODEL" ]; then echo "- $METADATA_MODEL (metadata extraction)" fi if [ "$SECTION_MODEL" != "$SUMMARIZATION_MODEL" ] && [ "$SECTION_MODEL" != "$METADATA_MODEL" ]; then echo "- $SECTION_MODEL (section detection)" fi echo "" echo "You can customize which models are used in the configuration file:" echo "- src/config/user_config.ts" echo "" echo "Run the processing script to use these models:" echo "cd ~/Desktop/claudehopper && ./process_pdfdrawings.sh" echo ""