Spaces:
No application file
No application file
File size: 2,399 Bytes
33d02c1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
from flask import Flask, request, jsonify, render_template,send_from_directory
from flask_cors import CORS
import logging
from query_ai import query_gemini
from knowledge_base import search_knowledge_base, save_to_knowledge_base
from prompts import get_prompt
import os
# from speech_to_text import recognize_speech
# Initialize Flask app
app = Flask(__name__, static_folder="Static")
CORS(app, resources={r"/*": {"origins": "*"}})
# Configure logging
logging.basicConfig(level=logging.DEBUG)
@app.route("/")
def home():
# return "Chatbot is running"
return render_template("index.html")
@app.route('/chat', methods=['POST'])
def chat():
try:
data = request.json
user_input = data.get("message", "").strip()
query_type = data.get("format", "default")
if not user_input:
return jsonify({"response": "Please provide a valid message."})
# ๐น Step 1: Check predefined prompts
prompt_response = get_prompt(user_input.lower()) or "Let me find an answer for you."
# ๐น Step 2: Search the knowledge base
kb_response = search_knowledge_base(user_input)
# ๐น Step 3: Construct final prompt
final_prompt = f"{prompt_response}\n\nUser Query: {user_input}"
if kb_response:
final_prompt = f"{prompt_response}\n\nBased on the knowledge base: {kb_response}\n\nUser Query: {user_input}"
# ๐น Step 4: Generate AI response
response = query_gemini(final_prompt, query_type=query_type)
# ๐น Step 5: Save response if it's new
if not kb_response:
save_to_knowledge_base(user_input, response)
return jsonify({"response": response})
except Exception as e:
logging.error(f"Error in /chat endpoint: {e}")
return jsonify({"response": "An error occurred while processing your request."})
# @app.route("/script/chatbot.js")
# def chatbot_script():
# return send_from_directory("static", "chatbot.js")
@app.route('/speech', methods=['GET'])
def speech_to_text():
"""Endpoint to recognize speech and return text."""
text = recognize_speech()
return jsonify({"recognized_text": text})
if __name__ == '__main__':
# port = int(os.environ.get("PORT", 10000)) # Use Render's default port
app.run(host="0.0.0.0", debug=True) |