Ravis-gemini / app.py
nttwt1597's picture
Update app.py
71f6ac4 verified
raw
history blame
4.98 kB
import os
token_r=os.environ['token_r']
token_w=os.environ['token_w']
import torch
import gradio as gr
from unsloth import FastLanguageModel
from peft import PeftConfig, PeftModel, get_peft_model
from transformers import pipeline, TextIteratorStreamer
from threading import Thread
# For getting tokenizer()
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
peft_model_adapter_id = "nttwt1597/test_v2_cancer_v4_checkpoint2900"
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = model_id,
max_seq_length = 4096,
dtype = None,
load_in_4bit = True,
)
model.load_adapter(peft_model_adapter_id, token=token_r)
terminators = [
tokenizer.eos_token_id,
tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
FastLanguageModel.for_inference(model)
criteria_prompt = """Based on the provided instructions and clinical trial information, generate the eligibility criteria for the study.
### Instruction:
As a clinical researcher, generate comprehensive eligibility criteria to be used in clinical research based on the given clinical trial information. Ensure the criteria are clear, specific, and suitable for a clinical research setting.
### Clinical trial information:
{}
### Eligibility criteria:
{}"""
def format_prompt(text):
return criteria_prompt.format(text, "")
def run_model_on_text(text):
prompt = format_prompt(text)
inputs = tokenizer(prompt, return_tensors='pt')
streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
generation_kwargs = dict(inputs, streamer=streamer,eos_token_id=terminators, max_new_tokens=1024, repetition_penalty=1.175,)
thread = Thread(target=model.generate, kwargs=generation_kwargs)
thread.start()
generated_text = ""
for new_text in streamer:
generated_text += new_text
yield generated_text
place_holder = f"""Study Objectives
The purpose of this study is to evaluate the safety, tolerance and efficacy of Liposomal Paclitaxel With Nedaplatin as First-line in patients with Advanced or Recurrent Esophageal Carcinoma
Conditions: Esophageal Carcinoma
Intervention / Treatment:
DRUG: Liposomal Paclitaxel,
DRUG: Nedaplatin
Location: China
Study Design and Phases
Study Type: INTERVENTIONAL
Phase: PHASE2 Primary Purpose:
TREATMENT Allocation: NA
Interventional Model: SINGLE_GROUP Masking: NONE
"""
prefilled_value = """Study Objectives
[Brief Summary] and/or [Detailed Description]
Conditions: [Disease]
Intervention / Treatment
[DRUGs]
Location
[Location]
Study Design and Phases
Study Type:
Phase:
Primary Purpose:
Allocation:
Interventional Model:
Masking:"""
hf_writer = gr.HuggingFaceDatasetSaver("criteria-feedback-demo",token_w, private=True)
with gr.Blocks() as demo:
with gr.Row():
with gr.Column():
prompt_box = gr.Textbox(
label="Research Information",
placeholder=place_holder,
value=prefilled_value,
lines=10)
submit_button = gr.Button("Generate")
with gr.Column():
output_box = gr.Textbox(
label="Eligiblecriteria Criteria",
lines=21,
interactive=False)
with gr.Row():
with gr.Column():
feedback_box = gr.Textbox(label="Enter your feedback here...", lines=3, interactive=True)
feedback_button = gr.Button("Submit Feedback")
status_text = gr.Textbox(label="Status", lines=1, interactive=False)
submit_button.click(
run_model_on_text,
inputs=prompt_box,
outputs=output_box
)
def submit_feedback(prompt, generated_text, feedback):
data = {
"prompt": prompt,
"generated_text": generated_text,
"feedback": feedback
}
hf_writer.flag(data)
return "Feedback submitted."
feedback_button.click(
submit_feedback,
inputs=[prompt_box, output_box, feedback_box],
outputs=status_text
)
# feedback_button.click(
# hf_writer.flag([prompt_box,output_box,feedback_box]),
# # lambda *args: hf_writer.flag(args),
# inputs=[prompt_box, output_box, feedback_box],
# outputs=status_text,
# )
# gr.Interface(lambda x:x, "text", "text", allow_flagging="manual", flagging_callback=hf_writer)
# feedback_button.click(
# save_feedback,
# inputs=[prompt_box, output_box, feedback_box],
# outputs=status_text
# )
demo.launch()
#----------------------------------
# prompt_box = gr.Textbox(
# lines=25,
# label="Research Information",
# placeholder=place_holder,
# value=prefilled_value,
# )
# output_box = gr.Textbox(
# lines=25,
# label="Eligiblecriteria Criteria",
# )
# demo = gr.Interface(
# fn=run_model_on_text,
# inputs=prompt_box,
# outputs=output_box,
# allow_flagging='auto',
# )
# demo.queue(max_size=20).launch(debug=True, share=True)