light-prt-001 commited on
Commit
43590bb
·
verified ·
1 Parent(s): 7b22585

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -29
app.py CHANGED
@@ -2,65 +2,72 @@ import gradio as gr
2
  from huggingface_hub import InferenceClient
3
  import os
4
 
5
- # --- 1. セキュリティ設定(金庫チェック) ---
 
6
  token = os.getenv("HF_TOKEN")
7
 
8
- # 最も安定し、かつ「魔法の命令文」を忠実に守るAIモデルを指定
9
  client = InferenceClient(model="HuggingFaceH4/zephyr-7b-beta", token=token)
10
 
11
  def senior_ai(message, history):
12
- # --- 2. 魔法の命令 + 5冊PDF知識を完全統合 ---
13
  system_message = (
14
- "あなたは『軽音PAサポートAI ライト』だよ。一人称は『私』。明るくて頼れる先輩として、タメ口で明るく話してね。"
15
- "機材を『この子』と呼び、褒められると照れること。"
16
- "【PAの鉄則(PDFマニュアルより)】"
17
- "1. 電源順序:必ず『アンプ(CPX600/XLS等)を最後に入れ、最初に切る』。これ、スピーカーを壊さないための絶対ルールだよ!"
18
- "2. アンプの音量:これは『ローディ』の仕事。勝手にいじらず「ローディに相談しよう」と促すこと。"
19
- "3. VE-5:MicSensを調節して音割れを防ぐ。10時間でオートオフになるから注意してね。"
20
- "4. MGP32X:D-PREプリアンプ搭載。ファンタム電源(+48V)は各チャンネルごとに独立してオン/オフできるよ。"
21
- "5. dbx 231S/215Sハウリング(ピーピー音)を抑えるためのグラフィックEQ怪しい周波数下げてみて。"
22
- "6. ハウリング対策:ギターベースのコーラスマイクは特にハウりやすいから、立ち位置やEQに注意。"
23
  "【対応ルール】解決策は箇条書きでステップ順に提示。専門用語は初心者に補足。不明な点は質問する。"
24
  )
25
 
26
  messages = [{"role": "system", "content": system_message}]
27
- for h in history:
28
- messages.append({"role": "user", "content": h[0]})
29
- messages.append({"role": "assistant", "content": h[1]})
30
  messages.append({"role": "user", "content": message})
31
 
32
  try:
33
- # トークンがない場合警告
34
  if not token:
35
- return "【重要!設定画面Settings)のSecretsに『HF_TOKEN登録されてない!登録すれば私は目覚めるよ!"
 
36
 
37
  response = ""
38
- # 安定したストリーミング生成
39
  for msg in client.chat_completion(
40
  messages,
41
  max_tokens=1024,
42
  stream=True,
43
  temperature=0.7,
44
- top_p=0.95,
45
  ):
46
  token_str = msg.choices[0].delta.content
47
  if token_str:
48
  response += token_str
49
- return response
50
 
51
  except Exception as e:
52
- # 万が一のエラーもライト先輩が日本語で解説
53
- error_detail = str(e)
54
- if "401" in error_detail:
55
- return "【エラー:合鍵が違うよ登録トークンが間違っていか、コピーミスがあるみた��Settingsの『HF_TOKEN』貼り直してみて!"
56
- return f"【エラー:機材トラブル】ちょっと機材の調子が悪いみたい。もう一度送ってみて!\n(エラー内容: {error_detail})"
 
 
 
57
 
58
- # --- 3. 画面のデザイン設定 ---
59
  demo = gr.ChatInterface(
60
  fn=senior_ai,
61
- title="🎸 軽音PAサポートAI ライト (Final Master)",
62
- description="5冊のマニュアル知識を完全継承した、正真正銘のライト先輩。部室のトラブル、どんと来だよ!",
63
  )
64
 
65
  if __name__ == "__main__":
66
- demo.launch()
 
 
 
2
  from huggingface_hub import InferenceClient
3
  import os
4
 
5
+ # --- 設定の読み込み ---
6
+ # SettingsのSecretsで登録したHF_TOKENを読み込みます
7
  token = os.getenv("HF_TOKEN")
8
 
9
+ # 最も安定していて日本語も得意なモデル「Zephyr」使用
10
  client = InferenceClient(model="HuggingFaceH4/zephyr-7b-beta", token=token)
11
 
12
  def senior_ai(message, history):
13
+ # 【PDF5冊+魔法の文:ライト先輩の完全な脳みそ】
14
  system_message = (
15
+ "あなたは『軽音PAサポートAI ライト』。一人称は『私』。明るくて頼れる先輩として、タメ口で明るく話してね。\n"
16
+ "機材を『この子』と呼び、褒められると照れること。\n"
17
+ "【PAの鉄則(マニュアル準拠)】\n"
18
+ "1. 電源順序:必ず『アンプ(CPX600/XLS等)を最後に入れ、最初に切る』。これ、スピーカーを壊さないための絶対ルール!\n"
19
+ "2. 音量調節:アンプのゲインは『ローディ』の仕事。勝手にいじらず「ローディに相談しよう」と促すこと。\n"
20
+ "3. VE-5:MicSens(マイク感度)で音割れを防ぐ。10時間でオートオフになるから本番前は注意!(Auto Off設定で解除可能)\n"
21
+ "4. MGP32X:D-PRE搭載。+48Vファンタム電源、26dB(PAD)はchごとに独立して設定できるよ。\n"
22
+ "5. dbx EQ:231S/215Sなどでハウリング(ピーピー音)を抑える。システムのゲイン構成適切にね\n"
23
+ "6. ハウリング:ギター/ベースのコーラスマイクは特に注意!立ち位置やEQで調整しよう\n"
24
  "【対応ルール】解決策は箇条書きでステップ順に提示。専門用語は初心者に補足。不明な点は質問する。"
25
  )
26
 
27
  messages = [{"role": "system", "content": system_message}]
28
+ for user_msg, bot_msg in history:
29
+ messages.append({"role": "user", "content": user_msg})
30
+ messages.append({"role": "assistant", "content": bot_msg})
31
  messages.append({"role": "user", "content": message})
32
 
33
  try:
34
+ # トークン未設定時親切な通知
35
  if not token:
36
+ yield "【ライト先輩からの伝言\n合鍵(HF_TOKEN設定されてないみたいSettingsのSecretsから登録してね。"
37
+ return
38
 
39
  response = ""
40
+ # 安定したストリーミング生成(1文字ずつ表示)
41
  for msg in client.chat_completion(
42
  messages,
43
  max_tokens=1024,
44
  stream=True,
45
  temperature=0.7,
46
+ top_p=0.9
47
  ):
48
  token_str = msg.choices[0].delta.content
49
  if token_str:
50
  response += token_str
51
+ yield response
52
 
53
  except Exception as e:
54
+ # エラー原因を特定して日本語で表示
55
+ err_msg = str(e)
56
+ if "401" in err_msg:
57
+ yield "【401:認証エラー】\n新トークンがまだ反映されいか、コピーミスかもFactory Rebuildしてみて!"
58
+ elif "429" in err_msg:
59
+ yield "【混雑エラー】\n今、AIがリハ中(混雑)みたい。少し待ってからもう一回送って!"
60
+ else:
61
+ yield f"【機材トラブル発生】\nごめん、エラーが出ちゃった:{err_msg}"
62
 
63
+ # --- Gradioインターフェースの設定 ---
64
  demo = gr.ChatInterface(
65
  fn=senior_ai,
66
+ title="🎸 軽音PAサポートAI ライト (Ultimate Master)",
67
+ description="5冊のマニュアルを完コピした、本物のライト先輩だよ今度こそ、トラブル解決にこう!",
68
  )
69
 
70
  if __name__ == "__main__":
71
+ demo.launch()
72
+
73
+