Views
No views yet
1DEFAULT_PROMPT = """
2文脈情報は以下です。
3---
4{context_str}
5---
6事前知識ではなく、文脈情報を参考に質問に答えてください。:{query_str}
7"""1REFINE_PROMPT = """
2質問は以下です。:{query_str}
3すでに答えの候補があります。:{existing_answer}
4必要な場合のみ、以下の文脈情報を使ってこの答えを改良することができます。
5---
6{context_msg}
7---
8この文脈情報により、元の答えを改良して質問に答えてください。
9文脈情報が有用でない場合は元の答えをそのまま返してください。
10"""1import torch
2from transformers import T5Tokenizer, AutoModelForCausalLM
3
4tokenizer = T5Tokenizer.from_pretrained("rinna/japanese-gpt-1b")
5model = AutoModelForCausalLM.from_pretrained("oshizo/qa-refine-japanese-gpt-1b").to("cuda")
6
7
8prompt = DEFAULT_PROMPT.format(
9 context_str="山路を登りながら、こう考えた。智に働けば角が立つ。情に棹させば流される。意地を通せば窮屈だ。とかくに人の世は住みにくい。住みにくさが高じると、安い所へ引き越したくなる。どこへ越しても住みにくいと悟った時、詩が生れて、画が出来る。",
10 query_str="意地を通すとどうなってしまう?"
11 )
12
13token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
14n = len(token_ids[0])
15
16with torch.no_grad():
17 output_ids = model.generate(
18 token_ids.to(model.device),
19 max_length=n+100,
20 min_length=n+2,
21 do_sample=False,
22 pad_token_id=tokenizer.pad_token_id,
23 bos_token_id=tokenizer.bos_token_id,
24 eos_token_id=tokenizer.eos_token_id,
25 )
26output = tokenizer.decode(output_ids.tolist()[0][n:])
27output.replace("</s>", "")
28
29# -> 窮屈
30