Update spring boot and spring ai to latest, add some run-verify scripts for automation

This commit is contained in:
Mark Pollack
2025-05-02 14:11:49 -04:00
parent 234d3ff919
commit cba325ac5b
38 changed files with 682 additions and 51 deletions

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.1</version>
<version>3.4.5</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.example.spring.ai</groupId>
@@ -16,7 +16,7 @@
<description>Demo project for Spring Boot</description>
<properties>
<java.version>17</java.version>
<spring-ai.version>1.0.0-SNAPSHOT</spring-ai.version>
<spring-ai.version>1.0.0-M8</spring-ai.version>
</properties>
<dependencies>
<dependency>
@@ -25,16 +25,16 @@
</dependency>
<!-- <dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency> -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-anthropic</artifactId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.ai</groupId>-->
<!-- <artifactId>spring-ai-starter-model-anthropic</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>
<groupId>org.springframework.ai</groupId>

View File

@@ -0,0 +1,141 @@
#!/bin/bash
# Script to build and run the Evaluator-Optimizer example with verification
# Usage: ./run-evaluator-optimizer.sh
# Colors for output
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
cd "$SCRIPT_DIR"
# Initialize error counter
ERRORS=0
# Function to display section header
function section() {
echo -e "\n${YELLOW}======== $1 ========${NC}"
}
# Build the project
section "Building Evaluator-Optimizer"
echo "Running mvn clean package..."
if ! ./mvnw clean package; then
echo -e "${RED}Build failed! Cannot continue.${NC}"
exit 1
fi
# Run the application and capture output
section "Running Evaluator-Optimizer"
echo "Starting the application..."
OUTPUT_FILE=$(mktemp)
./mvnw spring-boot:run | tee "$OUTPUT_FILE" || true
section "Verifying Output"
# Check if the application completed successfully
if ! grep -q "BUILD SUCCESS" "$OUTPUT_FILE"; then
echo -e "${RED}ERROR: Application did not complete successfully${NC}"
ERRORS=$((ERRORS+1))
fi
# Check for PASS evaluation in the final output
if grep -q "EVALUATION: PASS" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ Final evaluation PASSED${NC}"
else
echo -e "${RED}ERROR: Final evaluation did not PASS${NC}"
ERRORS=$((ERRORS+1))
fi
# Check for FINAL OUTPUT message
if grep -q "FINAL OUTPUT:" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ Final output generated successfully${NC}"
else
echo -e "${RED}ERROR: Final output not found${NC}"
ERRORS=$((ERRORS+1))
fi
section "Checking Stack Implementation Requirements"
# 1. Check for push method
if grep -q "public void push" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ push(x) method implemented correctly${NC}"
else
echo -e "${RED}ERROR: push method not implemented correctly${NC}"
ERRORS=$((ERRORS+1))
fi
# 2. Check for pop method
if grep -q "public void pop" "$OUTPUT_FILE" || grep -q "public int pop" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ pop() method implemented correctly${NC}"
else
echo -e "${RED}ERROR: pop method not implemented correctly${NC}"
ERRORS=$((ERRORS+1))
fi
# 3. Check for getMin method
if grep -q "public int getMin" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ getMin() method implemented correctly${NC}"
else
echo -e "${RED}ERROR: getMin method not implemented correctly${NC}"
ERRORS=$((ERRORS+1))
fi
# 4. Check for private fields
if grep -q "private" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ private fields used${NC}"
else
echo -e "${RED}ERROR: private fields not found${NC}"
ERRORS=$((ERRORS+1))
fi
# 5. Check for 'this.' keyword usage
if grep -q "this\." "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ 'this.' keyword used correctly${NC}"
else
echo -e "${RED}ERROR: 'this.' keyword usage not found${NC}"
ERRORS=$((ERRORS+1))
fi
# 6. Check for JavaDoc style comments
if grep -q "\/\*\*" "$OUTPUT_FILE" && grep -q "\* @" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ JavaDoc documentation present${NC}"
else
echo -e "${RED}ERROR: JavaDoc documentation not properly implemented${NC}"
ERRORS=$((ERRORS+1))
fi
# 7. Check for O(1) operations mention
if grep -q "O(1)" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ O(1) operations confirmed${NC}"
else
echo -e "${RED}ERROR: O(1) operations not confirmed${NC}"
ERRORS=$((ERRORS+1))
fi
# Verify iterative improvement process
if grep -q "NEEDS_IMPROVEMENT" "$OUTPUT_FILE" && grep -q "PASS" "$OUTPUT_FILE"; then
echo -e "${GREEN}✓ Iterative improvement process confirmed (NEEDS_IMPROVEMENT → PASS)${NC}"
echo -e "${CYAN} The evaluator-optimizer workflow is functioning correctly!${NC}"
else
echo -e "${RED}ERROR: Could not verify iterative improvement process${NC}"
ERRORS=$((ERRORS+1))
fi
# Clean up
rm "$OUTPUT_FILE"
# Final result
if [ $ERRORS -eq 0 ]; then
echo -e "\n${GREEN}✓ Evaluator-Optimizer executed and verified successfully!${NC}"
echo -e "${GREEN}✓ Stack implementation meets all requirements.${NC}"
exit 0
else
echo -e "\n${RED}× Evaluator-Optimizer verification failed with $ERRORS errors!${NC}"
exit 1
fi

View File

@@ -3,7 +3,7 @@ spring.main.web-application-type=none
# OpenAI
spring.ai.openai.api-key=${OPENAI_API_KEY}
spring.ai.openai.chat.options.model=gpt-4o
# Anthropic
spring.ai.anthropic.api-key=${ANTHROPIC_API_KEY}