littlebird13 commited on
Commit
f84f5ba
·
verified ·
1 Parent(s): 09a27e1

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +214 -0
app.py ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import gradio as gr
3
+ from openai import OpenAI
4
+
5
+ # 初始化 OpenAI 客户端
6
+ client = OpenAI(
7
+ api_key=os.environ['API_KEY'], # 请确保已设置环境变量,或直接填入你的 API Key
8
+ base_url="https://dashscope.aliyuncs-intl.com/compatible-mode/v1",
9
+ )
10
+
11
+ # 支持的语言选项
12
+ LANGUAGES = {
13
+ "Auto Detect": "auto",
14
+ "English": "English",
15
+ "Chinese": "Chinese",
16
+ "Traditional Chinese": "Traditional Chinese",
17
+ "Russian": "Russian",
18
+ "Japanese": "Japanese",
19
+ "Korean": "Korean",
20
+ "Spanish": "Spanish",
21
+ "French": "French",
22
+ "Portuguese": "Portuguese",
23
+ "German": "German",
24
+ "Italian": "Italian",
25
+ "Thai": "Thai",
26
+ "Vietnamese": "Vietnamese",
27
+ "Indonesian": "Indonesian",
28
+ "Malay": "Malay",
29
+ "Arabic": "Arabic",
30
+ "Hindi": "Hindi",
31
+ "Hebrew": "Hebrew",
32
+ "Burmese": "Burmese",
33
+ "Tamil": "Tamil",
34
+ "Urdu": "Urdu",
35
+ "Bengali": "Bengali",
36
+ "Polish": "Polish",
37
+ "Dutch": "Dutch",
38
+ "Romanian": "Romanian",
39
+ "Turkish": "Turkish",
40
+ "Khmer": "Khmer",
41
+ "Lao": "Lao",
42
+ "Cantonese": "Cantonese",
43
+ "Czech": "Czech",
44
+ "Greek": "Greek",
45
+ "Swedish": "Swedish",
46
+ "Hungarian": "Hungarian",
47
+ "Danish": "Danish",
48
+ "Finnish": "Finnish",
49
+ "Ukrainian": "Ukrainian",
50
+ "Bulgarian": "Bulgarian",
51
+ "Serbian": "Serbian",
52
+ "Telugu": "Telugu",
53
+ "Afrikaans": "Afrikaans",
54
+ "Armenian": "Armenian",
55
+ "Assamese": "Assamese",
56
+ "Asturian": "Asturian",
57
+ "Basque": "Basque",
58
+ "Belarusian": "Belarusian",
59
+ "Bosnian": "Bosnian",
60
+ "Catalan": "Catalan",
61
+ "Cebuano": "Cebuano",
62
+ "Croatian": "Croatian",
63
+ "Egyptian Arabic": "Egyptian Arabic",
64
+ "Estonian": "Estonian",
65
+ "Galician": "Galician",
66
+ "Georgian": "Georgian",
67
+ "Gujarati": "Gujarati",
68
+ "Icelandic": "Icelandic",
69
+ "Javanese": "Javanese",
70
+ "Kannada": "Kannada",
71
+ "Kazakh": "Kazakh",
72
+ "Latvian": "Latvian",
73
+ "Lithuanian": "Lithuanian",
74
+ "Luxembourgish": "Luxembourgish",
75
+ "Macedonian": "Macedonian",
76
+ "Maithili": "Maithili",
77
+ "Maltese": "Maltese",
78
+ "Marathi": "Marathi",
79
+ "Mesopotamian Arabic": "Mesopotamian Arabic",
80
+ "Moroccan Arabic": "Moroccan Arabic",
81
+ "Najdi Arabic": "Najdi Arabic",
82
+ "Nepali": "Nepali",
83
+ "North Azerbaijani": "North Azerbaijani",
84
+ "North Levantine Arabic": "North Levantine Arabic",
85
+ "Northern Uzbek": "Northern Uzbek",
86
+ "Norwegian Bokmål": "Norwegian Bokmål",
87
+ "Norwegian Nynorsk": "Norwegian Nynorsk",
88
+ "Occitan": "Occitan",
89
+ "Odia": "Odia",
90
+ "Pangasinan": "Pangasinan",
91
+ "Sicilian": "Sicilian",
92
+ "Sindhi": "Sindhi",
93
+ "Sinhala": "Sinhala",
94
+ "Slovak": "Slovak",
95
+ "Slovenian": "Slovenian",
96
+ "South Levantine Arabic": "South Levantine Arabic",
97
+ "Swahili": "Swahili",
98
+ "Tagalog": "Tagalog",
99
+ "Ta’izzi-Adeni Arabic": "Ta’izzi-Adeni Arabic",
100
+ "Tosk Albanian": "Tosk Albanian",
101
+ "Tunisian Arabic": "Tunisian Arabic",
102
+ "Venetian": "Venetian",
103
+ "Waray": "Waray",
104
+ "Welsh": "Welsh",
105
+ "Western Persian": "Western Persian"
106
+ }
107
+
108
+
109
+ def translate_text(text, source_lang, target_lang):
110
+ """
111
+ 调用阿里云百炼的翻译模型进行翻译
112
+ """
113
+ if not text.strip():
114
+ return "请输入要翻译的文本"
115
+
116
+ # 构造消息内容
117
+ messages = [{"role": "user", "content": text}]
118
+
119
+ # 构造翻译选项
120
+ translation_options = {
121
+ "source_lang": LANGUAGES.get(source_lang, "auto"),
122
+ "target_lang": LANGUAGES.get(target_lang, "English")
123
+ }
124
+
125
+ try:
126
+ # 调用模型
127
+ completion = client.chat.completions.create(
128
+ model="qwen-mt-turbo",
129
+ messages=messages,
130
+ stream=True,
131
+ max_tokens=2048,
132
+ extra_body={"translation_options": translation_options})
133
+ response = ''
134
+ for chunk in completion:
135
+ response = chunk.choices[0].delta.content
136
+ yield response
137
+ except Exception as e:
138
+ yield f"翻译出错: {str(e)}"
139
+
140
+
141
+ # 创建 Gradio 界面
142
+ with gr.Blocks(title="Qwen3-MT Translator") as demo:
143
+ gr.Markdown("# 🌍 Qwen3-MT Translator")
144
+ gr.Markdown(
145
+ 'A real-time translation tool based on the Qwen3-MT model<br><a href="https://help.aliyun.com/zh/model-studio/machine-translation" target="_blank">Learn more about Qwen3-MT and API documentation</a>',
146
+ elem_id="desc"
147
+ )
148
+ gr.Image(
149
+ value="https://modelscope.oss-cn-beijing.aliyuncs.com/resource/Qwen3-MT.png",
150
+ label="Qwen3-MT Supported Languages",
151
+ show_label=False,
152
+ show_download_button=False,
153
+ interactive=False,
154
+ height=60
155
+ )
156
+
157
+ with gr.Row():
158
+ with gr.Column():
159
+ source_text = gr.Textbox(
160
+ label="Input Text",
161
+ placeholder="Please enter the text to translate...",
162
+ lines=5
163
+ )
164
+ with gr.Row():
165
+ source_lang = gr.Dropdown(
166
+ choices=list(LANGUAGES.keys()),
167
+ value="Auto Detect",
168
+ label="Source Language"
169
+ )
170
+ target_lang = gr.Dropdown(
171
+ choices=list(LANGUAGES.keys())[1:], # Exclude "Auto Detect"
172
+ value="English",
173
+ label="Target Language"
174
+ )
175
+ translate_btn = gr.Button("Translate", variant="primary")
176
+
177
+ with gr.Column():
178
+ target_text = gr.Textbox(
179
+ label="Translation Result",
180
+ interactive=False,
181
+ lines=5
182
+ )
183
+
184
+ # 示例
185
+ gr.Examples(
186
+ examples=[
187
+ ["你好,世界!", "Chinese", "English"],
188
+ ["Hello, how are you today?", "English", "Chinese"],
189
+ ["私は学生です。", "Japanese", "Chinese"],
190
+ ["Bonjour, comment allez-vous?", "French", "English"]
191
+ ],
192
+ inputs=[source_text, source_lang, target_lang],
193
+ outputs=target_text,
194
+ fn=translate_text,
195
+ cache_examples=True
196
+ )
197
+
198
+ # 按钮点击事件
199
+ translate_btn.click(
200
+ fn=translate_text,
201
+ inputs=[source_text, source_lang, target_lang],
202
+ outputs=target_text
203
+ )
204
+
205
+ # 支持回车键翻译
206
+ source_text.submit(
207
+ fn=translate_text,
208
+ inputs=[source_text, source_lang, target_lang],
209
+ outputs=target_text
210
+ )
211
+
212
+ # 启动应用
213
+ if __name__ == "__main__":
214
+ demo.launch()