TiberiuCristianLeon commited on
Commit
e389a2d
·
verified ·
1 Parent(s): 8a45449

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +41 -9
app.py CHANGED
@@ -21,6 +21,7 @@ models = ["Helsinki-NLP",
21
  "t5-small", "t5-base", "t5-large",
22
  "google/flan-t5-small", "google/flan-t5-base", "google/flan-t5-large", "google/flan-t5-xl",
23
  "Argos", "Google",
 
24
  "utter-project/EuroLLM-1.7B", "utter-project/EuroLLM-1.7B-Instruct",
25
  "Unbabel/Tower-Plus-2B", "Unbabel/TowerInstruct-7B-v0.2", "Unbabel/TowerInstruct-Mistral-7B-v0.2",
26
  "openGPT-X/Teuken-7B-instruct-commercial-v0.4", "openGPT-X/Teuken-7B-instruct-v0.6"
@@ -63,10 +64,17 @@ def argos(sl, tl, input_text):
63
  print(error)
64
  return translated_text
65
 
66
- def google(sl, tl, input_text):
67
- url = os.environ['GCLIENT'] + f'sl={sl}&tl={tl}&q={input_text}'
68
- response = requests.get(url)
69
- return response.json()[0][0][0]
 
 
 
 
 
 
 
70
 
71
  def mtom(model_name, sl, tl, input_text):
72
  from transformers import M2M100ForConditionalGeneration, M2M100Tokenizer
@@ -100,8 +108,8 @@ def HelsinkiNLP(sl, tl, input_text):
100
  try: # Standard bilingual model
101
  model_name = f"Helsinki-NLP/opus-mt-{sl}-{tl}"
102
  pipe = pipeline("translation", model=model_name, device=-1)
103
- # translation = pipe(input_text)
104
- # return translation[0]['translation_text'], f'Translated from {sl} to {tl} with {model_name}.'
105
  except EnvironmentError:
106
  try: # Tatoeba models
107
  model_name = f"Helsinki-NLP/opus-tatoeba-{sl}-{tl}"
@@ -120,6 +128,27 @@ def HelsinkiNLP(sl, tl, input_text):
120
  except KeyError as error:
121
  return f"Error: Translation direction {sl} to {tl} is not supported by Helsinki Translation Models", error
122
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  def flan(model_name, sl, tl, input_text):
124
  tokenizer = T5Tokenizer.from_pretrained(model_name, legacy=False)
125
  model = T5ForConditionalGeneration.from_pretrained(model_name)
@@ -303,7 +332,7 @@ def translate_text(input_text: str, sselected_language: str, tselected_language:
303
  translated_text = argos(sl, tl, input_text)
304
 
305
  elif model_name == 'Google':
306
- translated_text = google(sl, tl, input_text)
307
 
308
  elif "m2m" in model_name.lower():
309
  translated_text = mtom(model_name, sl, tl, input_text)
@@ -344,11 +373,14 @@ def translate_text(input_text: str, sselected_language: str, tselected_language:
344
 
345
  elif model_name.startswith('t5'):
346
  translated_text = tfive(model_name, sselected_language, tselected_language, input_text)
347
-
 
 
 
348
  except Exception as error:
349
  translated_text = error
350
  finally:
351
- print(translated_text, message_text)
352
  return translated_text, message_text
353
 
354
  # Function to swap dropdown values
 
21
  "t5-small", "t5-base", "t5-large",
22
  "google/flan-t5-small", "google/flan-t5-base", "google/flan-t5-large", "google/flan-t5-xl",
23
  "Argos", "Google",
24
+ "HuggingFaceTB/SmolLM3-3B",
25
  "utter-project/EuroLLM-1.7B", "utter-project/EuroLLM-1.7B-Instruct",
26
  "Unbabel/Tower-Plus-2B", "Unbabel/TowerInstruct-7B-v0.2", "Unbabel/TowerInstruct-Mistral-7B-v0.2",
27
  "openGPT-X/Teuken-7B-instruct-commercial-v0.4", "openGPT-X/Teuken-7B-instruct-v0.6"
 
64
  print(error)
65
  return translated_text
66
 
67
+ class Translators:
68
+ def __init__(self, model_name: str, sl: str, tl: str, input_text: str):
69
+ print(self.get_class_method_callables())
70
+ self.model_name = model_name
71
+ self.sl, self.tl = sl, tl
72
+ self.input_text = input_text
73
+
74
+ def google(self):
75
+ url = os.environ['GCLIENT'] + f'sl={self.sl}&tl={self.tl}&q={self.input_text}'
76
+ response = requests.get(url)
77
+ return response.json()[0][0][0]
78
 
79
  def mtom(model_name, sl, tl, input_text):
80
  from transformers import M2M100ForConditionalGeneration, M2M100Tokenizer
 
108
  try: # Standard bilingual model
109
  model_name = f"Helsinki-NLP/opus-mt-{sl}-{tl}"
110
  pipe = pipeline("translation", model=model_name, device=-1)
111
+ translation = pipe(input_text)
112
+ return translation[0]['translation_text'], f'Translated from {sl} to {tl} with {model_name}.'
113
  except EnvironmentError:
114
  try: # Tatoeba models
115
  model_name = f"Helsinki-NLP/opus-tatoeba-{sl}-{tl}"
 
128
  except KeyError as error:
129
  return f"Error: Translation direction {sl} to {tl} is not supported by Helsinki Translation Models", error
130
 
131
+ def smollm(model_name, sl, tl, input_text):
132
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
133
+ model = AutoModelForCausalLM.from_pretrained(model_name)
134
+ prompt = f"""Translate the following {sl} text to {tl}, maintaining the original meaning and tone:
135
+ {input_text}
136
+ Translation:"""
137
+ inputs = tokenizer(prompt, return_tensors="pt")
138
+ outputs = model.generate(
139
+ inputs.input_ids,
140
+ max_length=len(inputs.input_ids[0]) + 150,
141
+ temperature=0.3,
142
+ do_sample=True
143
+ )
144
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
145
+ return response.split("Translation:")[-1].strip()
146
+
147
+ # Example usage
148
+ english_text = "The weather today is beautiful and perfect for a picnic."
149
+ spanish_translation = translate_text(english_text, "English", "Spanish")
150
+ print(f"Spanish: {spanish_translation}")
151
+
152
  def flan(model_name, sl, tl, input_text):
153
  tokenizer = T5Tokenizer.from_pretrained(model_name, legacy=False)
154
  model = T5ForConditionalGeneration.from_pretrained(model_name)
 
332
  translated_text = argos(sl, tl, input_text)
333
 
334
  elif model_name == 'Google':
335
+ translated_text = Translators('Google', sl, tl, input_text).google()
336
 
337
  elif "m2m" in model_name.lower():
338
  translated_text = mtom(model_name, sl, tl, input_text)
 
373
 
374
  elif model_name.startswith('t5'):
375
  translated_text = tfive(model_name, sselected_language, tselected_language, input_text)
376
+
377
+ elif model_name == "HuggingFaceTB/SmolLM3-3B":
378
+ translated_text = smollm(model_name, sselected_language, tselected_language, input_text)
379
+
380
  except Exception as error:
381
  translated_text = error
382
  finally:
383
+ print(input_text, translated_text, message_text)
384
  return translated_text, message_text
385
 
386
  # Function to swap dropdown values