Spaces:
Sleeping
Sleeping
import gradio as gr | |
from huggingface_hub import InferenceClient | |
import os | |
# Cohere Command R+ 모델 ID 정의 | |
COHERE_MODEL = "CohereForAI/c4ai-command-r-plus-08-2024" | |
def get_client(): | |
""" | |
Cohere Command R+ 모델을 위한 InferenceClient 생성. | |
토큰은 환경 변수에서 가져옴. | |
""" | |
hf_token = os.getenv("HF_TOKEN") | |
if not hf_token: | |
raise ValueError("HuggingFace API 토큰이 필요합니다.") | |
return InferenceClient(COHERE_MODEL, token=hf_token) | |
def translate_text(text, source_lang, target_lang): | |
""" | |
텍스트를 번역하는 함수. | |
""" | |
try: | |
client = get_client() | |
# 프롬프트 규칙 설정 | |
if source_lang == "한국어" and target_lang == "영어": | |
prompt = f""" | |
You are a 30-year veteran English translator. | |
You are renowned for your accurate and meticulous expressions. | |
Translate the following text from Korean to English: | |
'{text}' | |
- Translate accurately according to the context and flow of the content. | |
- Do not add any extra text or explanations, just provide the translation. | |
""" | |
elif source_lang == "영어" and target_lang == "한국어": | |
prompt = f""" | |
너는 30년차 한국어 전문 번역가이다. | |
정확하고 섬세한 표현력으로 유명한 한국어 전문 번역가이다. | |
다음 텍스트를 영어에서 한국어로 번역하라: | |
'{text}' | |
- 문맥과 내용의 흐름에 맞춰 정확한 번역을 한다. | |
- 추가적인 설명 없이 번역 결과만 제공하라. | |
""" | |
else: | |
return "지원하지 않는 언어 조합입니다." | |
# 번역에 최적화된 설정 | |
response = client.text_generation( | |
prompt, | |
max_new_tokens=200, # 번역 결과의 길이를 적절히 제한 | |
temperature=0.3, # 창의성을 낮춰 정확한 번역을 유도 | |
top_p=0.9 # 높은 확률의 단어만 선택하도록 설정 | |
) | |
return response.strip() | |
except Exception as e: | |
return f"오류가 발생했습니다: {str(e)}" | |
# Gradio UI 구성 | |
with gr.Blocks() as demo: | |
gr.Markdown("# 번역기") | |
# 번역기 탭 | |
with gr.Tab("번역기"): | |
# 언어 선택 | |
source_lang = gr.Radio( | |
choices=["한국어", "영어"], | |
label="원본 언어", | |
value="한국어" | |
) | |
target_lang = gr.Radio( | |
choices=["한국어", "영어"], | |
label="목표 언어", | |
value="영어" | |
) | |
# 입력 텍스트 | |
input_text = gr.Textbox(label="번역할 텍스트", lines=5) | |
# 번역 결과 | |
translation_output = gr.Textbox(label="번역 결과", lines=5, interactive=False) | |
# 번역 버튼 | |
translate_button = gr.Button("번역") | |
# 번역 함수 연결 | |
translate_button.click( | |
fn=translate_text, | |
inputs=[input_text, source_lang, target_lang], | |
outputs=translation_output | |
) | |
# 메인 실행부 | |
if __name__ == "__main__": | |
demo.launch() |