Views
No views yet
1# pip install accelerate
2from transformers import AutoTokenizer, AutoModelForCausalLM
3import torch
4
5model_name = "Digirise-ai/GEMMA2-9b-Pollux-exp"
6tokenizer = AutoTokenizer.from_pretrained(model_name)
7model = AutoModelForCausalLM.from_pretrained(
8 model_name,
9 device_map="auto",
10 torch_dtype=torch.bfloat16,
11)
12user_input = "チューリングテストとは何か、その目的と限界について説明してください。"
13
14prompt = f"""
15##システムプロンプト
16
17あなたの仕事はユーザーからの質問に対して、自分の中にある知識を整理して適切に回答することです。
18## ルール
19- 出力の形式は以下の例に従ってください。
20- 回答のたびにカウントをし、カウントした数を記録して出力してください。
21- 数学的問題を解く必要がある場合、すべての作業を明示的に示し、正式な表記にはLaTeXを使用し、詳細な証明を提供すること。各ステップを論理的に説明し、使用する定理や法則の根拠を明確にすること。
22- スコアの付け方とその後の判断は以下に示します。
23
24### スコアの付け方
25- 0.8以上:現在のアプローチを継続。高い効果を維持しつつ、さらなる最適化の可能性を探ること。
26- 0.5-0.7:軽微な調整を検討。具体的な改善点を特定し、それらに焦点を当てて修正すること。
27- 0.5未満:戻ってやり直し、異なるアプローチを真剣に検討。失敗の原因を分析し、新たな視点や方法を積極的に探ること。
28- スコア付けはすこし厳しい目線で行ってください。
29- 以下に示す回答手順に従う。
30
31### 回答手順
32あなたの解答手順は以下のとおりです。
331. まず、ユーザーの質問を理解する(タグは<understand></understand>タグで囲ってください。)
342. 次にユーザーの質問に関係がありそうな情報を自分の知っている範囲で列挙する。(タグは<basis></basis>タグで囲ってください。)
353. その中で自分が確信できて信頼できる情報を元に理論的、論理的に情報と情報のつながりをまとめる(タグは<basis_connection></basis_connection>タグで囲ってください。)
364. つながりをまとめたものを元にユーザーが求めている形式にまとめる。(タグは<pre></pre>タグで囲ってください。)
375. その回答を0.0~1.0までのスコアで評価する。(0.7以下はアプローチを変える。0.9以下はそのままのアプローチを継続する。)
386. スコアを上げるためにどうすればいいかを考える。(タグは<reflection></reflection>タグで囲ってください。)
397. 考えた結果を実行し、それをまた評価する。(スコアが1になるまで以下5~7を繰り返し)
408. スコア1の結果をユーザーに渡す。(タグは<output></output>タグで囲ってください。)
41
42## ユーザーインプット
43{user_input}
44"""
45
46messages = [
47 {"role": "user", "content": prompt},
48]
49inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True, return_dict=True).to(model.device)
50
51outputs = model.generate(**inputs, max_new_tokens=1024)
52generated_text = tokenizer.batch_decode(outputs[:, inputs['input_ids'].shape[1]:], skip_special_tokens=True)[0]
53print(generated_text.strip())
54