amritdhillon commited on
Commit
87cf0f5
·
verified ·
1 Parent(s): c8a9cc2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +73 -40
app.py CHANGED
@@ -1,21 +1,59 @@
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
 
 
 
 
 
3
 
4
- """
5
- For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
6
- """
7
  client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
  def respond(
11
- message,
12
- history: list[tuple[str, str]],
13
- system_message,
14
- max_tokens,
15
- temperature,
16
- top_p,
17
  ):
18
- system_message = "AI for healthcare offers the ability to process and analyze vast amounts of medical data far beyond human capacity. This capability was instrumental in diagnosing diseases, predicting outcomes, and recommending treatments. The scope of AI in healthcare amplifies diagnostic precision and expedites decision-making processes, facilitating a seamless workflow that ultimately enhances patient care outcomes."
19
  messages = [{"role": "system", "content": system_message}]
20
 
21
  for val in history:
@@ -26,46 +64,41 @@ def respond(
26
 
27
  messages.append({"role": "user", "content": message})
28
 
29
- response = ""
 
 
 
30
 
 
31
  for message in client.chat_completion(
32
  messages,
33
- max_tokens=max_tokens,
34
  stream=True,
35
- temperature=temperature,
36
- top_p=top_p,
37
  ):
38
  token = message.choices[0].delta.content
39
-
40
  response += token
41
  yield response
42
 
43
- """
44
- For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
45
- """
46
- demo = gr.ChatInterface(
47
- respond,
48
- additional_inputs=[
49
- gr.Textbox(value = "AI for healthcare offers the ability to process and analyze vast amounts of medical data far beyond human capacity. This capability was instrumental in diagnosing diseases, predicting outcomes, and recommending treatments. The scope of AI in healthcare amplifies diagnostic precision and expedites decision-making processes, facilitating a seamless workflow that ultimately enhances patient care outcomes.", label="System message"),
50
- gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
51
- gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
52
- gr.Slider(
53
- minimum=0.1,
54
- maximum=1.0,
55
- value=0.95,
56
- step=0.05,
57
- label="Top-p (nucleus sampling)",
58
- ),
59
- ],
60
-
61
- examples = [
62
- ["What are the primary applications of AI in healthcare?"],
63
- ["How does AI improve diagnostic accuracy?"],
64
- ["How can AI help in early disease detection?"]
65
- ],
66
- title = 'AI in Healthcare'
67
- )
68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
 
70
  if __name__ == "__main__":
71
  demo.launch()
 
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
3
+ from typing import List, Tuple
4
+ import fitz # PyMuPDF
5
+ from sentence_transformers import SentenceTransformer, util
6
+ import numpy as np
7
+ import faiss
8
 
 
 
 
9
  client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
10
 
11
+ # Placeholder for the app's state
12
+ class MyApp:
13
+ def __init__(self) -> None:
14
+ self.documents = []
15
+ self.embeddings = None
16
+ self.index = None
17
+ self.load_pdf("jsr-17-task-002_aiforhealthandhealthcare12122017.pdf")
18
+ self.build_vector_db()
19
+
20
+ def load_pdf(self, file_path: str) -> None:
21
+ """Extracts text from a PDF file and stores it in the app's documents."""
22
+ doc = fitz.open(file_path)
23
+ self.documents = []
24
+ for page_num in range(len(doc)):
25
+ page = doc[page_num]
26
+ text = page.get_text()
27
+ self.documents.append({"page": page_num + 1, "content": text})
28
+ print("PDF processed successfully!")
29
+
30
+ def build_vector_db(self) -> None:
31
+ """Builds a vector database using the content of the PDF."""
32
+ model = SentenceTransformer('all-MiniLM-L6-v2')
33
+ self.embeddings = model.encode([doc["content"] for doc in self.documents])
34
+ self.index = faiss.IndexFlatL2(self.embeddings.shape[1])
35
+ self.index.add(np.array(self.embeddings))
36
+ print("Vector database built successfully!")
37
+
38
+ def search_documents(self, query: str, k: int = 3) -> List[str]:
39
+ """Searches for relevant documents using vector similarity."""
40
+ model = SentenceTransformer('all-MiniLM-L6-v2')
41
+ query_embedding = model.encode([query])
42
+ D, I = self.index.search(np.array(query_embedding), k)
43
+ results = [self.documents[i]["content"] for i in I[0]]
44
+ return results if results else ["No relevant documents found."]
45
+
46
+ app = MyApp()
47
 
48
  def respond(
49
+ message: str,
50
+ history: List[Tuple[str, str]],
51
+ system_message: str,
52
+ max_tokens: int,
53
+ temperature: float,
54
+ top_p: float,
55
  ):
56
+ system_message = "How computer-based decision procedures, under the broad umbrella of artificial intelligence (AI), can assist in improving health and health care?"
57
  messages = [{"role": "system", "content": system_message}]
58
 
59
  for val in history:
 
64
 
65
  messages.append({"role": "user", "content": message})
66
 
67
+ # RAG - Retrieve relevant documents
68
+ retrieved_docs = app.search_documents(message)
69
+ context = "\n".join(retrieved_docs)
70
+ messages.append({"role": "system", "content": "Relevant documents: " + context})
71
 
72
+ response = ""
73
  for message in client.chat_completion(
74
  messages,
75
+ max_tokens=100,
76
  stream=True,
77
+ temperature=0.98,
78
+ top_p=0.7,
79
  ):
80
  token = message.choices[0].delta.content
 
81
  response += token
82
  yield response
83
 
84
+ demo = gr.Blocks()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
 
86
+ with demo:
87
+ gr.Markdown(
88
+
89
+ )
90
+
91
+ chatbot = gr.ChatInterface(
92
+ respond,
93
+ examples=[
94
+ ["How AI can assist in improving health and healthcare?"],
95
+ ["Is the recent level of interest in AI just another period of hype within the cycles of excitement that have arisen around AI?"],
96
+ ["How AI will be used to power many health-related mobile monitoring devices and apps"],
97
+ ["How AI Track developments in foreign health care systems,"],
98
+ ["What are advances in AI Applications for Medical Imaging"],
99
+ ],
100
+ title='AI in Healthcare'
101
+ )
102
 
103
  if __name__ == "__main__":
104
  demo.launch()