Srinivasulu kethanaboina commited on
Commit
cd7fdea
1 Parent(s): 5aba4e3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -32
app.py CHANGED
@@ -6,7 +6,6 @@ from fastapi import FastAPI, Request
6
  from llama_index.core import StorageContext, load_index_from_storage, VectorStoreIndex, SimpleDirectoryReader, ChatPromptTemplate, Settings
7
  from llama_index.llms.huggingface import HuggingFaceInferenceAPI
8
  from llama_index.embeddings.huggingface import HuggingFaceEmbedding
9
- from sentence_transformers import SentenceTransformer
10
  import firebase_admin
11
  from firebase_admin import db, credentials
12
  import datetime
@@ -14,17 +13,19 @@ import uuid
14
  import threading
15
  import random
16
 
 
17
  def select_random_name():
18
  names = ['Clara', 'Lily']
19
  return random.choice(names)
20
 
21
- # Example usage
22
  # Load environment variables
23
  load_dotenv()
24
- # authenticate to firebase
 
25
  cred = credentials.Certificate("redfernstech-fd8fe-firebase-adminsdk-g9vcn-0537b4efd6.json")
26
  firebase_admin.initialize_app(cred, {"databaseURL": "https://redfernstech-fd8fe-default-rtdb.firebaseio.com/"})
27
- # Configure the Llama index settings
 
28
  Settings.llm = HuggingFaceInferenceAPI(
29
  model_name="meta-llama/Meta-Llama-3-8B-Instruct",
30
  tokenizer_name="meta-llama/Meta-Llama-3-8B-Instruct",
@@ -33,13 +34,14 @@ Settings.llm = HuggingFaceInferenceAPI(
33
  max_new_tokens=512,
34
  generate_kwargs={"temperature": 0.1},
35
  )
 
36
  Settings.embed_model = HuggingFaceEmbedding(
37
  model_name="BAAI/bge-small-en-v1.5"
38
  )
39
 
40
  # Define the directory for persistent storage and data
41
  PERSIST_DIR = "db"
42
- PDF_DIRECTORY = 'data' # Changed to the directory containing PDFs
43
 
44
  # Ensure directories exist
45
  os.makedirs(PDF_DIRECTORY, exist_ok=True)
@@ -60,7 +62,7 @@ def handle_query(query):
60
  (
61
  "user",
62
  """
63
- You are the clara Redfernstech chatbot. Your goal is to provide accurate, professional, and helpful answers to user queries based on the company's data. Always ensure your responses are clear and concise. give response within 10-15 words only
64
  {context_str}
65
  Question:
66
  {query_str}
@@ -94,28 +96,10 @@ def handle_query(query):
94
 
95
  return response
96
 
97
- # Example usage: Process PDF ingestion from directory
98
- print("Processing PDF ingestion from directory:", PDF_DIRECTORY)
99
- data_ingestion_from_directory()
100
- app = FastAPI()
101
- # Define the function to handle predictions
102
- """def predict(message,history):
103
- response = handle_query(message)
104
- return response"""
105
- def predict(message, history):
106
- logo_html = '''
107
- <div class="circle-logo">
108
- <img src="https://rb.gy/8r06eg" alt="FernAi">
109
- </div>
110
- '''
111
- response = handle_query(message)
112
- response_with_logo = f'<div class="response-with-logo">{logo_html}<div class="response-text">{response}</div></div>'
113
- return response_with_logo
114
  def save_chat_message(session_id, message_data):
115
  ref = db.reference(f'/chat_history/{session_id}') # Use the session ID to save chat data
116
  ref.push().set(message_data)
117
 
118
- # Define your Gradio chat interface function (replace with your actual logic)
119
  def chat_interface(message, history):
120
  try:
121
  # Generate a unique session ID for this chat session
@@ -176,17 +160,24 @@ label.svelte-1b6s6s {display: none}
176
  div.svelte-rk35yg {display: none;}
177
  div.progress-text.svelte-z7cif2.meta-text {display: none;}
178
  '''
 
 
 
 
 
 
 
179
  @app.get("/chat")
180
  async def chat_ui(username: str, email: str):
181
  gr.ChatInterface(
182
- fn=chat_interface,
183
- css=css,
184
- description="Clara",
185
- clear_btn=None,
186
- undo_btn=None,
187
- retry_btn=None
188
- ).launch()
189
  return {"message": "Chat interface launched."}
190
 
191
  if __name__ == "__main__":
192
- threading.Thread(target=lambda: uvicorn.run(app, host="0.0.0.0", port=8000), daemon=True).start()
 
6
  from llama_index.core import StorageContext, load_index_from_storage, VectorStoreIndex, SimpleDirectoryReader, ChatPromptTemplate, Settings
7
  from llama_index.llms.huggingface import HuggingFaceInferenceAPI
8
  from llama_index.embeddings.huggingface import HuggingFaceEmbedding
 
9
  import firebase_admin
10
  from firebase_admin import db, credentials
11
  import datetime
 
13
  import threading
14
  import random
15
 
16
+ # Function to select a random name
17
  def select_random_name():
18
  names = ['Clara', 'Lily']
19
  return random.choice(names)
20
 
 
21
  # Load environment variables
22
  load_dotenv()
23
+
24
+ # Authenticate to Firebase
25
  cred = credentials.Certificate("redfernstech-fd8fe-firebase-adminsdk-g9vcn-0537b4efd6.json")
26
  firebase_admin.initialize_app(cred, {"databaseURL": "https://redfernstech-fd8fe-default-rtdb.firebaseio.com/"})
27
+
28
+ # Configure Llama index settings
29
  Settings.llm = HuggingFaceInferenceAPI(
30
  model_name="meta-llama/Meta-Llama-3-8B-Instruct",
31
  tokenizer_name="meta-llama/Meta-Llama-3-8B-Instruct",
 
34
  max_new_tokens=512,
35
  generate_kwargs={"temperature": 0.1},
36
  )
37
+
38
  Settings.embed_model = HuggingFaceEmbedding(
39
  model_name="BAAI/bge-small-en-v1.5"
40
  )
41
 
42
  # Define the directory for persistent storage and data
43
  PERSIST_DIR = "db"
44
+ PDF_DIRECTORY = 'data'
45
 
46
  # Ensure directories exist
47
  os.makedirs(PDF_DIRECTORY, exist_ok=True)
 
62
  (
63
  "user",
64
  """
65
+ You are the Clara Redfernstech chatbot. Your goal is to provide accurate, professional, and helpful answers to user queries based on the company's data. Always ensure your responses are clear and concise. Give responses within 10-15 words only.
66
  {context_str}
67
  Question:
68
  {query_str}
 
96
 
97
  return response
98
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  def save_chat_message(session_id, message_data):
100
  ref = db.reference(f'/chat_history/{session_id}') # Use the session ID to save chat data
101
  ref.push().set(message_data)
102
 
 
103
  def chat_interface(message, history):
104
  try:
105
  # Generate a unique session ID for this chat session
 
160
  div.svelte-rk35yg {display: none;}
161
  div.progress-text.svelte-z7cif2.meta-text {display: none;}
162
  '''
163
+
164
+ app = FastAPI()
165
+
166
+ @app.get("/")
167
+ async def root():
168
+ return {"message": "Hello"}
169
+
170
  @app.get("/chat")
171
  async def chat_ui(username: str, email: str):
172
  gr.ChatInterface(
173
+ fn=chat_interface,
174
+ css=css,
175
+ description="Clara",
176
+ clear_btn=None,
177
+ undo_btn=None,
178
+ retry_btn=None
179
+ ).launch()
180
  return {"message": "Chat interface launched."}
181
 
182
  if __name__ == "__main__":
183
+ threading.Thread(target=lambda: uvicorn.run(app, host="0.0.0.0", port=8000), daemon=True).start()