import os import time import requests import streamlit as st API_URL = "https://api-inference.huggingface.co/models/NbAiLab/norwegian-gpt2-vgd" def translate(text, wait=True): headers = {"Authorization": f"Bearer {os.environ['BEARER']}"} payload = { "inputs": text, "options": { "wait_for_model": not wait } } response = requests.post(API_URL, headers=headers, json=payload) json_response = response.json() if (isinstance(json_response, dict) and "error" in json_response and "estimated_time" in json_response): st.write(json_response) if wait: with st.spinner(json_response["error"]): bar = st.progress(0) time_to_load = int(json_response["estimated_time"]) + 1 for progress in range(time_to_load): bar.progress(progress / time_to_load) time.sleep(1) bar.empty() return translate(text, wait=False) else: return "We could not load the model" elif (isinstance(json_response, list) and "translation_text" in json_response[0]): return json_response[0]["translation_text"] else: return f"Oops, something went wrong: {str(json_response)}" st.set_page_config( page_title='Spurningen', page_icon='translator-icon.png', ) st.title("Bokmål ⇔ Nynorsk") st.sidebar.title("Translation Demo") st.sidebar.write(""" Spurningen (P.Chr. Asbjørnsen og Jørgen Moe Norske folkeeventyr (1852). I senere utgaver er eventyret kalt "Prinsessen som ingen kunde målbinde". Spurning er et gammelt norrønt ord for gåte. En spurning er en utspørring. Denne GPT2-modellen er trent på aviser, wikipedia og diverse sosiale media. Bl.a. er den trent på spørsmål og svar fra VGDebatt. Den er trent for å ikke la seg målbinde! Dette er en demo-versjon hovedsakelig ment for forskning på auto-regressive språkmodeller. Det er ingen filter-funksjon her. Modellen kan godt generere tekst som i en annen kontekst kan være ekstremt fornærmende. Husk at dette er en lek med sammensetning av ord. Ikke la deg fornærme. """) text = st.text_area(" ", "Nasjonalbibliotekets AI-lab har faktisk utviklet et språkmodell som ikke kan målbindes. Hvor tror dere dette ender?", height=None, max_chars=None, key=None, help="Enter your text here", ) if st.button('Translate'): if str(text).strip() == "": st.warning('Please **enter text** for translation') else: st.info(str(translate(text)))