Corin1998 commited on
Commit
5a3f439
·
verified ·
1 Parent(s): 2395662

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +59 -0
  2. requirements.txt +3 -0
app.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import json
3
+ import gradio as gr
4
+ from openai import OpenAI
5
+
6
+ # ---- APIキー(SecretsにOPENAI_API_KEYをセット)----
7
+ OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
8
+ if not OPENAI_API_KEY:
9
+ raise RuntimeError("OPENAI_API_KEY is not set. Add it in Settings → Variables and secrets.")
10
+
11
+ client = OpenAI(api_key=OPENAI_API_KEY)
12
+ MODEL = "gpt-4o" # 必要に応じて gpt-4o-mini などに変更
13
+
14
+ def summarize(text: str, length: str = "short") -> str:
15
+ system = (
16
+ "あなたは日英梅林月の要約アシスタント。"
17
+ "重要点の抽出、冗長排除、事実の改変の禁止。出力は日本語で。"
18
+ f"長さの目安:{length}"
19
+ )
20
+ resp = client.chat.completions.create(
21
+ model=MODEL,
22
+ messages=[
23
+ {"role": "system", "content": system},
24
+ {"role": "user", "content": text}
25
+ ]
26
+ )
27
+ return resp.choices[0].message.content.strip()
28
+
29
+ def translate(text: str, target_lang: str = "en", formality: str = "neutral") -> str:
30
+ system = "あなたは一流の翻訳家。意味忠実・自然な役・用語統一・固有名詞適切"
31
+ user = f"次の文を{target_lang}に翻訳。文体:{formality}\n\n{text}"
32
+ resp = client.chat.completions.create(
33
+ model=MODEL,
34
+ messages=[
35
+ {"role": "system", "content": system},
36
+ {"role": "user", "content": user}
37
+ ]
38
+ )
39
+ return resp.choices[0].message.content.strip()
40
+
41
+ with gr.Blocks(title="Summarize & Translate") as demo:
42
+ gr.Markdown("# Summarize & Translate")
43
+ with gr.Tab("Summarize"):
44
+ txt = gr.Textbox(lines=8, label="本文")
45
+ length = gr.Dropdown(["short", "medium", "long"], value="short", label="長さ")
46
+ out = gr.Textbox(label="要約結果")
47
+ btn = gr.Button("要約する")
48
+ btn.click(fn=summarize, inputs=[txt, length], outputs=out)
49
+
50
+ with gr.Tab("Translate"):
51
+ txt2 = gr.Textbox(lines=8, label="本文")
52
+ lang = gr.Dropdown(["ja", "en", "zh", "ko", "fr", "de"], value="en", label="言語")
53
+ lform = gr.Dropdown(["neutral", "formal", "casual"], value="neutral", label="文体")
54
+ out2 = gr.Textbox(label="翻訳結果")
55
+ btn2 = gr.Button("翻訳する")
56
+ btn2.click(fn=translate, inputs=[txt2, lang, lform], outputs=out2)
57
+
58
+ if __name__ == "__main__":
59
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ openai>=1.40.0
2
+ gradio>=4.40.0
3
+ python-dotenv>=1.0.1