huangjunxin commited on
Commit
eccefa5
·
1 Parent(s): c22ee41

Added database storage, updated the parameters obtained from LLM returns

Browse files
app/routes/text_translator.py CHANGED
@@ -1,5 +1,8 @@
1
  import os
2
  import gradio as gr
 
 
 
3
  from utils.translate.translate_deepl import translate_by_deepl_api
4
  from utils.translate.translate_volcengine import translate_by_volcengine_api
5
  from utils.translate.translate_hkbu_chatgpt import translate_by_hkbu_chatgpt_api
@@ -7,10 +10,14 @@ from utils.translate.translate_openrouter import translate_by_openrouter_api
7
  from utils.translate.translate_google import translate_by_google_api
8
  from utils.translate.translate_baichuan import translate_by_baichuan_api
9
  from utils.translate.translate_zhipuai import translate_by_zhipuai_api
10
- from dotenv import load_dotenv
11
 
12
  load_dotenv()
13
  passcode_key = os.getenv("PASSCODE_KEY")
 
 
 
 
 
14
 
15
  # Model Dictionary for Translate by HKBU ChatGPT API
16
  model_dict_translate_by_hkbu_chatgpt_api = {
@@ -32,6 +39,13 @@ model_dict_translate_by_zhipuai_api = {
32
 
33
 
34
  def translate_text(source_language, target_language, original_text, tone_of_voice, industry, model, passcode):
 
 
 
 
 
 
 
35
  # Check if the passcode is correct
36
  if passcode != passcode_key:
37
  return "The passcode is incorrect. Please try again."
@@ -46,35 +60,52 @@ def translate_text(source_language, target_language, original_text, tone_of_voic
46
  return "The original text is too long. Please enter a text with less than 1000 characters."
47
 
48
  # Generate translated text
49
- translated_text = ""
50
  if model == "DeepL":
51
- translated_text = translate_by_deepl_api(source_language, target_language, original_text)
52
  elif model == "Volcengine":
53
- translated_text = translate_by_volcengine_api(source_language, target_language, original_text)
54
  elif model in model_dict_translate_by_hkbu_chatgpt_api:
55
- translation_sample, rationale, translated_text, res_content, time_elapsed = translate_by_hkbu_chatgpt_api(
56
  source_language, target_language, original_text, tone_of_voice, industry,
57
  model_dict_translate_by_hkbu_chatgpt_api[model]
58
  )
59
  elif model in model_dict_translate_by_openrouter_api:
60
- translation_sample, rationale, translated_text, res_content, time_elapsed = translate_by_openrouter_api(
61
  source_language, target_language, original_text, tone_of_voice, industry,
62
  model_dict_translate_by_openrouter_api[model]
63
  )
64
  elif model == "Google Gemini (gemini-pro)":
65
- translation_sample, rationale, translated_text, res_content, time_elapsed = translate_by_google_api(
66
  source_language, target_language, original_text, tone_of_voice, industry
67
  )
68
  elif model == "Baichuan AI (Baichuan2)":
69
- translation_sample, rationale, translated_text, res_content, time_elapsed = translate_by_baichuan_api(
70
  source_language, target_language, original_text, tone_of_voice, industry
71
  )
72
  elif model in model_dict_translate_by_zhipuai_api:
73
- translation_sample, rationale, translated_text, res_content, time_elapsed = translate_by_zhipuai_api(
74
  source_language, target_language, original_text, tone_of_voice, industry,
75
  model_dict_translate_by_zhipuai_api[model]
76
  )
77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  return translated_text
79
 
80
 
 
1
  import os
2
  import gradio as gr
3
+ from supabase import create_client, Client
4
+ from dotenv import load_dotenv
5
+
6
  from utils.translate.translate_deepl import translate_by_deepl_api
7
  from utils.translate.translate_volcengine import translate_by_volcengine_api
8
  from utils.translate.translate_hkbu_chatgpt import translate_by_hkbu_chatgpt_api
 
10
  from utils.translate.translate_google import translate_by_google_api
11
  from utils.translate.translate_baichuan import translate_by_baichuan_api
12
  from utils.translate.translate_zhipuai import translate_by_zhipuai_api
 
13
 
14
  load_dotenv()
15
  passcode_key = os.getenv("PASSCODE_KEY")
16
+ supabase_url: str = os.environ.get("SUPABASE_URL")
17
+ supabase_key: str = os.environ.get("SUPABASE_KEY")
18
+
19
+ # Create a new Supabase client
20
+ supabase: Client = create_client(supabase_url, supabase_key)
21
 
22
  # Model Dictionary for Translate by HKBU ChatGPT API
23
  model_dict_translate_by_hkbu_chatgpt_api = {
 
39
 
40
 
41
  def translate_text(source_language, target_language, original_text, tone_of_voice, industry, model, passcode):
42
+ translation_sample = None
43
+ rationale = None
44
+ translated_text = ""
45
+ res_content = None
46
+ translate_time = None
47
+ llm_time = None
48
+
49
  # Check if the passcode is correct
50
  if passcode != passcode_key:
51
  return "The passcode is incorrect. Please try again."
 
60
  return "The original text is too long. Please enter a text with less than 1000 characters."
61
 
62
  # Generate translated text
 
63
  if model == "DeepL":
64
+ translated_text, translate_time = translate_by_deepl_api(source_language, target_language, original_text)
65
  elif model == "Volcengine":
66
+ translated_text, translate_time = translate_by_volcengine_api(source_language, target_language, original_text)
67
  elif model in model_dict_translate_by_hkbu_chatgpt_api:
68
+ translation_sample, rationale, translated_text, res_content, translate_time, llm_time = translate_by_hkbu_chatgpt_api(
69
  source_language, target_language, original_text, tone_of_voice, industry,
70
  model_dict_translate_by_hkbu_chatgpt_api[model]
71
  )
72
  elif model in model_dict_translate_by_openrouter_api:
73
+ translation_sample, rationale, translated_text, res_content, translate_time, llm_time = translate_by_openrouter_api(
74
  source_language, target_language, original_text, tone_of_voice, industry,
75
  model_dict_translate_by_openrouter_api[model]
76
  )
77
  elif model == "Google Gemini (gemini-pro)":
78
+ translation_sample, rationale, translated_text, res_content, translate_time, llm_time = translate_by_google_api(
79
  source_language, target_language, original_text, tone_of_voice, industry
80
  )
81
  elif model == "Baichuan AI (Baichuan2)":
82
+ translation_sample, rationale, translated_text, res_content, translate_time, llm_time = translate_by_baichuan_api(
83
  source_language, target_language, original_text, tone_of_voice, industry
84
  )
85
  elif model in model_dict_translate_by_zhipuai_api:
86
+ translation_sample, rationale, translated_text, res_content, translate_time, llm_time = translate_by_zhipuai_api(
87
  source_language, target_language, original_text, tone_of_voice, industry,
88
  model_dict_translate_by_zhipuai_api[model]
89
  )
90
 
91
+ # Insert the translation record into the database
92
+ supabase.table("translations").insert([
93
+ {
94
+ "source_language": source_language,
95
+ "target_language": target_language,
96
+ "original_text": original_text,
97
+ "tone_of_voice": tone_of_voice,
98
+ "industry": industry,
99
+ "model": model,
100
+ "translate_sample": translation_sample,
101
+ "rationale": rationale,
102
+ "translated_text": translated_text,
103
+ "res_content": res_content,
104
+ "translate_time": translate_time,
105
+ "llm_time": llm_time,
106
+ }
107
+ ]).execute()
108
+
109
  return translated_text
110
 
111
 
requirements.txt CHANGED
Binary files a/requirements.txt and b/requirements.txt differ
 
utils/prompts/translation_prompt.py CHANGED
@@ -5,6 +5,9 @@ from utils.utils.other_utils import get_language_code
5
 
6
  # Translation prompt
7
  def generate_translation_prompt(source_language, target_language, original_text, tone_of_voice, industry):
 
 
 
8
  languages_should_use_deepl = ["Chinese", "English (UK)", "English (US)", "French", "German", "Spanish",
9
  "Portuguese (Brazilian)", "Portuguese (European)", "Italian", "Dutch", "Polish",
10
  "Russian"]
@@ -13,11 +16,9 @@ def generate_translation_prompt(source_language, target_language, original_text,
13
  print(f"Target language: {target_language}, Language code: {get_language_code(target_language)}, Should use DeepL: {target_language in languages_should_use_deepl}")
14
  # Generate the translation sample
15
  if source_language in languages_should_use_deepl and target_language in languages_should_use_deepl:
16
- print("Using DeepL API")
17
- translation_sample = translate_by_deepl_api(source_language, target_language, original_text)
18
  else:
19
- print("Using Volcengine API")
20
- translation_sample = translate_by_volcengine_api(source_language, target_language, original_text)
21
 
22
  # Generate the translation prompt
23
  translation_prompt = f"""{source_language}:
@@ -40,6 +41,7 @@ Your response should be in the following json format:
40
  }}
41
  ```"""
42
 
43
- print(translation_prompt)
 
44
 
45
- return translation_sample, translation_prompt
 
5
 
6
  # Translation prompt
7
  def generate_translation_prompt(source_language, target_language, original_text, tone_of_voice, industry):
8
+ print("Generating translation prompt...")
9
+
10
+ # Languages that should use DeepL API
11
  languages_should_use_deepl = ["Chinese", "English (UK)", "English (US)", "French", "German", "Spanish",
12
  "Portuguese (Brazilian)", "Portuguese (European)", "Italian", "Dutch", "Polish",
13
  "Russian"]
 
16
  print(f"Target language: {target_language}, Language code: {get_language_code(target_language)}, Should use DeepL: {target_language in languages_should_use_deepl}")
17
  # Generate the translation sample
18
  if source_language in languages_should_use_deepl and target_language in languages_should_use_deepl:
19
+ translation_sample, translate_time = translate_by_deepl_api(source_language, target_language, original_text)
 
20
  else:
21
+ translation_sample, translate_time = translate_by_volcengine_api(source_language, target_language, original_text)
 
22
 
23
  # Generate the translation prompt
24
  translation_prompt = f"""{source_language}:
 
41
  }}
42
  ```"""
43
 
44
+ print("Translate Time:", translate_time, "seconds")
45
+ print("Translation Sample:", translation_sample)
46
 
47
+ return translation_sample, translation_prompt, translate_time
utils/translate/translate_baichuan.py CHANGED
@@ -14,7 +14,7 @@ baichuan_secret_key = os.environ.get("BAICHUAN_SECRET_KEY")
14
 
15
  def translate_by_baichuan_api(source_language, target_language, original_text, tone_of_voice, industry):
16
  # Prompt to provide translation
17
- translation_sample, translation_prompt = generate_translation_prompt(source_language, target_language, original_text, tone_of_voice, industry)
18
 
19
  start_time = time.time()
20
 
@@ -28,10 +28,10 @@ def translate_by_baichuan_api(source_language, target_language, original_text, t
28
  res_content = res.content
29
 
30
  end_time = time.time()
31
- time_elapsed = end_time - start_time
32
- print("Time Elapsed:", time_elapsed, "seconds")
33
  print("Result content:", res_content)
34
 
35
  rationale, translated_text = extract_json_from_response(target_language, res_content)
36
 
37
- return translation_sample, rationale, translated_text, res_content, time_elapsed
 
14
 
15
  def translate_by_baichuan_api(source_language, target_language, original_text, tone_of_voice, industry):
16
  # Prompt to provide translation
17
+ translation_sample, translation_prompt, translate_time = generate_translation_prompt(source_language, target_language, original_text, tone_of_voice, industry)
18
 
19
  start_time = time.time()
20
 
 
28
  res_content = res.content
29
 
30
  end_time = time.time()
31
+ llm_time = end_time - start_time
32
+ print("Time Elapsed:", llm_time, "seconds")
33
  print("Result content:", res_content)
34
 
35
  rationale, translated_text = extract_json_from_response(target_language, res_content)
36
 
37
+ return translation_sample, rationale, translated_text, res_content, translate_time, llm_time
utils/translate/translate_deepl.py CHANGED
@@ -1,4 +1,5 @@
1
  import os
 
2
  import deepl
3
  from dotenv import load_dotenv
4
 
@@ -9,8 +10,17 @@ deepl_api_key = os.environ.get("DEEPL_API_KEY")
9
 
10
 
11
  def translate_by_deepl_api(source_language, target_language, original_text):
 
 
 
 
12
  target_language_code = get_language_code(target_language).upper()
13
  deepl_client = deepl.Translator(deepl_api_key)
14
  translated_text = deepl_client.translate_text(original_text, target_lang=target_language_code)
15
 
16
- return translated_text.text
 
 
 
 
 
 
1
  import os
2
+ import time
3
  import deepl
4
  from dotenv import load_dotenv
5
 
 
10
 
11
 
12
  def translate_by_deepl_api(source_language, target_language, original_text):
13
+ print("Using DeepL API")
14
+
15
+ start_time = time.time()
16
+
17
  target_language_code = get_language_code(target_language).upper()
18
  deepl_client = deepl.Translator(deepl_api_key)
19
  translated_text = deepl_client.translate_text(original_text, target_lang=target_language_code)
20
 
21
+ end_time = time.time()
22
+ translate_time = end_time - start_time
23
+ print("Time Elapsed:", translate_time, "seconds")
24
+ print("Result content:", translated_text.text)
25
+
26
+ return translated_text.text, translate_time
utils/translate/translate_google.py CHANGED
@@ -12,7 +12,7 @@ google_api_key = os.environ.get("GOOGLE_API_KEY")
12
 
13
  def translate_by_google_api(source_language, target_language, original_text, tone_of_voice, industry):
14
  # Prompt to provide translation
15
- translation_sample, translation_prompt = generate_translation_prompt(source_language, target_language, original_text, tone_of_voice, industry)
16
 
17
  start_time = time.time()
18
 
@@ -22,10 +22,10 @@ def translate_by_google_api(source_language, target_language, original_text, ton
22
  res_content = res.content
23
 
24
  end_time = time.time()
25
- time_elapsed = end_time - start_time
26
- print("Time Elapsed:", time_elapsed, "seconds")
27
  print("Result content:", res_content)
28
 
29
  rationale, translated_text = extract_json_from_response(target_language, res_content)
30
 
31
- return translation_sample, rationale, translated_text, res_content, time_elapsed
 
12
 
13
  def translate_by_google_api(source_language, target_language, original_text, tone_of_voice, industry):
14
  # Prompt to provide translation
15
+ translation_sample, translation_prompt, translate_time = generate_translation_prompt(source_language, target_language, original_text, tone_of_voice, industry)
16
 
17
  start_time = time.time()
18
 
 
22
  res_content = res.content
23
 
24
  end_time = time.time()
25
+ llm_time = end_time - start_time
26
+ print("Time Elapsed:", llm_time, "seconds")
27
  print("Result content:", res_content)
28
 
29
  rationale, translated_text = extract_json_from_response(target_language, res_content)
30
 
31
+ return translation_sample, rationale, translated_text, res_content, translate_time, llm_time
utils/translate/translate_hkbu_chatgpt.py CHANGED
@@ -31,7 +31,7 @@ def call_hkbu_chatgpt_api(conversation_list, model_name="gpt-35-turbo", temperat
31
 
32
  def translate_by_hkbu_chatgpt_api(source_language, target_language, original_text, tone_of_voice, industry, model_name="gpt-35-turbo-16k"):
33
  # Prompt to provide translation
34
- translation_sample, translation_prompt = generate_translation_prompt(source_language, target_language, original_text, tone_of_voice, industry)
35
 
36
  start_time = time.time()
37
 
@@ -51,10 +51,10 @@ def translate_by_hkbu_chatgpt_api(source_language, target_language, original_tex
51
  return res_content
52
 
53
  end_time = time.time()
54
- time_elapsed = end_time - start_time
55
- print("Time Elapsed:", time_elapsed, "seconds")
56
  print("Result content:", res_content)
57
 
58
  rationale, translated_text = extract_json_from_response(target_language, res_content)
59
 
60
- return translation_sample, rationale, translated_text, res_content, time_elapsed
 
31
 
32
  def translate_by_hkbu_chatgpt_api(source_language, target_language, original_text, tone_of_voice, industry, model_name="gpt-35-turbo-16k"):
33
  # Prompt to provide translation
34
+ translation_sample, translation_prompt, translate_time = generate_translation_prompt(source_language, target_language, original_text, tone_of_voice, industry)
35
 
36
  start_time = time.time()
37
 
 
51
  return res_content
52
 
53
  end_time = time.time()
54
+ llm_time = end_time - start_time
55
+ print("Time Elapsed:", llm_time, "seconds")
56
  print("Result content:", res_content)
57
 
58
  rationale, translated_text = extract_json_from_response(target_language, res_content)
59
 
60
+ return translation_sample, rationale, translated_text, res_content, translate_time, llm_time
utils/translate/translate_openai.py CHANGED
@@ -13,7 +13,7 @@ openai_api_key = os.environ.get("OPENAI_API_KEY")
13
 
14
  def translate_by_openai_api(source_language, target_language, original_text, tone_of_voice, industry, model_name="gpt-3.5-turbo-1106"):
15
  # Prompt to provide translation
16
- translation_sample, translation_prompt = generate_translation_prompt(source_language, target_language, original_text, tone_of_voice, industry)
17
 
18
  start_time = time.time()
19
 
@@ -27,10 +27,10 @@ def translate_by_openai_api(source_language, target_language, original_text, ton
27
  res_content = res.content
28
 
29
  end_time = time.time()
30
- time_elapsed = end_time - start_time
31
- print("Time Elapsed:", time_elapsed, "seconds")
32
  print("Result content:", res_content)
33
 
34
  rationale, translated_text = extract_json_from_response(target_language, res_content)
35
 
36
- return translation_sample, rationale, translated_text, res_content, time_elapsed
 
13
 
14
  def translate_by_openai_api(source_language, target_language, original_text, tone_of_voice, industry, model_name="gpt-3.5-turbo-1106"):
15
  # Prompt to provide translation
16
+ translation_sample, translation_prompt, translate_time = generate_translation_prompt(source_language, target_language, original_text, tone_of_voice, industry)
17
 
18
  start_time = time.time()
19
 
 
27
  res_content = res.content
28
 
29
  end_time = time.time()
30
+ llm_time = end_time - start_time
31
+ print("Time Elapsed:", llm_time, "seconds")
32
  print("Result content:", res_content)
33
 
34
  rationale, translated_text = extract_json_from_response(target_language, res_content)
35
 
36
+ return translation_sample, rationale, translated_text, res_content, translate_time, llm_time
utils/translate/translate_openrouter.py CHANGED
@@ -40,7 +40,7 @@ def translate_by_openrouter_api(source_language, target_language, original_text,
40
  print("Use OpenRouter API")
41
 
42
  # Prompt to provide translation
43
- translation_sample, translation_prompt = generate_translation_prompt(source_language, target_language, original_text, tone_of_voice, industry)
44
 
45
  start_time = time.time()
46
 
@@ -62,10 +62,10 @@ def translate_by_openrouter_api(source_language, target_language, original_text,
62
  res_content = 'Error:', e, res
63
 
64
  end_time = time.time()
65
- time_elapsed = end_time - start_time
66
- print("Time Elapsed:", time_elapsed, "seconds")
67
  print("Result content:", res_content)
68
 
69
  rationale, translated_text = extract_json_from_response(target_language, res_content)
70
 
71
- return translation_sample, rationale, translated_text, res_content, time_elapsed
 
40
  print("Use OpenRouter API")
41
 
42
  # Prompt to provide translation
43
+ translation_sample, translation_prompt, translate_time = generate_translation_prompt(source_language, target_language, original_text, tone_of_voice, industry)
44
 
45
  start_time = time.time()
46
 
 
62
  res_content = 'Error:', e, res
63
 
64
  end_time = time.time()
65
+ llm_time = end_time - start_time
66
+ print("Time Elapsed:", llm_time, "seconds")
67
  print("Result content:", res_content)
68
 
69
  rationale, translated_text = extract_json_from_response(target_language, res_content)
70
 
71
+ return translation_sample, rationale, translated_text, res_content, translate_time, llm_time
utils/translate/translate_volcengine.py CHANGED
@@ -1,4 +1,5 @@
1
  import os
 
2
  import json
3
  from volcengine.ApiInfo import ApiInfo
4
  from volcengine.Credentials import Credentials
@@ -14,6 +15,10 @@ k_secret_key = os.environ.get("K_SECRET_KEY")
14
 
15
 
16
  def translate_by_volcengine_api(source_language, target_language, original_text):
 
 
 
 
17
  source_language_code = get_language_code(source_language)
18
  target_language_code = get_language_code(target_language)
19
 
@@ -41,4 +46,9 @@ def translate_by_volcengine_api(source_language, target_language, original_text)
41
  translated_dict = json.loads(res)
42
  translated_text = translated_dict["TranslationList"][0]["Translation"]
43
 
44
- return translated_text
 
 
 
 
 
 
1
  import os
2
+ import time
3
  import json
4
  from volcengine.ApiInfo import ApiInfo
5
  from volcengine.Credentials import Credentials
 
15
 
16
 
17
  def translate_by_volcengine_api(source_language, target_language, original_text):
18
+ print("Using Volcengine API")
19
+
20
+ start_time = time.time()
21
+
22
  source_language_code = get_language_code(source_language)
23
  target_language_code = get_language_code(target_language)
24
 
 
46
  translated_dict = json.loads(res)
47
  translated_text = translated_dict["TranslationList"][0]["Translation"]
48
 
49
+ end_time = time.time()
50
+ translate_time = end_time - start_time
51
+ print("Time Elapsed:", translate_time, "seconds")
52
+ print("Result content:", translated_text)
53
+
54
+ return translated_text, translate_time
utils/translate/translate_zhipuai.py CHANGED
@@ -17,7 +17,7 @@ zhipuai_api_key = os.environ.get("ZHIPUAI_API_KEY")
17
 
18
  def translate_by_zhipuai_api(source_language, target_language, original_text, tone_of_voice, industry, model_name="glm-3-turbo"):
19
  # Prompt to provide translation
20
- translation_sample, translation_prompt = generate_translation_prompt(source_language, target_language, original_text, tone_of_voice, industry)
21
 
22
  start_time = time.time()
23
 
@@ -33,10 +33,10 @@ def translate_by_zhipuai_api(source_language, target_language, original_text, to
33
  res_content = res.choices[0].message.content
34
 
35
  end_time = time.time()
36
- time_elapsed = end_time - start_time
37
- print("Time Elapsed:", time_elapsed, "seconds")
38
  print("Result content:", res_content)
39
 
40
  rationale, translated_text = extract_json_from_response(target_language, res_content)
41
 
42
- return translation_sample, rationale, translated_text, res_content, time_elapsed
 
17
 
18
  def translate_by_zhipuai_api(source_language, target_language, original_text, tone_of_voice, industry, model_name="glm-3-turbo"):
19
  # Prompt to provide translation
20
+ translation_sample, translation_prompt, translate_time = generate_translation_prompt(source_language, target_language, original_text, tone_of_voice, industry)
21
 
22
  start_time = time.time()
23
 
 
33
  res_content = res.choices[0].message.content
34
 
35
  end_time = time.time()
36
+ llm_time = end_time - start_time
37
+ print("Time Elapsed:", llm_time, "seconds")
38
  print("Result content:", res_content)
39
 
40
  rationale, translated_text = extract_json_from_response(target_language, res_content)
41
 
42
+ return translation_sample, rationale, translated_text, res_content, translate_time, llm_time