import gradio as gr import os from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification import json import socket from datetime import datetime import huggingface_hub from huggingface_hub import Repository import os access_token = os.environ['ACCES_TOKEN'] edit_token = os.environ['EDIT_TOKEN'] DATASET_REPO_URL = "https://huggingface.co/datasets/EkhiAzur/Demoko_informazioa" DATA_FILENAME = "Erabiltzaileak.txt" DATA_FILE = os.path.join("data", DATA_FILENAME) model = AutoModelForSequenceClassification.from_pretrained("EkhiAzur/C1_Sailkapen_Demoa", token=access_token) tokenizer = AutoTokenizer.from_pretrained( "EkhiAzur/C1_Sailkapen_Demoa", token = access_token, use_fast=True, add_prefix_space=True, ) classifier = pipeline("text-classification", tokenizer=tokenizer, model=model, max_length=512, padding=True, truncation=True, batch_size=1) adibideak = json.load(open("./Adibideak.json", "r")) def prozesatu(Testua, request: gr.Request): repo = Repository( local_dir="data", clone_from=DATASET_REPO_URL, use_auth_token=edit_token ) #Ip-a lortzeko kontuak client_ip = request.client.host local_ip = socket.gethostbyname(socket.gethostbyname("")) headers = request.kwargs['headers'] if headers and 'x-forwarded-for' in headers: x_forwarded_for = headers['x-forwarded-for'] client_ip = x_forwarded_for.split(' ')[0] if x_forwarded_for else "" # Eguna eta ordua lortu now = datetime.now() #Fitxategian gorde f = open(DATA_FILE, "a") print(f'Erabiltzailea: {client_ip}. Eguna eta ordua: {now}.\n') f.write(f'Erabiltzailea: {client_ip}. Eguna eta ordua: {now}.\n') f.close() commit_url = repo.push_to_hub() prediction = prozesatu.classifier(Testua)[0] if prediction["label"]=="GAI": return {"Gai":prediction["score"], "Ez gai": 1-prediction["score"]} else: return {"Gai":1-prediction["score"], "Ez gai": prediction["score"]} def testua_itzuli(testua): if testua not in testua_itzuli.adibideak: return "" return testua_itzuli.adibideak[testua] testua_itzuli.adibideak = adibideak prozesatu.adibideak = adibideak prozesatu.classifier = classifier def ezabatu(Testua): return "" with gr.Blocks() as demo: with gr.Row(): with gr.Column(): input = gr.Textbox(label="Testua") with gr.Row(): bidali_btn = gr.Button("Bidali") ezabatu_btn = gr.Button("Ezabatu") label = gr.Label(num_top_classes=2, label="C1 maila") bidali_btn.click(fn=prozesatu, inputs=input, outputs=label) ezabatu_btn.click(fn=ezabatu, inputs=input, outputs=input) gr.Examples(list(adibideak.keys()), inputs=input, outputs=input, label="Adibideak:", fn=testua_itzuli, cache_examples=True) demo.launch()