sofiamak commited on
Commit
5002613
·
verified ·
1 Parent(s): e4454ec

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -30
app.py CHANGED
@@ -1,12 +1,12 @@
1
- import os, html, tempfile
2
  import gradio as gr
3
  from openai import OpenAI
4
 
5
  API_KEY = os.getenv("OPENAI_API_KEY")
6
- client = OpenAI(api_key=API_KEY)
7
-
8
  MODEL_NAME = "gpt-4o-mini"
9
 
 
 
10
  SYSTEM_PROMPT = """You are a creative pet name generator.
11
  Given species, appearance, personality and gender, propose exactly ONE concise, pronounceable name.
12
  Rules:
@@ -15,7 +15,7 @@ Rules:
15
  - Prefer 2–3 syllables.
16
  - Consider the pet's gender vibe (male or female).
17
  - Provide a short meaning/explanation (≤12 words).
18
- - If language is Chinese/Japanese/Korean/French/English, output in that language, with romanization if helpful.
19
  - No numbers, no long phrases, no public-figure names.
20
  Output strictly as:
21
  Name — short meaning
@@ -31,10 +31,9 @@ Gender: {gender}
31
  Generate exactly ONE creative pet name.
32
  """
33
 
34
- def generate_name_with_audio(species, look, personality, gender, language):
35
  try:
36
- # 生成名字文本
37
- prompt = build_prompt(species.strip(), look.strip(), personality.strip(), gender, language)
38
  resp = client.chat.completions.create(
39
  model=MODEL_NAME,
40
  temperature=0.7,
@@ -44,25 +43,12 @@ def generate_name_with_audio(species, look, personality, gender, language):
44
  {"role": "user", "content": prompt}
45
  ]
46
  )
47
- text = resp.choices[0].message.content.strip()
48
-
49
- # 生成语音
50
- with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmpfile:
51
- speech = client.audio.speech.create(
52
- model="gpt-4o-mini-tts",
53
- voice="alloy", # 声音可改:alloy, verse, etc.
54
- input=text
55
- )
56
- speech.stream_to_file(tmpfile.name)
57
- audio_path = tmpfile.name
58
-
59
- return text, audio_path
60
-
61
  except Exception as e:
62
- return f"⚠️ 出错:{html.escape(str(e))}", None
63
 
64
  with gr.Blocks(title="Pawfect Match") as demo:
65
- gr.Markdown("## 🐾 Pawfect Match|宠物起名机\n输入宠物信息,一键生成名字 + 听发音。")
66
 
67
  species = gr.Textbox(label="宠物种类", placeholder="例:金毛 / 英短 / 仓鼠 / 鹦鹉")
68
  look = gr.Textbox(label="外表特征", placeholder="例:橘色短毛,大眼睛,白爪")
@@ -71,14 +57,9 @@ with gr.Blocks(title="Pawfect Match") as demo:
71
  language = gr.Radio(["中文","English","日本語","한국어","Français"], value="English", label="输出语言")
72
 
73
  btn = gr.Button("✨ 起名!")
74
- out_text = gr.Markdown()
75
- out_audio = gr.Audio(label="🔊 发音", type="filepath")
76
 
77
- btn.click(
78
- generate_name_with_audio,
79
- inputs=[species, look, personality, gender, language],
80
- outputs=[out_text, out_audio]
81
- )
82
 
83
  if __name__ == "__main__":
84
  demo.launch()
 
1
+ import os, html
2
  import gradio as gr
3
  from openai import OpenAI
4
 
5
  API_KEY = os.getenv("OPENAI_API_KEY")
 
 
6
  MODEL_NAME = "gpt-4o-mini"
7
 
8
+ client = OpenAI(api_key=API_KEY)
9
+
10
  SYSTEM_PROMPT = """You are a creative pet name generator.
11
  Given species, appearance, personality and gender, propose exactly ONE concise, pronounceable name.
12
  Rules:
 
15
  - Prefer 2–3 syllables.
16
  - Consider the pet's gender vibe (male or female).
17
  - Provide a short meaning/explanation (≤12 words).
18
+ - If language is Chinese/Japanese/Korean/French, output in that language, with romanization if helpful.
19
  - No numbers, no long phrases, no public-figure names.
20
  Output strictly as:
21
  Name — short meaning
 
31
  Generate exactly ONE creative pet name.
32
  """
33
 
34
+ def generate_name(species, look, personality, gender, language):
35
  try:
36
+ prompt = build_prompt(species, look, personality, gender, language)
 
37
  resp = client.chat.completions.create(
38
  model=MODEL_NAME,
39
  temperature=0.7,
 
43
  {"role": "user", "content": prompt}
44
  ]
45
  )
46
+ return resp.choices[0].message.content
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  except Exception as e:
48
+ return f"⚠️ 出错:{html.escape(str(e))}"
49
 
50
  with gr.Blocks(title="Pawfect Match") as demo:
51
+ gr.Markdown("## 🐾 Pawfect Match|宠物起名机\n输入宠物信息,一键生成一个名字 + 简短含义。")
52
 
53
  species = gr.Textbox(label="宠物种类", placeholder="例:金毛 / 英短 / 仓鼠 / 鹦鹉")
54
  look = gr.Textbox(label="外表特征", placeholder="例:橘色短毛,大眼睛,白爪")
 
57
  language = gr.Radio(["中文","English","日本語","한국어","Français"], value="English", label="输出语言")
58
 
59
  btn = gr.Button("✨ 起名!")
60
+ out = gr.Markdown()
 
61
 
62
+ btn.click(generate_name, inputs=[species, look, personality, gender, language], outputs=out)
 
 
 
 
63
 
64
  if __name__ == "__main__":
65
  demo.launch()