Spaces:
Sleeping
Sleeping
| from datasets import load_dataset | |
| from transformers import pipeline, AutoTokenizer | |
| import torch | |
| import gradio as gr | |
| # PersonaHubデータセットの読み込み('math'設定を指定) | |
| dataset = load_dataset("proj-persona/PersonaHub", "persona") | |
| # 日本語モデルを指定 | |
| model_name = "rinna/japanese-gpt2-medium" | |
| # トークナイザーとパイプラインの設定 | |
| tokenizer = AutoTokenizer.from_pretrained(model_name, legacy=False) | |
| device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') | |
| generator = pipeline('text-generation', model=model_name, tokenizer=tokenizer, device=0 if torch.cuda.is_available() else -1) | |
| def generate_text(prompt, max_length, persona_id): | |
| # 指定されたペルソナを取得 | |
| persona = dataset['train'][persona_id] | |
| # ペルソナのプロンプトを作成 | |
| persona_prompt = f"あなたは{persona['profession']}です。次の問題を作成してください:" | |
| # ペルソナのプロンプトとユーザー入力を結合 | |
| full_prompt = f"{persona_prompt} {prompt}" | |
| # テキストを生成 | |
| result = generator(full_prompt, max_length=max_length, num_return_sequences=1) | |
| return result[0]['generated_text'] | |
| iface = gr.Interface( | |
| fn=generate_text, | |
| inputs=[ | |
| gr.Textbox(label="プロンプト", placeholder="ここに日本語のプロンプトを入力してください"), | |
| gr.Slider(minimum=10, maximum=200, value=50, step=1, label="最大長"), | |
| gr.Number(label="ペルソナID", value=0) | |
| ], | |
| outputs=gr.Textbox(label="生成されたテキスト") | |
| ) | |
| iface.launch() |