arif670 commited on
Commit
72d38f5
·
verified ·
1 Parent(s): 55aa76f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -105
app.py CHANGED
@@ -1,117 +1,55 @@
1
- from transformers import pipeline
2
- import firebase_admin
3
- from firebase_admin import credentials, db
4
  import os
5
  import json
6
- from firebase_admin import credentials
 
 
 
7
 
8
- # Fetch the Firebase credentials from the Hugging Face secret
9
  firebase_credential = os.getenv("FIREBASE_CREDENTIALS")
 
 
10
 
11
- # Save the credentials to a temporary file
12
  with open("serviceAccountKey.json", "w") as f:
13
  f.write(firebase_credential)
14
 
15
- # Initialize Firebase Admin SDK
16
  cred = credentials.Certificate("serviceAccountKey.json")
17
  firebase_admin.initialize_app(cred, {"databaseURL": "https://your-database-name.firebaseio.com/"})
18
 
19
- # ----------------------------------
20
- # Initialize Hugging Face RAG Model
21
- # ----------------------------------
22
- rag_model = pipeline("question-answering", model="facebook/rag-token-base")
23
-
24
-
25
- # ----------------------------------
26
- # Functions for Firebase Operations
27
- # ----------------------------------
28
- def fetch_tasks():
29
- """Fetch tasks from Firebase Realtime Database."""
30
- ref = db.reference("projects")
31
- data = ref.get()
32
- if not data:
33
- return "No tasks found!"
34
- output = ""
35
- for project_id, project_data in data.items():
36
- output += f"Project: {project_id}\n"
37
- for task_id, task_data in project_data.get("tasks", {}).items():
38
- output += f"- Task: {task_data['title']} (Status: {task_data['status']})\n"
39
- return output
40
-
41
-
42
- def add_task(project_id, task_name, description, assignee, deadline):
43
- """Add a new task to Firebase."""
44
- ref = db.reference(f"projects/{project_id}/tasks")
45
- new_task_ref = ref.push() # Create a new task
46
- new_task_ref.set(
47
- {
48
- "title": task_name,
49
- "description": description,
50
- "status": "in-progress",
51
- "assignee": assignee,
52
- "deadline": deadline,
53
- }
54
- )
55
- return f"Task '{task_name}' added to project '{project_id}' successfully!"
56
-
57
-
58
- def query_rag(question):
59
- """Query RAG model with project data as context."""
60
- ref = db.reference("projects")
61
- data = ref.get()
62
- if not data:
63
- return "No data available for RAG."
64
-
65
- # Prepare context from Firebase data
66
- context = ""
67
- for project_id, project_data in data.items():
68
- for task_id, task_data in project_data.get("tasks", {}).items():
69
- context += f"{task_data['title']}: {task_data['status']} (Assigned to: {task_data['assignee']}).\n"
70
-
71
- # Query RAG model
72
- response = rag_model(question=question, context=context)
73
- return response["answer"]
74
-
75
-
76
- # ----------------------------------
77
- # Gradio Dashboard
78
- # ----------------------------------
79
- def dashboard():
80
- """Gradio interface for Project Management Dashboard."""
81
- with gr.Blocks() as app:
82
- gr.Markdown("## Project Management Dashboard with Live Updates")
83
-
84
- # Add Task Section
85
- with gr.Tab("Add Task"):
86
- project_id = gr.Textbox(label="Project ID")
87
- task_name = gr.Textbox(label="Task Name")
88
- description = gr.Textbox(label="Description")
89
- assignee = gr.Textbox(label="Assignee")
90
- deadline = gr.Textbox(label="Deadline (YYYY-MM-DD)")
91
- add_task_button = gr.Button("Add Task")
92
- add_task_output = gr.Textbox(label="Output", interactive=False)
93
- add_task_button.click(
94
- add_task,
95
- [project_id, task_name, description, assignee, deadline],
96
- add_task_output,
97
- )
98
-
99
- # Fetch Tasks Section
100
- with gr.Tab("View Tasks"):
101
- fetch_button = gr.Button("Fetch Tasks")
102
- tasks_output = gr.Textbox(label="Tasks", interactive=False)
103
- fetch_button.click(fetch_tasks, [], tasks_output)
104
-
105
- # Query RAG Section
106
- with gr.Tab("Ask Questions"):
107
- question = gr.Textbox(label="Ask a question about your projects")
108
- query_button = gr.Button("Get Answer")
109
- rag_output = gr.Textbox(label="Answer", interactive=False)
110
- query_button.click(query_rag, [question], rag_output)
111
-
112
- app.launch()
113
-
114
-
115
- # Launch the app
116
  if __name__ == "__main__":
117
- dashboard()
 
 
 
 
 
1
  import os
2
  import json
3
+ import firebase_admin
4
+ from firebase_admin import credentials, db
5
+ from transformers import RagTokenizer, RagRetriever, RagSequenceForGeneration
6
+ import gradio as gr
7
 
8
+ # Initialize Firebase Admin SDK
9
  firebase_credential = os.getenv("FIREBASE_CREDENTIALS")
10
+ if not firebase_credential:
11
+ raise RuntimeError("FIREBASE_CREDENTIALS environment variable is not set.")
12
 
13
+ # Save Firebase credentials to a temporary file
14
  with open("serviceAccountKey.json", "w") as f:
15
  f.write(firebase_credential)
16
 
17
+ # Initialize Firebase App
18
  cred = credentials.Certificate("serviceAccountKey.json")
19
  firebase_admin.initialize_app(cred, {"databaseURL": "https://your-database-name.firebaseio.com/"})
20
 
21
+ # Load the RAG model, tokenizer, and retriever
22
+ tokenizer = RagTokenizer.from_pretrained("facebook/rag-token-base")
23
+ retriever = RagRetriever.from_pretrained("facebook/rag-token-base", use_dummy_dataset=True) # Use a dummy dataset for now
24
+ model = RagSequenceForGeneration.from_pretrained("facebook/rag-token-base")
25
+
26
+ # Function to generate answers using the RAG model
27
+ def generate_answer(question, context=""):
28
+ # Tokenize the question and context
29
+ inputs = tokenizer(question, return_tensors="pt")
30
+
31
+ # Retrieve relevant documents (dummy dataset for this example)
32
+ # In a real-world case, you would provide a proper knowledge base or corpus
33
+ retrieved_docs = retriever(question=question, input_ids=inputs["input_ids"])
34
+
35
+ # Generate the answer using the RAG model
36
+ outputs = model.generate(input_ids=inputs["input_ids"],
37
+ context_input_ids=retrieved_docs["context_input_ids"])
38
+
39
+ # Decode the generated answer
40
+ answer = tokenizer.decode(outputs[0], skip_special_tokens=True)
41
+ return answer
42
+
43
+ # Gradio interface function
44
+ def dashboard(question):
45
+ # Generate the answer from the RAG model
46
+ answer = generate_answer(question)
47
+ return answer
48
+
49
+ # Gradio Interface Setup
50
+ interface = gr.Interface(fn=dashboard, inputs="text", outputs="text")
51
+
52
+ # Launch the Gradio app
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  if __name__ == "__main__":
54
+ interface.launch()
55
+