BlooperDodge commited on
Commit
98ce784
·
verified ·
1 Parent(s): 436e33e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +8 -8
app.py CHANGED
@@ -6,6 +6,7 @@ import requests
6
  from bs4 import BeautifulSoup
7
  import os
8
  import gradio as gr
 
9
 
10
  # Step 1: Define PromptTemplate class using LangChain's format
11
  class PromptTemplate:
@@ -109,22 +110,20 @@ def extract_content(url):
109
 
110
  # Step 8: Use the LangChain text generation pipeline for generating answers
111
  generation_model_name = "microsoft/Phi-3-mini-4k-instruct"
112
- text_generator = pipeline("text-generation", model=generation_model_name, device=-1) # Use CPU or change to device=0 for GPU
 
113
 
114
  # Step 9: Function to generate answer based on query and content
115
- def generate_answer(query, contents):
116
  answers = []
117
  prompt_template = PromptTemplate("""
118
 
119
  ### Medical Assistant Context ###
120
  As a helpful medical assistant, I'm here to assist you with your query.
121
-
122
  ### Medical Query ###
123
  Query: {query}
124
-
125
  ### Explanation ###
126
  {generated_text}
127
-
128
  ### Revised Response ###
129
  Response: {generated_text}
130
  """)
@@ -138,8 +137,8 @@ Response: {generated_text}
138
  if not batch_prompts:
139
  return ["No content available to generate an answer."] * len(contents)
140
 
141
- # Generate responses in batch
142
- generated_texts = text_generator(batch_prompts, max_new_tokens=200, num_return_sequences=len(batch_prompts), truncation=True)
143
 
144
  for i, generated_text in enumerate(generated_texts):
145
  if generated_text and isinstance(generated_text, list) and len(generated_text) > 0:
@@ -156,7 +155,7 @@ def process_query(query):
156
  top_results = search_similar(query, top_k=3)
157
  if top_results:
158
  content = extract_content(top_results[0])
159
- answer = generate_answer(query, [content])[0]
160
 
161
  response = f"Rank 1: URL - {top_results[0]}\n"
162
  response += f"Generated Answer:\n{answer}\n"
@@ -176,4 +175,5 @@ demo = gr.Interface(
176
  )
177
 
178
  if __name__ == "__main__":
 
179
  demo.launch()
 
6
  from bs4 import BeautifulSoup
7
  import os
8
  import gradio as gr
9
+ import asyncio # Import asyncio for asynchronous processing
10
 
11
  # Step 1: Define PromptTemplate class using LangChain's format
12
  class PromptTemplate:
 
110
 
111
  # Step 8: Use the LangChain text generation pipeline for generating answers
112
  generation_model_name = "microsoft/Phi-3-mini-4k-instruct"
113
+ # Use CPU or change to device=0 for GPU (depending on your setup)
114
+ text_generator = pipeline("text-generation", model=generation_model_name, device=-1)
115
 
116
  # Step 9: Function to generate answer based on query and content
117
+ async def generate_answer(query, contents):
118
  answers = []
119
  prompt_template = PromptTemplate("""
120
 
121
  ### Medical Assistant Context ###
122
  As a helpful medical assistant, I'm here to assist you with your query.
 
123
  ### Medical Query ###
124
  Query: {query}
 
125
  ### Explanation ###
126
  {generated_text}
 
127
  ### Revised Response ###
128
  Response: {generated_text}
129
  """)
 
137
  if not batch_prompts:
138
  return ["No content available to generate an answer."] * len(contents)
139
 
140
+ # Generate responses in batch asynchronously
141
+ generated_texts = await asyncio.gather(*[loop.run_in_executor(None, lambda: text_generator(prompt, max_new_tokens=200, num_return_sequences=1, truncation=True)) for prompt in batch_prompts])
142
 
143
  for i, generated_text in enumerate(generated_texts):
144
  if generated_text and isinstance(generated_text, list) and len(generated_text) > 0:
 
155
  top_results = search_similar(query, top_k=3)
156
  if top_results:
157
  content = extract_content(top_results[0])
158
+ answer = asyncio.run(generate_answer(query, [content]))[0]
159
 
160
  response = f"Rank 1: URL - {top_results[0]}\n"
161
  response += f"Generated Answer:\n{answer}\n"
 
175
  )
176
 
177
  if __name__ == "__main__":
178
+ loop = asyncio.get_event_loop()
179
  demo.launch()