File size: 1,975 Bytes
948ccfc
647a8de
7123e1b
be5f34e
e9b2e7f
 
64b6a3a
 
be5f34e
64b6a3a
 
be5f34e
64b6a3a
 
be5f34e
64b6a3a
 
 
 
 
948ccfc
64b6a3a
647a8de
 
 
 
 
 
 
7123e1b
 
 
647a8de
7123e1b
647a8de
948ccfc
7123e1b
64b6a3a
948ccfc
647a8de
7123e1b
 
647a8de
 
 
 
 
7123e1b
 
647a8de
 
948ccfc
647a8de
7123e1b
 
647a8de
 
7123e1b
 
647a8de
7123e1b
 
948ccfc
7123e1b
 
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
import json
import os
from flask import Flask, request, jsonify
from transformers import pipeline
from huggingface_hub import login

# Retrieve Hugging Face token securely
hf_token = os.getenv("chatbot")

if hf_token is None:
    raise ValueError("Hugging Face token is missing! Set HF_TOKEN in your environment variables or Secrets.")

# Log in with Hugging Face token
login(token=hf_token)

# Load the model (Falcon-1B)
try:
    llm = pipeline("text-generation", model="tiiuae/falcon-1b-instruct", token=hf_token)
except Exception as e:
    raise RuntimeError(f"Error loading model: {str(e)}")

# Load the schemes data from JSON file
SCHEMES_FILE = "schemes.json"

if os.path.exists(SCHEMES_FILE):
    with open(SCHEMES_FILE, "r", encoding="utf-8") as f:
        schemes_data = json.load(f)
else:
    schemes_data = {"schemes": []}  # Default to empty if file is missing

app = Flask(__name__)

# Function to search for relevant scheme information
def find_scheme_info(query):
    for scheme in schemes_data.get("schemes", []):
        if query.lower() in scheme["name"].lower() or query.lower() in scheme["description"].lower():
            return scheme["description"]
    return None

# Function to generate chatbot response
def chatbot_response(query):
    scheme_info = find_scheme_info(query)
    
    if scheme_info:
        return scheme_info  # Return scheme info if found
    
    try:
        response = llm(query, max_length=200, do_sample=True)
        return response[0]['generated_text']
    except Exception as e:
        return f"Error generating response: {str(e)}"

# API route for chatbot
@app.route("/chat", methods=["POST"])
def chat():
    user_input = request.json.get("query", "").strip()
    
    if not user_input:
        return jsonify({"error": "No query provided"}), 400
    
    response = chatbot_response(user_input)
    return jsonify({"response": response})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=7860, debug=True)