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()