Skip to main content
Glama
test_prompt_system.pyβ€’9.63 kB
#!/usr/bin/env python3 """ Test script per il Prompt System di IRIS Testa il caricamento e rendering dei template Jinja2 """ import sys import os from pathlib import Path from datetime import datetime, timezone # Aggiungi il path src per gli import sys.path.insert(0, str(Path(__file__).parent.parent / "src")) from llm_core.prompts import ( PromptManager, ContextBuilder, PromptType, create_general_chat_context, create_business_assistant_context, create_email_analysis_context, create_document_analysis_context ) def test_prompt_manager_initialization(): """Test inizializzazione PromptManager""" print("πŸ”§ Testing PromptManager initialization...") try: manager = PromptManager() print(f"βœ… PromptManager initialized") print(f" Templates directory: {manager.templates_dir}") # Lista template disponibili templates = manager.list_available_templates() print(f" Available templates: {templates}") return manager except Exception as e: print(f"❌ PromptManager initialization failed: {e}") return None def test_template_validation(manager): """Test validazione template""" print("\nπŸ” Testing template validation...") templates = manager.list_available_templates() for template_name in templates: try: is_valid = manager.validate_template(template_name) status = "βœ…" if is_valid else "❌" print(f" {status} {template_name}") except Exception as e: print(f" ❌ {template_name}: {e}") def test_general_chat_context(): """Test contesto chat generale""" print("\nπŸ’¬ Testing General Chat Context...") try: context = create_general_chat_context( user_id="test_user_123", name="Marco Rossi", session_id="session_456", company="TechCorp", role="CEO", communication_style="professional", preferred_response_length="medium" ) manager = PromptManager() prompt = manager.render_prompt(context) print("βœ… General chat prompt generated") print("πŸ“„ Prompt preview:") print("-" * 50) print(prompt[:500] + "..." if len(prompt) > 500 else prompt) print("-" * 50) return True except Exception as e: print(f"❌ General chat context failed: {e}") return False def test_business_assistant_context(): """Test contesto assistente business""" print("\n🏒 Testing Business Assistant Context...") try: company_info = { "name": "InnovateTech SRL", "industry": "Software Development", "size": "50-100 employees", "description": "Sviluppiamo soluzioni AI per il business" } context = (ContextBuilder() .with_user("business_user_789", "Laura Bianchi", role="CTO", company="InnovateTech SRL", communication_style="casual", expertise_level="expert") .for_prompt_type(PromptType.BUSINESS_ASSISTANT) .with_session("business_session_101") .with_business_context( company_info=company_info, current_projects=[ {"name": "AI Assistant", "status": "in_progress", "priority": "high"}, {"name": "Mobile App", "status": "planning", "priority": "medium"} ], kpis={"MRR": "€50,000", "Customer Satisfaction": "4.8/5"}, goals=["Aumentare MRR del 30%", "Lanciare nuovo prodotto Q2"] ) .build()) manager = PromptManager() prompt = manager.render_prompt(context) print("βœ… Business assistant prompt generated") print("πŸ“„ Prompt preview:") print("-" * 50) print(prompt[:800] + "..." if len(prompt) > 800 else prompt) print("-" * 50) return True except Exception as e: print(f"❌ Business assistant context failed: {e}") return False def test_email_analysis_context(): """Test contesto analisi email""" print("\nπŸ“§ Testing Email Analysis Context...") try: email_data = { "sender": "cliente@example.com", "recipient": "marco.rossi@techcorp.com", "subject": "Proposta di collaborazione strategica", "content": """Gentile Dott. Rossi, Siamo interessati a una partnership strategica con TechCorp per sviluppare soluzioni AI innovative nel settore retail. La nostra azienda, RetailPlus, gestisce oltre 200 punti vendita e cerchiamo un partner tecnologico per implementare sistemi di raccomandazione personalizzati. Budget disponibile: €500,000 Timeline: 6 mesi Inizio progetto: Gennaio 2024 Sarebbe possibile organizzare un incontro la prossima settimana? Cordiali saluti, Giuseppe Verdi CEO RetailPlus""", "date": datetime.now(timezone.utc), "priority": "high" } context = create_email_analysis_context( user_id="email_user_456", name="Marco Rossi", session_id="email_session_789", email_data=email_data, role="CEO", company="TechCorp" ) manager = PromptManager() prompt = manager.render_prompt(context) print("βœ… Email analysis prompt generated") print("πŸ“„ Prompt preview:") print("-" * 50) print(prompt[:1000] + "..." if len(prompt) > 1000 else prompt) print("-" * 50) return True except Exception as e: print(f"❌ Email analysis context failed: {e}") return False def test_document_analysis_context(): """Test contesto analisi documenti""" print("\nπŸ“„ Testing Document Analysis Context...") try: documents = [ { "name": "Business Plan 2024.pdf", "type": "PDF", "size": "2.5 MB", "date": "2024-01-15", "description": "Piano strategico per l'anno 2024" }, { "name": "Financial Report Q4.xlsx", "type": "Excel", "size": "1.8 MB", "date": "2024-01-10", "description": "Report finanziario Q4 2023" } ] context = create_document_analysis_context( user_id="doc_user_123", name="Laura Bianchi", session_id="doc_session_456", documents=documents, task_type="comparison", role="CFO", expertise_level="expert" ) manager = PromptManager() prompt = manager.render_prompt(context) print("βœ… Document analysis prompt generated") print("πŸ“„ Prompt preview:") print("-" * 50) print(prompt[:1000] + "..." if len(prompt) > 1000 else prompt) print("-" * 50) return True except Exception as e: print(f"❌ Document analysis context failed: {e}") return False def test_context_builder_validation(): """Test validazione ContextBuilder""" print("\nπŸ”§ Testing ContextBuilder validation...") try: # Test: tentativo di creare contesto senza user profile try: builder = ContextBuilder() builder.for_prompt_type(PromptType.GENERAL_CHAT) print("❌ Should have failed without user profile") return False except ValueError: print("βœ… Correctly validates missing user profile") # Test: tentativo di creare email context senza email data try: context = (ContextBuilder() .with_user("test", "Test User") .for_prompt_type(PromptType.EMAIL_ANALYSIS) .with_session("test") .build()) print("❌ Should have failed without email context") return False except ValueError: print("βœ… Correctly validates missing email context") return True except Exception as e: print(f"❌ Context builder validation failed: {e}") return False def main(): """Esegue tutti i test del prompt system""" print("🎭 IRIS PROMPT SYSTEM TEST") print("=" * 50) # Test inizializzazione manager = test_prompt_manager_initialization() if not manager: return False # Test validazione template test_template_validation(manager) # Test contesti tests = [ test_general_chat_context, test_business_assistant_context, test_email_analysis_context, test_document_analysis_context, test_context_builder_validation ] passed = 0 total = len(tests) for test_func in tests: if test_func(): passed += 1 print(f"\n🎯 TEST RESULTS: {passed}/{total} passed") if passed == total: print("πŸŽ‰ All prompt system tests passed!") return True else: print("❌ Some tests failed") return False if __name__ == "__main__": success = main() sys.exit(0 if success else 1)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ilvolodel/iris-legacy'

If you have feedback or need assistance with the MCP directory API, please join our Discord server