Views
No views yet
| Arquivo | Tamanho | Uso |
|---|---|---|
adapter_model.safetensors | 161 MB | LoRA adapter, carrega via peft em cima do base |
bagley-v10-Q4_K_M.gguf | 4.6 GB | GGUF quantizado pra Ollama / llama.cpp / LM Studio |
1huggingface-cli download virgiliolrf2/bagley-v10 bagley-v10-Q4_K_M.gguf --local-dir ~/bagley
2cd ~/bagley
3
4cat > Modelfile <<'EOF'
5FROM ./bagley-v10-Q4_K_M.gguf
6
7SYSTEM """You are Bagley. Sarcastic British AI assisting authorized pentests on TryHackMe. Tool-using agent with Hermes JSON tool_calls."""
8
9PARAMETER temperature 0.7
10PARAMETER top_p 0.9
11PARAMETER num_ctx 4096
12PARAMETER stop "<|im_end|>"
13PARAMETER stop "<|im_start|>"
14
15TEMPLATE """{{ if .System }}<|im_start|>system
16{{ .System }}<|im_end|>
17{{ end }}{{ range .Messages }}<|im_start|>{{ .Role }}
18{{ .Content }}<|im_end|>
19{{ end }}<|im_start|>assistant
20"""
21EOF
22
23ollama create bagley -f Modelfile
24ollama run bagley1from peft import PeftModel
2from transformers import AutoModelForCausalLM, AutoTokenizer
3import torch
4
5base = AutoModelForCausalLM.from_pretrained(
6 "fdtn-ai/Foundation-Sec-8B",
7 torch_dtype=torch.bfloat16,
8 device_map="auto",
9)
10model = PeftModel.from_pretrained(base, "virgiliolrf2/bagley-v10")
11tokenizer = AutoTokenizer.from_pretrained("virgiliolrf2/bagley-v10")
12
13prompt = "scan 10.10.10.5"
14inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
15out = model.generate(**inputs, max_new_tokens=256, temperature=0.7)
16print(tokenizer.decode(out[0], skip_special_tokens=True))1# 1. merge adapter no base
2python -c "
3from peft import PeftModel
4from transformers import AutoModelForCausalLM, AutoTokenizer
5import torch
6base = AutoModelForCausalLM.from_pretrained('fdtn-ai/Foundation-Sec-8B', torch_dtype=torch.bfloat16, device_map='auto')
7m = PeftModel.from_pretrained(base, 'virgiliolrf2/bagley-v10')
8merged = m.merge_and_unload()
9merged.save_pretrained('./bagley-v10-merged', safe_serialization=True)
10AutoTokenizer.from_pretrained('virgiliolrf2/bagley-v10').save_pretrained('./bagley-v10-merged')
11"
12
13# 2. converte HF -> GGUF f16
14git clone https://github.com/ggerganov/llama.cpp
15cd llama.cpp && make -j
16python convert_hf_to_gguf.py ../bagley-v10-merged --outfile ../bagley-v10-f16.gguf --outtype f16
17
18# 3. quantiza Q4_K_M (~5 GB)
19./llama-quantize ../bagley-v10-f16.gguf ../bagley-v10-Q4_K_M.gguf Q4_K_M10.10.0.0/16 (TryHackMe).src/bagley/persona.py no repo.[1-3 frases comentário Bagley]
<tool_call>{"name": "shell", "arguments": {"cmd": "nmap -sC -sV 10.10.10.5"}}</tool_call>tool_call é puro técnico, sem persona.| Item | Valor |
|---|---|
| Base | fdtn-ai/Foundation-Sec-8B (Llama-3.1-8B continued-pretrain) |
| Técnica | QLoRA (LoRA + bnb 4-bit nf4) |
| Hardware | 1× H100 (Modal) |
| Tempo | ~1h |
| Dataset | ~5k exemplos curados (writeups CTF, man pages Kali, OSCP cheatsheets, exemplos sintéticos) |
| Epochs | 3 |
| Batch | 4 × grad_accum 4 |
| Max seq | 2048 |
| Learning rate | 2e-4 cosine, warmup 0.03 |
| LoRA r / alpha / dropout | 16 / 32 / 0.05 |
| Target modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
| Compute dtype | bfloat16 |
| Quant | nf4 4-bit |
src/bagley/agent/parser.py no repo recupera.10.10.0.0/16 only por default)."That's not our patch, mate.") qualquer alvo fora do range default. Você é legalmente responsável pelo que executar.@misc{bagley-v10,
author = {Virgilio},
title = {Bagley v10: QLoRA cybersecurity persona adapter for Foundation-Sec-8B},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/virgiliolrf2/bagley-v10}},
}