import gradio as gr import numpy as np from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline def load_model(model_name): tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSequenceClassification.from_pretrained(model_name) return pipeline('text-classification', model=model, tokenizer=tokenizer, truncation=True, max_length=512, top_k=4) classifier = load_model("ngocminhta/authscan-baseline") classifier2 = load_model("ngocminhta/authscan-baseline-machine") TEXT_CLASS_MAPPING_MACHINE = { 'LABEL_0': 'Gemini 1.5 Family', 'LABEL_1': 'Gemini 2.0 Family', 'LABEL_2': 'GPT-4o Family', 'LABEL_3': 'Llama 3.1 Family' } TEXT_CLASS_MAPPING = { 'LABEL_0': 'Human-Written', 'LABEL_1': 'Machine-Generated' } def update_language(language): if language == 'Java' or language == 'Python': return gr.update(language='python') elif language == 'C': return gr.update(language='c') elif language == 'C++': return gr.update(language='cpp') return gr.update(language='python') def process_result_detection_tab(text, language): result = classifier(f"Language: {language}\n\n{text}")[0] result_machine = classifier2(f"Language: {language}\n\n{text}")[0] labels = [TEXT_CLASS_MAPPING[x['label']] for x in result] labels_machine = [TEXT_CLASS_MAPPING_MACHINE[x['label']] for x in result_machine] scores = list(np.array([x['score'] for x in result])) scores_machine = list(np.array([x['score'] for x in result_machine])) final_results = dict(zip(labels, scores)) if max(final_results, key=final_results.get) == 'Machine-Generated': final_results_machine = dict(zip(labels_machine, scores_machine)) else: final_results_machine = None return final_results, final_results_machine def clear_detection_tab(): return "", gr.update(interactive=False) theme = gr.themes.Soft( primary_hue="teal", font=[gr.themes.GoogleFont('Open Sans'), 'ui-sans-serif', 'system-ui', 'sans-serif'], font_mono=[gr.themes.GoogleFont('Roboto Mono'), 'ui-monospace', 'Consolas', 'monospace'], ) with gr.Blocks(theme=theme) as demo: gr.Markdown("""