Views
No views yet
[---] の“後ろ”に続く言葉を予測変換として生成します。google/gemma-3-270m-it実行環境・スレッド数・量子化設定で変動します。
model.safetensors など(Transformers形式)gguf/ 配下)gguf/gemma3-270m-pred-dpo-f16.ggufgguf/gemma3-270m-pred-dpo-q4_k_m.gguf1キーボードの予測変換として[---]に続く言葉を予測変換してください。[---]より前はこれまでのユーザー入力です。
2ユーザー入力と予測変換の間には境界 [---]を入れてください。
3
4ーーーー以下が予測変換対象ーーーーーーーー以下が予測変換対象ーーーー の後ろに、ユーザー入力 + 境界 [---] + 未確定の先頭(途中まで入力した語)を続けてください。[---] を含む1行を想定(運用では 1行目だけ採用が簡単で安定します)。1キーボードの予測変換として[---]に続く言葉を予測変換してください。[---]より前はこれまでのユーザー入力です。
2ユーザー入力と予測変換の間には境界 [---]を入れてください。
3
4ーーーー以下が予測変換対象ーーーー
5これに関してはどんな[---]もてこれに関してはどんな[---]問題/でしょ/う/か/?"[---]" より後ろを / で split すると、候補列として扱えます。[---] 以降だけ取り出してUIに反映するのが簡単です。1import torch
2from transformers import AutoTokenizer, AutoModelForCausalLM
3
4model_id = "katsukiono/gemma3-270m-pred-dpo"
5
6tok = AutoTokenizer.from_pretrained(model_id, use_fast=True)
7if tok.pad_token is None:
8 tok.pad_token = tok.eos_token
9
10model = AutoModelForCausalLM.from_pretrained(
11 model_id,
12 torch_dtype="auto",
13 device_map="auto",
14).eval()
15
16prompt = """キーボードの予測変換として[---]に続く言葉を予測変換してください。[---]より前はこれまでのユーザー入力です。
17ユーザー入力と予測変換の間には境界 [---]を入れてください。
18
19ーーーー以下が予測変換対象ーーーー
20これに関してはどんな[---]もて
21"""
22
23chat = [{"role": "user", "content": prompt}]
24text = tok.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
25inputs = tok(text, return_tensors="pt").to(model.device)
26
27with torch.inference_mode():
28 out = model.generate(
29 **inputs,
30 do_sample=False,
31 max_new_tokens=96,
32 )
33
34gen = tok.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)
35print(gen.splitlines()[0].strip())1./llama-cli \
2 -m gguf/gemma3-270m-pred-dpo-q4_k_m.gguf \
3 -p "(上の固定プロンプト + 入力)" \
4 -n 96 \
5 --temp 0"[---]" が欠落する出力が稀にあり得るため、プロダクションでは [---] の有無チェックを推奨します。split("[---]", 1) → 後半を split("/")(空要素は除外)で候補化google/gemma-3-270m-it をベースにしています。