File size: 3,625 Bytes
303d329 1365be7 303d329 d5f2b4b 1365be7 303d329 4a3cc38 303d329 4a3cc38 303d329 1365be7 303d329 d5f2b4b 303d329 9396a3a 303d329 0dbcf6e 303d329 9396a3a 303d329 9396a3a 303d329 9396a3a 303d329 d5f2b4b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
"""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:
... # 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 len(prompt) == 0:
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 str(exc)
try:
output_tmp = output[0]["generated_text"]
return output_tmp
except Exception as exc:
logger.error(exc)
return str(exc)
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("<h1><center>Translate with Bloom</center></h1>")
gr.Markdown(
dedent(
"""
## Model Details
Refer to the space created by [Kishore](https://www.linkedin.com/in/kishore-kunisetty-925a3919a/) in order to participate in [EuroPython22](https://huggingface.co/EuroPython2022)
please like his project to support his contribution to EuroPython22.
"""
).strip()
)
with gr.Row():
from_lang = gr.Dropdown(
["English", "Chinese", ] + langs,
value="English",
label="select From language : ",
)
to_lang = gr.Dropdown(
["Chinese", "English", ] + langs,
value="Chinese",
label="select to Language : ",
)
input_prompt = gr.Textbox(
label="Enter a sentence: ",
value=f'Instruction: ... \ninput: "from sentence" \n{to_lang} :',
lines=4,
)
generated_txt = gr.Textbox(lines=4)
b1 = gr.Button("translate")
b1.click(
# translate,
bloom_tr,
inputs=[input_prompt, from_lang, to_lang],
outputs=generated_txt,
)
demo.launch(enable_queue=True, debug=True)
|