Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -13,8 +13,7 @@ def generate_text(
|
|
13 |
temperature=0.7,
|
14 |
top_k=50,
|
15 |
top_p=0.95,
|
16 |
-
repetition_penalty=1.0
|
17 |
-
num_return_sequences=1
|
18 |
):
|
19 |
"""ユーザー入力に基づいてテキストを生成し、元のテキストに追加する関数"""
|
20 |
try:
|
@@ -34,12 +33,12 @@ def generate_text(
|
|
34 |
top_k=top_k,
|
35 |
top_p=top_p,
|
36 |
repetition_penalty=repetition_penalty,
|
37 |
-
num_return_sequences=
|
38 |
pad_token_id=generator.tokenizer.eos_token_id,
|
39 |
truncation=True # 明示的に切り捨てを有効にする
|
40 |
)
|
41 |
|
42 |
-
#
|
43 |
generated_text = result[0]['generated_text']
|
44 |
new_text = generated_text[len(input_text):]
|
45 |
|
@@ -56,45 +55,25 @@ with gr.Blocks() as demo:
|
|
56 |
# 単一のテキストボックス
|
57 |
input_text = gr.Textbox(label="テキストを入力してください", placeholder="ここにテキストを入力...", lines=10)
|
58 |
|
59 |
-
# パラメータの設定UI
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
top_p_slider = gr.Slider(minimum=0.0, maximum=1.0, value=0.95, step=0.05, label="top_p")
|
66 |
-
with gr.Row():
|
67 |
-
repetition_penalty_slider = gr.Slider(minimum=1.0, maximum=2.0, value=1.0, step=0.1, label="繰り返しペナルティ")
|
68 |
-
num_return_sequences_slider = gr.Slider(minimum=1, maximum=5, value=1, step=1, label="生成する系列数")
|
69 |
|
70 |
-
#
|
71 |
-
|
72 |
-
|
73 |
-
clear_btn = gr.Button("クリア")
|
74 |
|
75 |
# イベントの設定
|
76 |
generate_btn.click(
|
77 |
fn=generate_text,
|
78 |
-
inputs=[input_text, max_length_slider, temperature_slider, top_k_slider, top_p_slider, repetition_penalty_slider
|
79 |
outputs=input_text
|
80 |
)
|
81 |
|
82 |
clear_btn.click(lambda: "", None, input_text)
|
83 |
-
|
84 |
-
# 使い方の説明
|
85 |
-
gr.Markdown("""
|
86 |
-
## 使い方
|
87 |
-
1. テキストボックスに続きを生成したい文章を入力します
|
88 |
-
2. 生成パラメータ(追加する単語数、創造性、top_k、top_p、繰り返しペナルティ、生成する系列数)を調整します
|
89 |
-
3. 「続きを生成」ボタンをクリックすると、入力したテキストの続きが生成され、元のテキストに追加されます
|
90 |
-
4. 「クリア」ボタンを押すと、テキストボックスの内容がクリアされます
|
91 |
-
5. 満足のいく結果が得られるまで、繰り返し「続きを生成」ボタンを押して文章を発展させることができます
|
92 |
-
|
93 |
-
## ヒント
|
94 |
-
- 短い文章から始めて徐々に発展させると良い結果が得られます
|
95 |
-
- 創造性(温度)を高くすると予測不可能な生成結果に、低くすると安定した結果になります
|
96 |
-
- top_k や top_p、繰り返しペナルティなども状況に応じて調整してみてください
|
97 |
-
""")
|
98 |
|
99 |
# アプリの起動
|
100 |
demo.launch()
|
|
|
13 |
temperature=0.7,
|
14 |
top_k=50,
|
15 |
top_p=0.95,
|
16 |
+
repetition_penalty=1.0
|
|
|
17 |
):
|
18 |
"""ユーザー入力に基づいてテキストを生成し、元のテキストに追加する関数"""
|
19 |
try:
|
|
|
33 |
top_k=top_k,
|
34 |
top_p=top_p,
|
35 |
repetition_penalty=repetition_penalty,
|
36 |
+
num_return_sequences=1, # 常に1つの系列だけを生成
|
37 |
pad_token_id=generator.tokenizer.eos_token_id,
|
38 |
truncation=True # 明示的に切り捨てを有効にする
|
39 |
)
|
40 |
|
41 |
+
# 生成された系列から元のテキストより後の部分のみを抽出
|
42 |
generated_text = result[0]['generated_text']
|
43 |
new_text = generated_text[len(input_text):]
|
44 |
|
|
|
55 |
# 単一のテキストボックス
|
56 |
input_text = gr.Textbox(label="テキストを入力してください", placeholder="ここにテキストを入力...", lines=10)
|
57 |
|
58 |
+
# パラメータの設定UI - すべて縦に一列で配置
|
59 |
+
max_length_slider = gr.Slider(minimum=10, maximum=300, value=100, step=10, label="追加する単語数")
|
60 |
+
temperature_slider = gr.Slider(minimum=0.1, maximum=1.5, value=0.7, step=0.1, label="創造性(温度)")
|
61 |
+
top_k_slider = gr.Slider(minimum=0, maximum=100, value=50, step=1, label="top_k")
|
62 |
+
top_p_slider = gr.Slider(minimum=0.0, maximum=1.0, value=0.95, step=0.05, label="top_p")
|
63 |
+
repetition_penalty_slider = gr.Slider(minimum=1.0, maximum=2.0, value=1.0, step=0.1, label="繰り返しペナルティ")
|
|
|
|
|
|
|
|
|
64 |
|
65 |
+
# ボタンも縦に配置
|
66 |
+
generate_btn = gr.Button("続きを生成", variant="primary")
|
67 |
+
clear_btn = gr.Button("クリア")
|
|
|
68 |
|
69 |
# イベントの設定
|
70 |
generate_btn.click(
|
71 |
fn=generate_text,
|
72 |
+
inputs=[input_text, max_length_slider, temperature_slider, top_k_slider, top_p_slider, repetition_penalty_slider],
|
73 |
outputs=input_text
|
74 |
)
|
75 |
|
76 |
clear_btn.click(lambda: "", None, input_text)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
|
78 |
# アプリの起動
|
79 |
demo.launch()
|