Spaces:
Running
Running
Upload test_generator.py
Browse files
src/aibom_generator/test_generator.py
ADDED
@@ -0,0 +1,102 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/usr/bin/env python3
|
2 |
+
"""
|
3 |
+
Simple test script to verify the AIBOM generator functionality without the API layer.
|
4 |
+
This helps isolate whether the issue is with the generator or the API.
|
5 |
+
"""
|
6 |
+
|
7 |
+
import os
|
8 |
+
import json
|
9 |
+
import logging
|
10 |
+
import sys
|
11 |
+
from pathlib import Path
|
12 |
+
|
13 |
+
# Configure logging
|
14 |
+
logging.basicConfig(
|
15 |
+
level=logging.INFO,
|
16 |
+
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
17 |
+
)
|
18 |
+
logger = logging.getLogger(__name__)
|
19 |
+
|
20 |
+
# Define output directory
|
21 |
+
OUTPUT_DIR = "/tmp/aibom_output"
|
22 |
+
os.makedirs(OUTPUT_DIR, exist_ok=True)
|
23 |
+
|
24 |
+
def test_generator(model_id="meta-llama/Llama-2-7b-chat-hf"):
|
25 |
+
"""Test the AIBOM generator functionality directly."""
|
26 |
+
logger.info(f"Testing AIBOM generator with model_id: {model_id}")
|
27 |
+
|
28 |
+
# Try different import paths to find the generator
|
29 |
+
try:
|
30 |
+
logger.info("Trying to import from src.aibom_generator.generator")
|
31 |
+
from src.aibom_generator.generator import AIBOMGenerator
|
32 |
+
logger.info("Successfully imported from src.aibom_generator.generator")
|
33 |
+
except ImportError as e:
|
34 |
+
logger.warning(f"Import from src.aibom_generator.generator failed: {e}")
|
35 |
+
try:
|
36 |
+
logger.info("Trying to import from aibom_generator.generator")
|
37 |
+
from aibom_generator.generator import AIBOMGenerator
|
38 |
+
logger.info("Successfully imported from aibom_generator.generator")
|
39 |
+
except ImportError as e:
|
40 |
+
logger.warning(f"Import from aibom_generator.generator failed: {e}")
|
41 |
+
try:
|
42 |
+
logger.info("Trying to import from generator")
|
43 |
+
from generator import AIBOMGenerator
|
44 |
+
logger.info("Successfully imported from generator")
|
45 |
+
except ImportError as e:
|
46 |
+
logger.error(f"All import attempts failed: {e}")
|
47 |
+
logger.error("Could not import AIBOMGenerator. Please check your installation.")
|
48 |
+
return False
|
49 |
+
|
50 |
+
try:
|
51 |
+
# Create generator instance
|
52 |
+
logger.info("Creating AIBOMGenerator instance")
|
53 |
+
generator = AIBOMGenerator()
|
54 |
+
|
55 |
+
# Generate AIBOM
|
56 |
+
logger.info(f"Generating AIBOM for model: {model_id}")
|
57 |
+
aibom, enhancement_report = generator.generate(
|
58 |
+
model_id=model_id,
|
59 |
+
include_inference=True,
|
60 |
+
use_best_practices=True
|
61 |
+
)
|
62 |
+
|
63 |
+
# Save AIBOM to file
|
64 |
+
filename = f"{model_id.replace('/', '_')}_aibom.json"
|
65 |
+
filepath = os.path.join(OUTPUT_DIR, filename)
|
66 |
+
logger.info(f"Saving AIBOM to: {filepath}")
|
67 |
+
with open(filepath, "w") as f:
|
68 |
+
json.dump(aibom, f, indent=2)
|
69 |
+
|
70 |
+
# Print summary
|
71 |
+
logger.info("AIBOM generation successful!")
|
72 |
+
logger.info(f"AIBOM saved to: {filepath}")
|
73 |
+
|
74 |
+
# Check if completeness score is available
|
75 |
+
if hasattr(generator, 'get_completeness_score'):
|
76 |
+
try:
|
77 |
+
logger.info("Getting completeness score")
|
78 |
+
completeness_score = generator.get_completeness_score(model_id)
|
79 |
+
logger.info(f"Completeness score: {completeness_score}")
|
80 |
+
except Exception as e:
|
81 |
+
logger.error(f"Error getting completeness score: {e}")
|
82 |
+
else:
|
83 |
+
logger.warning("get_completeness_score method not available")
|
84 |
+
|
85 |
+
return True
|
86 |
+
except Exception as e:
|
87 |
+
logger.error(f"Error in test_generator: {e}", exc_info=True)
|
88 |
+
return False
|
89 |
+
|
90 |
+
if __name__ == "__main__":
|
91 |
+
# Use command line argument for model_id if provided
|
92 |
+
model_id = sys.argv[1] if len(sys.argv) > 1 else "meta-llama/Llama-2-7b-chat-hf"
|
93 |
+
|
94 |
+
logger.info("Starting AIBOM generator test")
|
95 |
+
success = test_generator(model_id)
|
96 |
+
|
97 |
+
if success:
|
98 |
+
logger.info("Test completed successfully!")
|
99 |
+
sys.exit(0)
|
100 |
+
else:
|
101 |
+
logger.error("Test failed!")
|
102 |
+
sys.exit(1)
|