medirag / app.py
alvinhenrick's picture
clean up
a11089e
raw
history blame
1.54 kB
import gradio as gr
from medirag.cache.local import SemanticCaching
from medirag.index.local import DailyMedIndexer
from medirag.rag.qa import RAG, DailyMedRetrieve
import dspy
from pathlib import Path
from dotenv import load_dotenv
load_dotenv()
# Initialize the components
data_dir = Path("data")
index_path = data_dir.joinpath("dm_spl_release_human_rx_part1")
indexer = DailyMedIndexer(persist_dir=index_path)
indexer.load_index()
rm = DailyMedRetrieve(daily_med_indexer=indexer)
turbo = dspy.OpenAI(model='gpt-3.5-turbo', max_tokens=4000)
dspy.settings.configure(lm=turbo, rm=rm)
rag = RAG(k=5)
sm = SemanticCaching(model_name='sentence-transformers/all-mpnet-base-v2', dimension=768,
json_file='rag_test_cache.json', cosine_threshold=.90, rag=rag)
sm.load_cache()
def ask_med_question(query):
response = sm.ask(query)
return response
# Set up the Gradio interface
with gr.Blocks() as app:
gr.Row([
gr.Markdown("# Medical RAG Question Answering")
])
gr.Row([
gr.Markdown("## Ask any question about medication usage and get answers based on DailyMed data.")
])
with gr.Row():
input_text = gr.Textbox(lines=2, placeholder="Enter your question about a drug...")
with gr.Row():
button = gr.Button("Submit")
with gr.Row():
output_text = gr.Textbox(interactive=False, label="Response", show_label=False,
lines=10)
button.click(fn=ask_med_question, inputs=input_text, outputs=output_text)
app.launch()