import gradio as gr import numpy as np from datetime import date from predictors import predict_bc_scores, predict_mc_scores from analysis import depth_analysis from predictors import predict_quillbot from plagiarism import plagiarism_check, build_date from utils import extract_text_from_pdf, len_validator np.set_printoptions(suppress=True) def ai_generated_test(option, input): if option == "Human vs AI": return predict_bc_scores(input), None else: return ( predict_bc_scores(input), predict_mc_scores(input), ) # COMBINED def main( ai_option, plag_option, input, # models, year_from, month_from, day_from, year_to, month_to, day_to, domains_to_skip, ): formatted_tokens = plagiarism_check( plag_option, input, year_from, month_from, day_from, year_to, month_to, day_to, domains_to_skip, ) depth_analysis_plot = depth_analysis(input) bc_score = predict_bc_scores(input) mc_score = predict_mc_scores(input) quilscore = predict_quillbot(input) return ( bc_score, mc_score, formatted_tokens, depth_analysis_plot, quilscore, ) # START OF GRADIO title = "Copyright Checker" months = { "January": "01", "February": "02", "March": "03", "April": "04", "May": "05", "June": "06", "July": "07", "August": "08", "September": "09", "October": "10", "November": "11", "December": "12", } with gr.Blocks() as demo: today = date.today() # dd/mm/YY d1 = today.strftime("%d/%B/%Y") d1 = d1.split("/") model_list = ["OpenAI GPT", "Mistral", "CLAUDE", "Gemini", "LLAMA2"] domain_list = ["com", "org", "net", "int", "edu", "gov", "mil"] gr.Markdown( """ # Copyright Checker """ ) with gr.Row(): input_text = gr.Textbox(label="Input text", lines=6, placeholder="") file_input = gr.File(label="Upload PDF") file_input.change( fn=extract_text_from_pdf, inputs=file_input, outputs=input_text ) char_count = gr.Textbox(label="Minumum Character Limit Check") input_text.change(fn=len_validator, inputs=input_text, outputs=char_count) with gr.Row(): with gr.Column(): ai_option = gr.Radio( ["Human vs AI", "Human vs AI Source Models"], label="Choose an option please.", ) with gr.Column(): plag_option = gr.Radio( ["Standard", "Advanced"], label="Choose an option please." ) with gr.Row(): with gr.Column(): only_ai_btn = gr.Button("AI Check") with gr.Column(): only_plagiarism_btn = gr.Button("Source Check") with gr.Row(): quillbot_check = gr.Button("Humanized Text Check") with gr.Row(): depth_analysis_btn = gr.Button("Detailed Writing Analysis") with gr.Row(): full_check_btn = gr.Button("Full Check") gr.Markdown( """ ## Output """ ) # models = gr.Dropdown( # model_list, # value=model_list, # multiselect=True, # label="Models to test against", # ) with gr.Row(): with gr.Column(): bcLabel = gr.Label(label="Source") with gr.Column(): mcLabel = gr.Label(label="Creator") with gr.Row(): QLabel = gr.Label(label="Humanized") with gr.Group(): with gr.Row(): month_from = gr.Dropdown( choices=months, label="From Month", value="January", interactive=True, ) day_from = gr.Textbox(label="From Day", value="01") year_from = gr.Textbox(label="From Year", value="2000") # from_date_button = gr.Button("Submit") with gr.Row(): month_to = gr.Dropdown( choices=months, label="To Month", value=d1[1], interactive=True, ) day_to = gr.Textbox(label="To Day", value=d1[0]) year_to = gr.Textbox(label="To Year", value=d1[2]) # to_date_button = gr.Button("Submit") with gr.Row(): domains_to_skip = gr.Dropdown( domain_list, multiselect=True, label="Domain To Skip", ) with gr.Row(): with gr.Column(): sentenceBreakdown = gr.HighlightedText( label="Source Detection Sentence Breakdown", combine_adjacent=True, color_map={ "[1]": "red", "[2]": "orange", "[3]": "yellow", "[4]": "green", }, ) with gr.Row(): with gr.Column(): writing_analysis_plot = gr.Plot(label="Writing Analysis Plot") full_check_btn.click( fn=main, inputs=[ ai_option, plag_option, input_text, # models, year_from, month_from, day_from, year_to, month_to, day_to, domains_to_skip, ], outputs=[ bcLabel, mcLabel, sentenceBreakdown, writing_analysis_plot, QLabel, ], api_name="main", ) only_ai_btn.click( fn=ai_generated_test, inputs=[ai_option, input_text], outputs=[ bcLabel, mcLabel, ], api_name="ai_check", ) quillbot_check.click( fn=predict_quillbot, inputs=[input_text], outputs=[QLabel], api_name="quillbot_check", ) only_plagiarism_btn.click( fn=plagiarism_check, inputs=[ plag_option, input_text, year_from, month_from, day_from, year_to, month_to, day_to, domains_to_skip, ], outputs=[ sentenceBreakdown, ], api_name="plagiarism_check", ) depth_analysis_btn.click( fn=depth_analysis, inputs=[input_text], outputs=[writing_analysis_plot], api_name="depth_analysis", ) date_from = "" date_to = "" demo.launch(share=True, auth=("polygraf-admin", "test@aisd"))