en-to-sql-translator / src /streamlit_app.py
aribilgiogr's picture
Update src/streamlit_app.py
8b470fc verified
Raw
History Blame Contribute Delete
1.65 kB
import streamlit as st
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
import torch
# GPU kullanılabilirliğini kontrol edelim
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# Arayüz ayarları
st.set_page_config(layout="centered")
st.title("English-to-SQL Deep Learning Model")
# Model ve Tokenizer tanımlayalım: Sadece bir kez yüklenmesi için önbelleğe de aldık.
@st.cache_resource
def load_model():
model_name = "mrm8488/t5-base-finetuned-wikiSQL"
tokenizer = AutoTokenizer.from_pretrained(model_name, force_download=True)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name, force_download=True).to(device)
return tokenizer, model
tokenizer, model = load_model()
def prompt_to_sql(prompt):
# Modelin eğitim verisine uygun girdi formatı:
input_text = f"translate English to SQL: {prompt}"
# Girilen metni tensörlere çevirelim ve GPU(cuda)'ya aktaralım.
input_ids = tokenizer.encode(input_text, return_tensors="pt").to(device)
# Çıktıyı (tensör) üretelim:
outputs = model.generate(input_ids,max_length=128)
# Çıktı tensörünü okunabilir metne çevirelim
sql = tokenizer.decode(outputs[0], skip_special_tokens=True)
return sql
# Kullanıcı veri girişi
user_input = st.text_input("Prompt:",placeholder="What is the average age of users who live in Istanbul?")
if st.button("Generate SQL"):
if user_input.strip():
with st.spinner("Generating..."):
sql = prompt_to_sql(user_input)
st.success("Generation succeeded!")
st.code(sql, language="sql")
else:
st.error("Prompt invalid!")