Corin1998 commited on
Commit
d0abef7
·
verified ·
1 Parent(s): 777d13f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -41
app.py CHANGED
@@ -2,50 +2,37 @@ import gradio as gr
2
  from huggingface_hub import InferenceClient
3
  import os
4
 
5
- # Secretsから取得。取得できない場合のデフォルト値を設定
6
  TOKEN = os.getenv("HF_TOKEN")
7
-
8
- # モデルの指定 (Llama-3-70B)
9
  client = InferenceClient("meta-llama/Meta-Llama-3-70B-Instruct", token=TOKEN)
10
 
11
  def generate_press_release(category, title, key_elements, background, company_info):
12
  if not TOKEN:
13
- yield "❌ エラー: HF_TOKEN が設定されていません。Spaceの Settings > Variables and Secrets で設定してください。"
14
  return
15
 
16
- category_hints = {
17
- "新製品・サービス": "スペック、価格、発売日、独自性を強調してください。",
18
- "イベント・展示会": "日時、場所、登壇者、参加メリット、申し込み方法を強調してください。",
19
- "業務提携・契約": "提携の目的、両社の強み、今後の展望を強調してください。",
20
- "資金調達": "調達金額、投資家名、資金の使途、成長戦略を強調してください。",
21
- "調査レポート": "調査結果のトピックス、意外なデータ、専門家の見解を強調してください。",
22
- "その他": "事実関係を整理し、社会的な意義を強調してください。"
23
- }
24
-
25
- hint = category_hints.get(category, "")
26
-
27
  prompt = f"""
28
- あなたはプロフェッショナルな広報・PRコンサルタントです。
29
- 以下の情報を元に、誠実で信頼感のあるプレスリリースを作成してください。
30
 
31
  【ニュースの種類】: {category}
32
  【タイトル(案)】: {title}
33
  【必須要素】: {key_elements}
34
- 【背景・想い】: {background}
35
  【発信元情報】: {company_info}
36
 
37
- 【絶対守るべき執筆ルール】:
38
- 1. 文章の語尾はすべて「です・ます」調(敬体)で統一してください。「である」「だ」は厳禁です。
39
- 2. 読者に寄り添う、丁寧かつ品格のあるビジネス日本語を使用してください。
40
- 3. {hint}
41
- 4. 構成:タイトル、リード文、詳細、背景、会社概要。
42
 
43
- 出力は日本語のみです。
44
  """
45
 
46
  try:
47
  response = ""
48
- # stream=True で逐次生成
49
  for message in client.chat_completion(
50
  messages=[{"role": "user", "content": prompt}],
51
  max_tokens=2500,
@@ -57,23 +44,27 @@ def generate_press_release(category, title, key_elements, background, company_in
57
  response += token
58
  yield response
59
  except Exception as e:
60
- yield f"⚠️ API実行中にエラーが発生しました: {str(e)}"
61
 
62
- # UIの構築
63
  with gr.Blocks() as demo:
64
- gr.Markdown("# 🖋️ プレスリリース自動生成ツール")
65
- gr.Markdown("必要事項を入力し、「生成」ボタンを押してください。")
66
 
67
  with gr.Row():
68
  with gr.Column():
69
  category = gr.Dropdown(
70
- choices=["新製品・サービス", "イベント・展示会", "業務提携・契約", "資金調達", "調査レポート", "その他"],
71
- label="カテゴリ", value="新製品・サービス"
 
 
 
 
 
 
 
72
  )
73
- title = gr.Textbox(label="タイトル(仮)", placeholder="例:新サービス提供開始のお知らせ")
74
- elements = gr.Textbox(label="内容・必須要素", lines=5, placeholder="いつ、どこで、何を...")
75
- context = gr.Textbox(label="背景・想い", lines=3, placeholder="開発のきっかけなど")
76
- company = gr.Textbox(label="会社情報・連絡先", placeholder="社名、メールアドレスなど")
77
  submit_btn = gr.Button("プレスリリースを生成", variant="primary")
78
 
79
  with gr.Column():
@@ -85,10 +76,5 @@ with gr.Blocks() as demo:
85
  outputs=output
86
  )
87
 
88
- # サーバーを起動し、プロセスを維持する
89
  if __name__ == "__main__":
90
- demo.launch(
91
- server_name="0.0.0.0",
92
- server_port=7860,
93
- show_error=True
94
- )
 
2
  from huggingface_hub import InferenceClient
3
  import os
4
 
 
5
  TOKEN = os.getenv("HF_TOKEN")
6
+ # 日本語の理解力が高い Llama-3-70B を継続使用
 
7
  client = InferenceClient("meta-llama/Meta-Llama-3-70B-Instruct", token=TOKEN)
8
 
9
  def generate_press_release(category, title, key_elements, background, company_info):
10
  if not TOKEN:
11
+ yield "❌ エラー: HF_TOKEN が設定されていません。"
12
  return
13
 
14
+ # AIへの指示(プロンプト)をさらに厳格化
 
 
 
 
 
 
 
 
 
 
15
  prompt = f"""
16
+ あなたは日本の大手企業やスタートアップを支援する、超一流の広報コンサルタントです。
17
+ 以下の「乱れた入力情報」を読み解き、その意図を汲み取った上で、一切の外国語を排除した【完璧な日本語】のプレスリリースを作成してください。
18
 
19
  【ニュースの種類】: {category}
20
  【タイトル(案)】: {title}
21
  【必須要素】: {key_elements}
22
+ 【背景・想い(※ノイズ混じり)】: {background}
23
  【発信元情報】: {company_info}
24
 
25
+ 【ミッション】:
26
+ - 「Background」に含まれる「iterations had mistakes」「ERRORを減らしたい」といった英語や記号の混じった表現を正しく解釈し、『料理初心者が直面する失敗やハードルをAIで取り除き、料理の楽しさを伝えたい』という日本語の文脈に変換してください。
27
+ - 文末はすべて「~です」「~ます」で統一してください。「~である」は禁止です。
28
+ - 構成は「タイトル」「リード文」「背景(開発の想い)」「詳細」「会社概要」としてください。
29
+ - 読み手がワクワクするような、ポジティブで信頼感のあるトーンにしてください。
30
 
31
+ 出力は【日本語】のみで行ってください。
32
  """
33
 
34
  try:
35
  response = ""
 
36
  for message in client.chat_completion(
37
  messages=[{"role": "user", "content": prompt}],
38
  max_tokens=2500,
 
44
  response += token
45
  yield response
46
  except Exception as e:
47
+ yield f"⚠️ 生成中にエラーが発生しました。時間を置いて再度お試しください: {str(e)}"
48
 
49
+ # UI
50
  with gr.Blocks() as demo:
51
+ gr.Markdown("# 🍳 料理・フードテック専用 プレスリリース生成AI")
52
+ gr.Markdown("入力に英語やメモ書きが混ざっていても、AIがプロ仕様の日本語に整えます。")
53
 
54
  with gr.Row():
55
  with gr.Column():
56
  category = gr.Dropdown(
57
+ choices=["新サービス発表", "イベント開催", "業務提携", "資金調達", "その他"],
58
+ label="カテゴリ", value="新サービス発表"
59
+ )
60
+ title = gr.Textbox(label="プロジェクト名・タイトル(仮)", placeholder="例:AI料理アシスタント『TastyAI』")
61
+ elements = gr.Textbox(label="具体的な機能や特徴", lines=5, placeholder="例:AIが失敗の予兆を検知してアドバイスする機能など")
62
+ context = gr.Textbox(
63
+ label="開発の背景・想い(メモ書きでOK)",
64
+ lines=5,
65
+ placeholder="例:料理を始めた壁をaiで取り払いたい。iterations had mistakes...のようなメモでも大丈夫です"
66
  )
67
+ company = gr.Textbox(label="会社情報", placeholder="社名、代表者名、連絡先など")
 
 
 
68
  submit_btn = gr.Button("プレスリリースを生成", variant="primary")
69
 
70
  with gr.Column():
 
76
  outputs=output
77
  )
78
 
 
79
  if __name__ == "__main__":
80
+ demo.launch(server_name="0.0.0.0", server_port=7860)