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