"""Translate via Bloom.""" # pylint: disable=invalid-name import os import time from textwrap import dedent import gradio as gr import httpx from logzero import logger # os.environ.setdefault("TZ", "Asia/Shanghai") os.environ["TZ"] = "Asia/Shanghai" try: time.tzset() except Exception: logger.warning("Wont work in Windows...") # Windows wont do # Bloom api_url = "https://api-inference.huggingface.co/models/bigscience/bloom" timeout_ = httpx.Timeout(None, connect=10) def bloom_tr(prompt_, from_lang, to_lang, input_prompt="translate this", seed=2, timeout=timeout_): """Translate via Bloom.""" prompt = dedent( f""" Instruction : Given an {from_lang} input sentence translate it into {to_lang} sentence. \n input : {prompt_} \n {to_lang} : """ ).strip() if not prompt: prompt = input_prompt json_ = { "inputs": prompt, "parameters": { "top_p": 0.9, "temperature": 1.1, "max_new_tokens": 250, "return_full_text": False, "do_sample": False, "seed": seed, "early_stopping": False, "length_penalty": 0.0, "eos_token_id": None, }, "options": { "use_cache": True, "wait_for_model": True, }, } # headers=headers # response = requests.request("POST", api_url, json=json_) try: response = httpx.post(api_url, json=json_, timeout=timeout) except Exception as exc: logger.error(exc) return str(exc) # output = json.loads(response.content.decode("utf-8")) try: output = response.json() # return output except Exception as exc: logger.error(exc) return f"Unable to fetch anything: {exc}" try: output_tmp = output[0]["generated_text"] return output_tmp except Exception as exc: logger.error(exc) return f"Unable to retrieve result, previous output: {output}" solution = output_tmp.split(f"\n{to_lang}:")[0] if "\n\n" in solution: final_solution = solution.split("\n\n")[0] else: final_solution = solution try: _ = final_solution.splitlines()[-1] except Exception as exc: logger.error(exc) return str(exc) return _ langs = [ "German", "French", "Italian", "Japanese", "Russian", "Spanish", "Hindi", ] demo = gr.Blocks() with demo: gr.Markdown("