EkhiAzur's picture
Update app.py
7625fb6
raw
history blame
2.84 kB
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()