Update spring boot and spring ai to latest, add some run-verify scripts for automation
This commit is contained in:
@@ -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>
|
||||
|
||||
141
agentic-patterns/evaluator-optimizer/run-evaluator-optimizer.sh
Executable file
141
agentic-patterns/evaluator-optimizer/run-evaluator-optimizer.sh
Executable 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
|
||||
@@ -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}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user