CoolFace
Apppublic

alschameri/helping-source

sourceHugging Faceapache-2.0updated 1y agoView on Hugging Face
0likes
app.py144 linesDownload Raw Back to root
1from flask import Flask, request, jsonify,send_from_directory,session2import os3import json4import random5import logging6from werkzeug.exceptions import BadRequest7import uuid8 9# Configure logging10logging.basicConfig(11    level=logging.INFO,12    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'13)14logger = logging.getLogger(__name__)15 16app = Flask(__name__)17app.secret_key = "super_secret_and_unique_key_123"  #18 19rag_system, gemini_client = None, None20 21@app.route("/")22def dashboard():23    initialize_services()24    return "Welcome to the Helping-source!"25 26@app.route("/get_visitor_count", methods=["GET", "POST"])27def get_visitor_count():28    from model import connect_to_postgres,VisitorCount29    30    db_url = os.environ.get('DB_URL')31    session_count, engine = connect_to_postgres(db_url)32    33    visitor = session_count.query(VisitorCount).first()34    if not visitor:35        visitor = VisitorCount(count=1)36        session_count.add(visitor)37    else:38        visitor.count += 139    session_count.commit()40    # 41    count = visitor.count if visitor else 042    session_count.close()43    return jsonify({"output": count})44 45 46def initialize_services():47    """Initialize RAG system and Gemini client."""48    global rag_system, gemini_client49    50    try:51        from gemini_client import GeminiClient52        from advance_rag_system import RAGSystem53 54        gemini_client = GeminiClient()55        rag_system = RAGSystem(gemini_client=gemini_client)56        # Initialize Gemini client57                58        logger.info("Gemini client initialized successfully")59        60        # Initialize RAG system61        # rag_system = RAGSystem(gemini_client=gemini_client)62        logger.info("RAG system initialized successfully")63        64        # Load or create index65        if not rag_system.load_index():66            logger.info("No existing index found, creating new one...")67            rag_system.create_index()68            69    except Exception as e:70        logger.error(f"Failed to initialize services: {e}")71        raise72 73# space line agency api74@app.route("/get_client_api", methods=["GET", "POST"])75def get_client_api():76    """Handle chat messages and return AI responses."""77    initialize_services()78    try:79        data = request.get_json()80        if not data or 'message' not in data:81            raise BadRequest("Missing message in request")82        83        user_message = data['message'].strip()84        session_id = data.get('session_id', str(uuid.uuid4()))85        86        # Store session ID for conversation context87        session['session_id'] = session_id88        89        logger.info(f"Processing message from session {session_id}: {user_message}")90        91        # Check for closing triggers92        closing_triggers = ["شكراً", "انتهى", "لا حاجة"]93        if any(trigger in user_message for trigger in closing_triggers):94            return jsonify({95                'response': 'شكراً لتواصلك! إذا احتجت أي مساعدة لاحقًا، أنا هنا دائمًا.',96                'suggested_questions': [],97                'session_id': session_id98            })99        100        # Retrieve relevant context using RAG101        contexts = rag_system.retrieve_with_context(user_message)102        logger.info(f"Retrieved {len(contexts)} context chunks")103        104        # Generate response using Gemini105        system_prompt = """أنت مساعد ذكي لوكالة السفر "سبيس لاين للسفريات". 106        - تجيب بأسلوب مهذب ومفيد باللغة العربية107        - تساعد العملاء في التخطيط للسفر والسياحة108        - تقدم معلومات عن الوجهات والخدمات109        - تكون إجاباتك واضحة ومختصرة (2-4 جمل)110        - تقترح 2 أسئلة متابعة مفيدة"""111        112        context_text = "\n\n".join([f"السياق {i+1}: {ctx['text']}" for i, ctx in enumerate(contexts)])113        114        response_data = gemini_client.generate_with_context(115            system_prompt=system_prompt,116            user_message=user_message,117            contexts=[ctx['text'] for ctx in contexts]118        )119        120        # Default suggested questions121        default_suggestions = [122            "ما هي عروض السفر؟",123            "التاشيرات", 124            "احجز رحلة",125            "معلومات إضافية"126        ]127        128        return jsonify({129            'response': response_data.get('text', 'عذراً، حدث خطأ في النظام. يرجى المحاولة مرة أخرى.'),130            'suggested_questions': response_data.get('suggested_questions', default_suggestions),131            'session_id': session_id132        })133        134    except Exception as e:135        logger.error(f"Error in chat endpoint: {e}")136        return jsonify({137            'error': 'حدث خطأ في النظام. يرجى المحاولة مرة أخرى.',138            'suggested_questions': ["ما هي عروض السفر؟", "عنّا", "التاشيرات", "احجز رحلة"]139        }), 500140 141 142if __name__ == "__main__":143    app.run()144