kubectl-mcp-server MCP Function-Calling — Gemma 4 E4B(full SFT)
以 google/gemma-4-E4B-it 為基底,在 Simon-Liu/kubectl-mcp-server-tool-call-reasoning-1k 上做全參數監督式微調(full-parameter SFT),訓練成會先推理、再正確呼叫 kubectl-mcp-server MCP 工具(function calling)的繁體中文模型。
微調前後成效(held-out 測試集,n=75)
未微調基底 vs 微調後,在相同 held-out 樣本上的工具呼叫正確率:
| 指標 | FT 前 | FT 後 | 提升 |
|---|---|---|---|
| 有工具呼叫率 | 86.7% | 100.0% | +13.3% |
| 函式名正確率 | 69.3% | 89.3% | +20.0% |
| 名稱+參數全對率 | 52.0% | 70.7% | +18.7% |
有工具呼叫率=是否吐出
<tool_call>;函式名正確率=function name 正確;名稱+參數全對率=name 與 arguments 皆正確(exact match,最嚴格)。
訓練設定
- 方法:全參數 SFT(非 LoRA)
- 基底:
google/gemma-4-E4B-it - 資料:
Simon-Liu/kubectl-mcp-server-tool-call-reasoning-1k(~1k 筆 kubectl-mcp-server MCP function-calling,繁中推理) - epochs 3、effective batch 8、learning rate 1e-5、optimizer adafactor、max length 4096、bf16
使用方式
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model = AutoModelForCausalLM.from_pretrained("Simon-Liu/gemma-4-e4b-kubectl-mcp-server-mcp-sft-it", torch_dtype=torch.bfloat16, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("Simon-Liu/gemma-4-e4b-kubectl-mcp-server-mcp-sft-it")
messages = [
{"role": "system", "content": "<工具定義,Hermes 風格 JSON>"},
{"role": "user", "content": "我現在 kubectl-mcp-server 登入的帳號是誰?"},
]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=512, do_sample=False)
print(tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
授權
衍生自 Google Gemma,使用前請遵守 Gemma 使用條款。