Spaces:
Sleeping
Sleeping
| """Example usage of the fraud detection system.""" | |
| import sys | |
| from pathlib import Path | |
| # Add parent directory to path to allow importing src modules | |
| sys.path.insert(0, str(Path(__file__).parent.parent)) | |
| import logging | |
| import warnings | |
| import os | |
| # Suppress warnings for cleaner output | |
| warnings.filterwarnings('ignore', category=FutureWarning) | |
| warnings.filterwarnings('ignore', category=DeprecationWarning) | |
| warnings.filterwarnings('ignore', category=UserWarning) | |
| warnings.filterwarnings('ignore', message='.*LangChain.*') | |
| from src.data.processor import FraudDataProcessor | |
| from src.llm.groq_client import GroqClient | |
| from src.rag.document_loader import DocumentLoader | |
| from src.rag.vector_store import VectorStore | |
| from src.services.fraud_analyzer import FraudAnalyzer | |
| from src.config.config import settings | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| def example_basic_llm(): | |
| """Example: Basic LLM usage.""" | |
| logger.info("=== Example: Basic LLM Usage ===") | |
| client = GroqClient() | |
| response = client.invoke( | |
| prompt="What are common indicators of credit card fraud?", | |
| system_message="You are an expert fraud detection analyst.", | |
| ) | |
| print("\nResponse:") | |
| print(response) | |
| print("\n") | |
| def example_rag_system(): | |
| """Example: RAG system setup.""" | |
| logger.info("=== Example: RAG System Setup ===") | |
| # Load documents | |
| document_loader = DocumentLoader( | |
| chunk_size=settings.chunk_size, | |
| chunk_overlap=settings.chunk_overlap, | |
| ) | |
| pdf_documents = document_loader.load_pdfs_from_directory(settings.pdf_dir) | |
| if pdf_documents: | |
| # Create vector store | |
| vector_store = VectorStore() | |
| vector_store.add_documents(pdf_documents) | |
| # Search for relevant documents | |
| query = "What are the main types of payment fraud?" | |
| results = vector_store.similarity_search(query, k=3) | |
| print(f"\nFound {len(results)} relevant documents for query: {query}") | |
| for i, doc in enumerate(results, 1): | |
| print(f"\n--- Document {i} ---") | |
| print(doc.page_content[:200] + "...") | |
| else: | |
| logger.warning("No PDF documents found") | |
| print("\n") | |
| def example_fraud_analysis(): | |
| """Example: Fraud analysis.""" | |
| logger.info("=== Example: Fraud Analysis ===") | |
| # Initialize components | |
| groq_client = GroqClient() | |
| # Setup RAG (optional) | |
| vector_store = None | |
| try: | |
| document_loader = DocumentLoader() | |
| pdf_documents = document_loader.load_pdfs_from_directory(settings.pdf_dir) | |
| if pdf_documents: | |
| vector_store = VectorStore() | |
| vector_store.add_documents(pdf_documents) | |
| except Exception as e: | |
| logger.warning(f"RAG setup failed: {e}") | |
| # Create analyzer | |
| analyzer = FraudAnalyzer( | |
| groq_client=groq_client, | |
| vector_store=vector_store, | |
| ) | |
| # Analyze a transaction | |
| try: | |
| result = analyzer.analyze_transaction( | |
| transaction_id=0, | |
| use_rag=vector_store is not None, | |
| ) | |
| print("\n=== Analysis Result ===") | |
| print(f"Transaction: {result['transaction'].get('merchant', 'N/A')}") | |
| print(f"\nAnalysis:\n{result['analysis']}") | |
| except Exception as e: | |
| logger.error(f"Analysis failed: {e}") | |
| print("\n") | |
| def example_data_processing(): | |
| """Example: Data processing.""" | |
| logger.info("=== Example: Data Processing ===") | |
| processor = FraudDataProcessor() | |
| try: | |
| # Load data | |
| train_df = processor.load_train_data() | |
| print(f"\nLoaded {len(train_df)} training samples") | |
| # Get summary | |
| summary = processor.get_transaction_summary() | |
| print(f"\n=== Dataset Summary ===") | |
| print(f"Total transactions: {summary['total_transactions']}") | |
| print(f"Fraud count: {summary['fraud_count']}") | |
| print(f"Fraud percentage: {summary['fraud_percentage']:.2f}%") | |
| print(f"Average amount: ${summary['average_amount']:.2f}") | |
| # Format a transaction | |
| if len(train_df) > 0: | |
| transaction = train_df.iloc[0].to_dict() | |
| formatted = processor.format_transaction_for_llm(transaction) | |
| print(f"\n=== Formatted Transaction ===") | |
| print(formatted) | |
| except Exception as e: | |
| logger.error(f"Data processing failed: {e}") | |
| print("\n") | |
| if __name__ == "__main__": | |
| print("Fraud Detection System - Example Usage\n") | |
| print("=" * 50) | |
| # Run examples | |
| try: | |
| example_basic_llm() | |
| except Exception as e: | |
| logger.error(f"Basic LLM example failed: {e}") | |
| try: | |
| example_data_processing() | |
| except Exception as e: | |
| logger.error(f"Data processing example failed: {e}") | |
| try: | |
| example_rag_system() | |
| except Exception as e: | |
| logger.error(f"RAG system example failed: {e}") | |
| try: | |
| example_fraud_analysis() | |
| except Exception as e: | |
| logger.error(f"Fraud analysis example failed: {e}") | |
| print("=" * 50) | |
| print("\nExamples completed!") | |