Views
No views yet
google/gemma-2-2b をベースに憲法教育データでファインチューニングされた専門モデルです。1from transformers import AutoModelForCausalLM, AutoTokenizer
2from peft import PeftModel
3
4# ベースモデルとトークナイザーを読み込み
5base_model = AutoModelForCausalLM.from_pretrained(
6 "google/gemma-2-2b",
7 torch_dtype="auto",
8 device_map="auto",
9 trust_remote_code=True
10)
11tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-2b")
12
13# LoRAアダプターを適用
14model = PeftModel.from_pretrained(base_model, "eyepyon/constitution-gemma2-test")
15
16# 憲法問題の解答
17def solve_constitution_problem(context, question):
18 input_text = f"### 法律分野: 憲法\n### コンテキスト:\n{context}\n\n### 問題:\n{question}\n\n### 解答:\n"
19 inputs = tokenizer(input_text, return_tensors="pt")
20
21 if torch.cuda.is_available():
22 inputs = {k: v.to(model.device) for k, v in inputs.items()}
23
24 with torch.no_grad():
25 outputs = model.generate(
26 **inputs,
27 max_length=1024,
28 do_sample=True,
29 temperature=0.3, # 法律問題では低めの温度
30 top_p=0.8,
31 pad_token_id=tokenizer.eos_token_id
32 )
33
34 response = tokenizer.decode(outputs[0], skip_special_tokens=True)
35 if "### 解答:" in response:
36 response = response.split("### 解答:")[-1].strip()
37 return response
38
39# 使用例
40context = "憲法に関する法律問題について、見解の関係性を分析し、批判の有無を判断してください。"
41question = "人権の享有主体に関する次の記述について、bの見解がaの見解の批判となっているか分析してください..."
42answer = solve_constitution_problem(context, question)
43print(answer)### 法律分野: 憲法
### コンテキスト:
[法的背景や問題設定]
### 問題:
[具体的な憲法問題]
### 解答:
[期待される解答や分析]