Spaces:
Runtime error
Runtime error
| #!/usr/bin/env python3 | |
| """ | |
| Debug script to test missing skills recomputation | |
| """ | |
| import sys | |
| import os | |
| sys.path.insert(0, '/home/ec2-user/environment/coachable-course-agent') | |
| from coachable_course_agent.memory_store import load_user_profile, save_updated_goal | |
| from langchain_community.vectorstores import Chroma | |
| from langchain.embeddings import HuggingFaceEmbeddings | |
| import json | |
| def test_missing_skills_recomputation(): | |
| print("=== Testing Missing Skills Recomputation ===") | |
| # First, check what users we have | |
| memory_dir = "/home/ec2-user/environment/coachable-course-agent/data/memory" | |
| users = [f.replace('.json', '') for f in os.listdir(memory_dir) if f.endswith('.json')] | |
| print(f"Available users: {users}") | |
| if not users: | |
| print("No users found!") | |
| return | |
| # Use the first user for testing | |
| user_id = users[0] | |
| print(f"Testing with user: {user_id}") | |
| # Load their current profile | |
| profile = load_user_profile(user_id) | |
| if not profile: | |
| print("Failed to load profile!") | |
| return | |
| print(f"Current profile keys: {list(profile.keys())}") | |
| print(f"Current goal: {profile.get('goal', 'None')}") | |
| print(f"Current missing skills count: {len(profile.get('missing_skills', []))}") | |
| # Show some missing skills if they exist | |
| missing_skills = profile.get('missing_skills', []) | |
| if missing_skills: | |
| print("Current missing skills (first 3):") | |
| for i, skill in enumerate(missing_skills[:3]): | |
| if isinstance(skill, dict): | |
| print(f" {i+1}. {skill.get('preferredLabel', skill)}") | |
| else: | |
| print(f" {i+1}. {skill}") | |
| else: | |
| print("No missing skills currently!") | |
| # Load ESCO vectorstore | |
| print("\nLoading ESCO vectorstore...") | |
| try: | |
| embedding_model = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2") | |
| esco_vectorstore = Chroma( | |
| persist_directory="data/esco_chroma", | |
| embedding_function=embedding_model | |
| ) | |
| print("ESCO vectorstore loaded successfully") | |
| except Exception as e: | |
| print(f"Failed to load ESCO vectorstore: {e}") | |
| return | |
| # Test updating goal with the same goal to trigger recomputation | |
| old_goal = profile.get('goal', '') | |
| if not old_goal: | |
| old_goal = "I want to learn data science and machine learning skills" | |
| print(f"No existing goal, using test goal: {old_goal}") | |
| print(f"\nTesting goal update with: {old_goal}") | |
| print("This should trigger missing skills recomputation...") | |
| # Call save_updated_goal which should recompute missing skills | |
| try: | |
| result = save_updated_goal(user_id, old_goal, esco_vectorstore) | |
| print(f"Result: {result}") | |
| except Exception as e: | |
| print(f"Error during goal update: {e}") | |
| import traceback | |
| traceback.print_exc() | |
| return | |
| # Check the profile again | |
| updated_profile = load_user_profile(user_id) | |
| updated_missing_skills = updated_profile.get('missing_skills', []) | |
| print(f"\nAfter goal update:") | |
| print(f"Missing skills count: {len(updated_missing_skills)}") | |
| if updated_missing_skills: | |
| print("Updated missing skills (first 5):") | |
| for i, skill in enumerate(updated_missing_skills[:5]): | |
| if isinstance(skill, dict): | |
| print(f" {i+1}. {skill.get('preferredLabel', skill)}") | |
| else: | |
| print(f" {i+1}. {skill}") | |
| else: | |
| print("Still no missing skills after recomputation!") | |
| print("\n=== Test Complete ===") | |
| if __name__ == "__main__": | |
| test_missing_skills_recomputation() | |