aliceblue11 commited on
Commit
58c9ca2
·
verified ·
1 Parent(s): 9a94492

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +41 -68
app.py CHANGED
@@ -1,95 +1,68 @@
1
  import gradio as gr
2
- from huggingface_hub import InferenceClient
3
- import os
4
 
5
- # Cohere Command R+ 모델 ID 정의
6
- COHERE_MODEL = "CohereForAI/c4ai-command-r-plus-08-2024"
7
-
8
- def get_client():
9
- """
10
- Cohere Command R+ 모델을 위한 InferenceClient 생성.
11
- 토큰은 환경 변수에서 가져옴.
12
- """
13
- hf_token = os.getenv("HF_TOKEN")
14
- if not hf_token:
15
- raise ValueError("HuggingFace API 토큰이 필요합니다.")
16
- return InferenceClient(COHERE_MODEL, token=hf_token)
17
 
 
 
 
 
18
 
19
  def translate_text(text, source_lang, target_lang):
20
  """
21
  텍스트를 번역하는 함수.
22
  """
23
  try:
24
- client = get_client()
25
-
26
- # 프롬프트 규칙 설정
27
  if source_lang == "한국어" and target_lang == "영어":
28
- prompt = f"""
29
- You are a 30-year veteran English translator.
30
- You are renowned for your accurate and meticulous expressions.
31
- Translate the following text from Korean to English:
32
- '{text}'
33
- - Translate accurately according to the context and flow of the content.
34
- - Do not add any extra text or explanations, just provide the translation.
35
- """
36
  elif source_lang == "영어" and target_lang == "한국어":
37
- prompt = f"""
38
- 너는 30년차 한국어 전문 번역가이다.
39
- 정확하고 섬세한 표현력으로 유명한 한국어 전문 번역가이다.
40
- 다음 텍스트를 영어에서 한국어로 번역하라:
41
- '{text}'
42
- - 문맥과 내용의 흐름에 맞춰 정확한 번역을 한다.
43
- - 추가적인 설명 없이 번역 결과만 제공하라.
44
- """
45
  else:
46
  return "지원하지 않는 언어 조합입니다."
47
-
48
- # 번역에 최적화된 설정
49
- response = client.text_generation(
50
- prompt,
51
- max_new_tokens=200, # 번역 결과의 길이를 적절히 제한
52
- temperature=0.3, # 창의성을 낮춰 정확한 번역을 유도
53
- top_p=0.9 # 높은 확률의 단어만 선택하도록 설정
54
- )
55
- return response.strip()
56
  except Exception as e:
57
  return f"오류가 발생했습니다: {str(e)}"
58
 
59
-
60
  # Gradio UI 구성
61
  with gr.Blocks() as demo:
62
  gr.Markdown("# 번역기")
63
 
64
- # 번역기
65
- with gr.Tab("번역기"):
66
- # 언어 선택
67
- source_lang = gr.Radio(
68
- choices=["한국어", "영어"],
69
- label="원본 언어",
70
- value="한국어"
71
- )
72
- target_lang = gr.Radio(
73
- choices=["한국어", "영어"],
74
- label="목표 언어",
75
- value="영어"
76
- )
77
 
78
- # 입력 텍스트
79
- input_text = gr.Textbox(label="번역할 텍스트", lines=5)
80
 
81
- # 번역 결과
82
- translation_output = gr.Textbox(label="번역 결과", lines=5, interactive=False)
83
 
84
- # 번역 버튼
85
- translate_button = gr.Button("번역")
86
 
87
- # 번역 함수 연결
88
- translate_button.click(
89
- fn=translate_text,
90
- inputs=[input_text, source_lang, target_lang],
91
- outputs=translation_output
92
- )
93
 
94
  # 메인 실행��
95
  if __name__ == "__main__":
 
1
  import gradio as gr
2
+ from transformers import MarianMTModel, MarianTokenizer
 
3
 
4
+ # 한국어 -> 영어 모델 로드
5
+ model_name_ko_en = "Helsinki-NLP/opus-mt-ko-en"
6
+ tokenizer_ko_en = MarianTokenizer.from_pretrained(model_name_ko_en)
7
+ model_ko_en = MarianMTModel.from_pretrained(model_name_ko_en)
 
 
 
 
 
 
 
 
8
 
9
+ # 영어 -> 한국어 모델 로드
10
+ model_name_en_ko = "Helsinki-NLP/opus-mt-en-ko"
11
+ tokenizer_en_ko = MarianTokenizer.from_pretrained(model_name_en_ko)
12
+ model_en_ko = MarianMTModel.from_pretrained(model_name_en_ko)
13
 
14
  def translate_text(text, source_lang, target_lang):
15
  """
16
  텍스트를 번역하는 함수.
17
  """
18
  try:
 
 
 
19
  if source_lang == "한국어" and target_lang == "영어":
20
+ # 한국어 -> 영어 번역
21
+ tokenized = tokenizer_ko_en(text, return_tensors="pt", padding=True)
22
+ translated = model_ko_en.generate(**tokenized)
23
+ result = tokenizer_ko_en.decode(translated[0], skip_special_tokens=True)
 
 
 
 
24
  elif source_lang == "영어" and target_lang == "한국어":
25
+ # 영어 -> 한국어 번역
26
+ tokenized = tokenizer_en_ko(text, return_tensors="pt", padding=True)
27
+ translated = model_en_ko.generate(**tokenized)
28
+ result = tokenizer_en_ko.decode(translated[0], skip_special_tokens=True)
 
 
 
 
29
  else:
30
  return "지원하지 않는 언어 조합입니다."
31
+ return result
 
 
 
 
 
 
 
 
32
  except Exception as e:
33
  return f"오류가 발생했습니다: {str(e)}"
34
 
 
35
  # Gradio UI 구성
36
  with gr.Blocks() as demo:
37
  gr.Markdown("# 번역기")
38
 
39
+ # 언어 선택
40
+ source_lang = gr.Radio(
41
+ choices=["한국어", "영어"],
42
+ label="원본 언어",
43
+ value="한국어"
44
+ )
45
+ target_lang = gr.Radio(
46
+ choices=["한국어", "영어"],
47
+ label="목표 언어",
48
+ value="영어"
49
+ )
 
 
50
 
51
+ # 입력 텍스트
52
+ input_text = gr.Textbox(label="번역할 텍스트", lines=5)
53
 
54
+ # 번역 결과
55
+ translation_output = gr.Textbox(label="번역 결과", lines=5, interactive=False)
56
 
57
+ # 번역 버튼
58
+ translate_button = gr.Button("번역")
59
 
60
+ # 번역 함수 연결
61
+ translate_button.click(
62
+ fn=translate_text,
63
+ inputs=[input_text, source_lang, target_lang],
64
+ outputs=translation_output
65
+ )
66
 
67
  # 메인 실행��
68
  if __name__ == "__main__":