from flask import Flask, request, jsonify, send_from_directory from flask_cors import CORS from mistralai import Mistral import os app = Flask(__name__, static_folder='.') CORS(app, resources={ r"/chat": { "origins": ["https://your-netlify-url.netlify.app"], "methods": ["POST", "OPTIONS"], "allow_headers": ["Content-Type", "Authorization"] } }) # Mistral API configuration API_KEY = "SNCMZQyb5CvFLiQdLQAjki4NNrohYClY" MODEL = "mistral-large-latest" client = Mistral(api_key=API_KEY) @app.route('/') def serve_index(): return send_from_directory('.', 'index.html') @app.route('/') def serve_static(path): return send_from_directory('.', path) @app.route('/chat', methods=['POST']) def chat(): try: data = request.json if not data: return jsonify({"error": "No request data received"}), 400 message = data.get('message', '') history = data.get('history', []) if not message: return jsonify({"error": "No message provided"}), 400 # Prepare messages with system prompt messages = [{ "role": "system", "content": """You are a professional and friendly conversation partner. Follow these guidelines: - Use a warm, professional tone while staying conversational - Write naturally as if having a face-to-face conversation - Use simple language and avoid technical jargon unless specifically asked - Keep responses concise and informative - No special formatting, markdown, asterisks, or special characters - Use only basic punctuation and natural paragraph breaks - Keep responses to 2-3 short paragraphs maximum""" }] # Add conversation history and current message messages.extend(history) messages.append({"role": "user", "content": message}) print("Sending request to Mistral API...") try: chat_response = client.chat.complete( model=MODEL, messages=messages ) bot_response = chat_response.choices[0].message.content print(f"Bot response: {bot_response[:50]}...") return jsonify({ "response": bot_response }) except Exception as e: error_message = f"Mistral API Error: {str(e)}" print(error_message) return jsonify({"error": error_message}), 500 except Exception as e: error_message = f"Server error: {str(e)}" print(error_message) return jsonify({"error": error_message}), 500 if __name__ == "__main__": app.run(host='0.0.0.0', port=5001, debug=False)