Spaces:
Sleeping
Sleeping
File size: 3,257 Bytes
b34f0d5 7dcc8af 2fa1592 b34f0d5 8144da3 c65ce97 5b30631 f1d1009 5b30631 2fa1592 f1d1009 2fa1592 7dcc8af f1d1009 5b30631 b34f0d5 f1d1009 7f46e0a c753d25 7f46e0a c753d25 7dcc8af 5b30631 b93a2da 9a94492 b93a2da 7dcc8af c753d25 d7fa504 b34f0d5 7f46e0a f1d1009 7f46e0a 5b30631 7f46e0a c753d25 7f46e0a 5b30631 7f46e0a c753d25 7f46e0a 958e155 7f46e0a 958e155 7f46e0a 958e155 d7fa504 7f46e0a d7fa504 7f46e0a 958e155 f9b088b b34f0d5 958e155 |
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 |
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() |