PSNbst commited on
Commit
0f91f56
·
verified ·
1 Parent(s): 1819fc4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +75 -59
app.py CHANGED
@@ -1,9 +1,10 @@
1
  import os
2
  import gradio as gr
3
  import openai
 
4
 
5
  ##############################################################################
6
- # 1. GPT 或 DeepSeek 调用示例函数
7
  ##############################################################################
8
  def generate_natural_language_description_gpt(tags, api_key, base_url=None, model="gpt-4"):
9
  """
@@ -12,7 +13,6 @@ def generate_natural_language_description_gpt(tags, api_key, base_url=None, mode
12
  if not api_key:
13
  return "Error: GPT API Key not provided."
14
 
15
- # 设置 API
16
  openai.api_key = api_key
17
  if base_url:
18
  openai.api_base = base_url
@@ -45,35 +45,48 @@ def generate_natural_language_description_gpt(tags, api_key, base_url=None, mode
45
  except Exception as e:
46
  return f"GPT generation failed. Error: {e}"
47
 
48
-
 
 
49
  def generate_natural_language_description_deepseek(tags, api_key, base_url=None):
50
  """
51
- 使用 DeepSeek API 生成自然语言描述的示例函数。
52
- 这里留作你在实际部署时,替换为真正的 DeepSeek API 调用逻辑。
 
 
 
 
 
53
  """
54
  if not api_key:
55
  return "Error: DeepSeek API Key not provided."
56
 
57
- # 伪代码示例(请用真实 DeepSeek 调用替换此处)
58
- # ----------------------------------
59
- # import requests
60
- # response = requests.post(
61
- # url=base_url or "https://api.deepseek.com/xxx",
62
- # headers={"Authorization": f"Bearer {api_key}"},
63
- # json={"tags": tags}
64
- # )
65
- # if response.status_code == 200:
66
- # return response.json().get("description", "No description returned.")
67
- # else:
68
- # return f"DeepSeek generation failed: {response.text}"
69
- # ----------------------------------
70
-
71
- # 目前只是一个占位返回:
72
- return "[DeepSeek: 此处应返回真实API结果]"
73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
 
75
  ##############################################################################
76
- # 2. 翻译示例函数(使用 GPT 或 DeepSeek)
77
  ##############################################################################
78
  def translate_text_with_gpt(text, target_language, api_key, base_url=None, model="gpt-4"):
79
  """
@@ -99,37 +112,52 @@ def translate_text_with_gpt(text, target_language, api_key, base_url=None, model
99
  except Exception as e:
100
  return f"GPT translation failed. Error: {e}"
101
 
102
-
 
 
103
  def translate_text_with_deepseek(text, target_language, api_key, base_url=None):
104
  """
105
- 使用 DeepSeek 来进行翻译的简单示例(仍需你在此处写入实际逻辑)。
 
 
 
 
 
 
106
  """
107
  if not api_key:
108
  return "Error: DeepSeek Translation Key not provided."
109
 
110
- # 伪代码示例(请用真实 DeepSeek 翻译调用替换)
111
- # ----------------------------------
112
- # import requests
113
- # response = requests.post(
114
- # url=base_url or "https://api.deepseek.com/translate",
115
- # headers={"Authorization": f"Bearer {api_key}"},
116
- # json={"text": text, "target_language": target_language}
117
- # )
118
- # if response.status_code == 200:
119
- # return response.json().get("translated_text", "No translation returned.")
120
- # else:
121
- # return f"DeepSeek translation failed: {response.text}"
122
- # ----------------------------------
123
-
124
- return "[DeepSeek: 此处应返回翻译API的真实结果]"
125
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
 
127
  ##############################################################################
128
- # 3. 根据用户选择进行提示词转换并调用 GPT/DeepSeek 生成描述
129
  ##############################################################################
130
  def transform_prompt(prompt, gender_option, furry_species, api_mode, api_key):
131
  """
132
- 性别/物种转换的简单示例逻辑,然后调用相应 API
133
  """
134
  tags = {}
135
 
@@ -149,7 +177,6 @@ def transform_prompt(prompt, gender_option, furry_species, api_mode, api_key):
149
  # 原始提示词
150
  tags["base_prompt"] = prompt
151
 
152
- # 根据选择的 API 调用对应的函数
153
  if api_mode == "GPT":
154
  scene_description = generate_natural_language_description_gpt(tags, api_key)
155
  else: # DeepSeek
@@ -157,9 +184,8 @@ def transform_prompt(prompt, gender_option, furry_species, api_mode, api_key):
157
 
158
  return scene_description
159
 
160
-
161
  ##############################################################################
162
- # 4. 调用翻译函数
163
  ##############################################################################
164
  def do_translation(scene_desc, translate_language, api_mode, api_key):
165
  """
@@ -173,9 +199,8 @@ def do_translation(scene_desc, translate_language, api_mode, api_key):
173
  else:
174
  return translate_text_with_deepseek(scene_desc, translate_language, api_key)
175
 
176
-
177
  ##############################################################################
178
- # 5. 搭建 Gradio 界面
179
  ##############################################################################
180
  def build_interface():
181
  with gr.Blocks() as demo:
@@ -216,7 +241,7 @@ def build_interface():
216
  label="Furry 物种 (Furry Species)",
217
  choices=["Wolf", "Fox", "Tiger", "Lion"],
218
  value=None,
219
- visible=False # 初始不可见
220
  )
221
 
222
  # 当性别选项切换时,如果选择 Furry,就显示物种下拉,否则隐藏
@@ -246,11 +271,9 @@ def build_interface():
246
  lines=7
247
  )
248
 
249
- # 翻译区域
250
  with gr.Row():
251
  translate_language = gr.Dropdown(
252
  label="翻译语言 (Translation Language)",
253
- # 可自行添加更多语言选项
254
  choices=["English", "Chinese", "Japanese", "French", "German", "Dutch", "Arabic", "Russian", "Persian", "Italian"],
255
  value="English",
256
  )
@@ -263,23 +286,19 @@ def build_interface():
263
  # 事件绑定
264
  ######################################################################
265
 
266
- # 生成函数:一次性返回「转换结果」和「翻译结果」
267
  def on_generate(prompt, gender, furry, mode, key, lang):
268
- # 1) 先做性别/物种转换,拿到“转换后”提示词
269
  trans_desc = transform_prompt(prompt, gender, furry, mode, key)
270
- # 2) 立刻翻译
271
  trans_result = do_translation(trans_desc, lang, mode, key)
272
- # 返回两项
273
  return trans_desc, trans_result
274
 
275
- # 当用户在 prompt 输入后按回车时,触发生成场景描述 + 翻译
276
  user_prompt.submit(
277
  fn=on_generate,
278
  inputs=[user_prompt, gender_option, furry_species, api_mode, api_key, translate_language],
279
  outputs=[generated_output, translated_text],
280
  )
281
 
282
- # 点击���钮也触发同样的逻辑
283
  generate_button = gr.Button("生成 / Generate")
284
  generate_button.click(
285
  fn=on_generate,
@@ -287,7 +306,6 @@ def build_interface():
287
  outputs=[generated_output, translated_text],
288
  )
289
 
290
- # 当用户切换翻译语言时,如果已经有转换后的内容,则再次翻译
291
  def on_translate(scene_desc, lang, mode, key):
292
  return do_translation(scene_desc, lang, mode, key)
293
 
@@ -299,8 +317,6 @@ def build_interface():
299
 
300
  return demo
301
 
302
-
303
- # 在 Spaces 启动
304
  if __name__ == "__main__":
305
  demo = build_interface()
306
- demo.launch()
 
1
  import os
2
  import gradio as gr
3
  import openai
4
+ import requests
5
 
6
  ##############################################################################
7
+ # 1. GPT 调用示例函数
8
  ##############################################################################
9
  def generate_natural_language_description_gpt(tags, api_key, base_url=None, model="gpt-4"):
10
  """
 
13
  if not api_key:
14
  return "Error: GPT API Key not provided."
15
 
 
16
  openai.api_key = api_key
17
  if base_url:
18
  openai.api_base = base_url
 
45
  except Exception as e:
46
  return f"GPT generation failed. Error: {e}"
47
 
48
+ ##############################################################################
49
+ # 2. DeepSeek 调用示例函数 (真实请求)
50
+ ##############################################################################
51
  def generate_natural_language_description_deepseek(tags, api_key, base_url=None):
52
  """
53
+ 使用 DeepSeek API 生成自然语言描述的真实示例函数。
54
+ 假设 DeepSeek 文档里的生成接口是:
55
+ POST https://api.deepseek.com/v1/generate
56
+ Headers: {"Authorization": "Bearer <api_key>"}
57
+ Body(JSON): {"tags": {...}}
58
+ 返回:
59
+ {"success": true, "data": {"description": "..."}}
60
  """
61
  if not api_key:
62
  return "Error: DeepSeek API Key not provided."
63
 
64
+ # 如果有自定义 base_url 就用,没有就用假设的默认
65
+ url = base_url or "https://api.deepseek.com/v1/generate"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
 
67
+ try:
68
+ headers = {
69
+ "Content-Type": "application/json",
70
+ "Authorization": f"Bearer {api_key}"
71
+ }
72
+ payload = {
73
+ "tags": tags # 具体字段要根据实际 DeepSeek 文档
74
+ }
75
+ resp = requests.post(url, json=payload, headers=headers, timeout=30)
76
+ if resp.status_code == 200:
77
+ j = resp.json()
78
+ if j.get("success"):
79
+ # 假设描述存放在 data.description
80
+ return j["data"].get("description", "No 'description' found in data.")
81
+ else:
82
+ return f"DeepSeek generation failed, success=false. {j}"
83
+ else:
84
+ return f"DeepSeek generation failed with status {resp.status_code}. {resp.text}"
85
+ except Exception as e:
86
+ return f"DeepSeek generation request error: {e}"
87
 
88
  ##############################################################################
89
+ # 3. GPT 翻译函数
90
  ##############################################################################
91
  def translate_text_with_gpt(text, target_language, api_key, base_url=None, model="gpt-4"):
92
  """
 
112
  except Exception as e:
113
  return f"GPT translation failed. Error: {e}"
114
 
115
+ ##############################################################################
116
+ # 4. DeepSeek 翻译函数 (真实请求)
117
+ ##############################################################################
118
  def translate_text_with_deepseek(text, target_language, api_key, base_url=None):
119
  """
120
+ 使用 DeepSeek 来进行翻译的真实示例函数。
121
+ 假设 DeepSeek 文档里的翻译接口是:
122
+ POST https://api.deepseek.com/v1/translate
123
+ Headers: {"Authorization": "Bearer <api_key>"}
124
+ Body(JSON): {"text": "...", "target_language": "..."}
125
+ 返回:
126
+ {"success": true, "data": {"translated_text": "..."}}
127
  """
128
  if not api_key:
129
  return "Error: DeepSeek Translation Key not provided."
130
 
131
+ url = base_url or "https://api.deepseek.com/v1/translate"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
 
133
+ try:
134
+ headers = {
135
+ "Content-Type": "application/json",
136
+ "Authorization": f"Bearer {api_key}"
137
+ }
138
+ payload = {
139
+ "text": text,
140
+ "target_language": target_language
141
+ }
142
+ resp = requests.post(url, json=payload, headers=headers, timeout=30)
143
+ if resp.status_code == 200:
144
+ j = resp.json()
145
+ if j.get("success"):
146
+ # 假设翻译结果存放在 data.translated_text
147
+ return j["data"].get("translated_text", "No 'translated_text' found in data.")
148
+ else:
149
+ return f"DeepSeek translation failed, success=false. {j}"
150
+ else:
151
+ return f"DeepSeek translation failed with status {resp.status_code}. {resp.text}"
152
+ except Exception as e:
153
+ return f"DeepSeek translation request error: {e}"
154
 
155
  ##############################################################################
156
+ # 5. 根据用户选择进行提示词转换并调用 GPT/DeepSeek 生成描述
157
  ##############################################################################
158
  def transform_prompt(prompt, gender_option, furry_species, api_mode, api_key):
159
  """
160
+ 性别/物种转换的简单示例逻辑,然后调用相应 API 进行生成。
161
  """
162
  tags = {}
163
 
 
177
  # 原始提示词
178
  tags["base_prompt"] = prompt
179
 
 
180
  if api_mode == "GPT":
181
  scene_description = generate_natural_language_description_gpt(tags, api_key)
182
  else: # DeepSeek
 
184
 
185
  return scene_description
186
 
 
187
  ##############################################################################
188
+ # 6. 调用翻译函数
189
  ##############################################################################
190
  def do_translation(scene_desc, translate_language, api_mode, api_key):
191
  """
 
199
  else:
200
  return translate_text_with_deepseek(scene_desc, translate_language, api_key)
201
 
 
202
  ##############################################################################
203
+ # 7. 搭建 Gradio 界面
204
  ##############################################################################
205
  def build_interface():
206
  with gr.Blocks() as demo:
 
241
  label="Furry 物种 (Furry Species)",
242
  choices=["Wolf", "Fox", "Tiger", "Lion"],
243
  value=None,
244
+ visible=False
245
  )
246
 
247
  # 当性别选项切换时,如果选择 Furry,就显示物种下拉,否则隐藏
 
271
  lines=7
272
  )
273
 
 
274
  with gr.Row():
275
  translate_language = gr.Dropdown(
276
  label="翻译语言 (Translation Language)",
 
277
  choices=["English", "Chinese", "Japanese", "French", "German", "Dutch", "Arabic", "Russian", "Persian", "Italian"],
278
  value="English",
279
  )
 
286
  # 事件绑定
287
  ######################################################################
288
 
 
289
  def on_generate(prompt, gender, furry, mode, key, lang):
290
+ # 1) 调用 transform_prompt 拿到转换后的描述
291
  trans_desc = transform_prompt(prompt, gender, furry, mode, key)
292
+ # 2) 调用翻译
293
  trans_result = do_translation(trans_desc, lang, mode, key)
 
294
  return trans_desc, trans_result
295
 
 
296
  user_prompt.submit(
297
  fn=on_generate,
298
  inputs=[user_prompt, gender_option, furry_species, api_mode, api_key, translate_language],
299
  outputs=[generated_output, translated_text],
300
  )
301
 
 
302
  generate_button = gr.Button("生成 / Generate")
303
  generate_button.click(
304
  fn=on_generate,
 
306
  outputs=[generated_output, translated_text],
307
  )
308
 
 
309
  def on_translate(scene_desc, lang, mode, key):
310
  return do_translation(scene_desc, lang, mode, key)
311
 
 
317
 
318
  return demo
319
 
 
 
320
  if __name__ == "__main__":
321
  demo = build_interface()
322
+ demo.launch()