OPNsense Agent — Qwen2.5-3B LoRA
Fine-tune de Qwen/Qwen2.5-3B-Instruct entraîné pour agir comme agent-outil Firewall OPNsense dans une architecture multi-agents IA pour la cybersécurité.
L'agent reçoit des paquets CAP v1 (Coordinator-Agent Packet) depuis un coordinateur LLM et génère des tool_calls précis.
Architecture
Coordinateur (LLM)
│ CAP v1 JSON
▼
Agent Firewall OPNsense (ce modèle)
│ tool_call JSON
▼
API équipement
Fonctions supportées (102 au total)
| Domaine | Fonctions |
|---|---|
| Règles firewall | add_filter_rule, del_filter_rule, set_filter_rule, toggle_filter_rule, move_filter_rule, get_filter_rule |
| Alias | add_alias, del_alias, set_alias, get_alias, add_to_alias, delete_from_alias, flush_alias, list_alias_content, find_alias_references, import_alias |
| NAT | add_nat_outbound, del_nat_outbound, add_nat_port_forward, add_nat_one_to_one, del_nat_one_to_one |
| Diagnostics | get_firewall_log, get_firewall_states, kill_firewall_states, flush_firewall_states, get_firewall_statistics, get_rule_statistics, get_system_status, ping_host, traceroute_host, port_probe |
| Configuration | apply_firewall_changes, revert_firewall_changes, cancel_firewall_rollback, create_firewall_savepoint, list_restore_points, revert_to_restore_point, create_restore_point, backup_configuration, get_interface_list |
| DNS / DHCP | add_dns_override, list_dns_overrides, del_dns_override, manage_dns_blocklist, search_dns_queries, get_dhcp_leases, add_static_mapping |
| IDS (Suricata) | get_ids_status, query_ids_alerts, toggle_ids_rule, list_ids_rulesets, toggle_ids_ruleset, update_ids_rules, start_ids, stop_ids, restart_ids |
| Traffic shaping | get_traffic_statistics, list_traffic_pipes, add_traffic_pipe, del_traffic_pipe, list_traffic_queues, add_traffic_queue, del_traffic_queue, list_traffic_rules, add_traffic_rule, del_traffic_rule, apply_traffic_changes |
| ACME / TLS | get_acme_status, list_acme_certificates, sign_acme_certificate, update_acme_certificate, revoke_acme_certificate, list_acme_accounts |
| IPsec | get_ipsec_status, list_ipsec_connections, toggle_ipsec_connection, list_ipsec_sessions, connect_ipsec_session, disconnect_ipsec_session |
| OpenVPN | list_openvpn_instances, toggle_openvpn_instance, list_openvpn_sessions, kill_openvpn_session |
| Monit / Cron | get_monit_status, restart_monit_service, schedule_cron_job, toggle_cron_job, get_cron_jobs |
| Divers | block_ip, unblock_ip, list_categories, add_category, del_category, list_geoip_countries, get_geoip_database, update_bogons, check_updates, get_upgrade_status, upgrade_firmware |
Performance
| Benchmark | Score |
|---|---|
| Vérification fonctionnelle (format CAP v1) | 102/102 (100%) |
Utilisation
Avec vLLM (multi-LoRA)
from vllm import LLM, SamplingParams
from vllm.lora.request import LoRARequest
llm = LLM(model="Qwen/Qwen2.5-3B-Instruct", enable_lora=True)
params = SamplingParams(temperature=0.1, max_tokens=256)
cap_packet = '{"directive": "block_ip", "entities": {"IP_ADDRESS": ["203.0.113.42"], "INTERFACE": ["wan"]}, "args": {}, "context": {"source": "coordinator", "confidence": 0.97}}'
outputs = llm.generate(
cap_packet,
params,
lora_request=LoRARequest("opnsense-qwen25-lora", 1, "path/to/adapter")
)
print(outputs[0].outputs[0].text)
System prompt :
Tu es un agent OPNsense. Tu reçois des directives structurées du coordinateur sous forme de paquets JSON (format CAP v1 : directive + entities + args) et tu génères des appels d'API précis sous forme de tool_calls. Tu ne réponds jamais en langage naturel — uniquement des tool_calls.
Avec Ollama (GGUF)
ollama run hf.co/patlegu/opnsense-qwen25-lora
Détails d'entraînement
| Paramètre | Valeur |
|---|---|
| Base model | Qwen/Qwen2.5-3B-Instruct |
| LoRA rank / alpha | 64 / 128 |
| Dataset | 13701 exemples (format CAP v1) |
| Epochs | 3 |
| Learning rate | 2e-4 (cosine) |
| Final loss | 0.2532 |
| Date | 2026-03-15 |
| Framework | Unsloth + HuggingFace TRL |
Contexte
Modèle produit par cyber-agent-engine — système multi-agents IA pour l'automatisation réseau et la sécurité.
Le coordinateur décompose les requêtes en langage naturel et délègue l'exécution à des agents-outils spécialisés (OPNsense, WireGuard, CrowdSec), chacun piloté par un LoRA fine-tuné sur GPU local (RTX 4070 Ti).
Limitations
- Conçu pour être appelé par un coordinateur, pas directement par un humain
- Requiert le format CAP v1 — les requêtes en langage naturel libre donnent des résultats dégradés
Licence
Apache 2.0
- Downloads last month
- -