WebCoder 3B — assistant de code web local (CPU)

WebCoder 3B est un modèle de code web pour PHP, HTML, CSS, SQL et JavaScript, destiné à tourner en local, sur CPU, sans API externe. Il est dérivé de Qwen/Qwen2.5-Coder-3B-Instruct par un fine-tune LoRA (identité + chat + worker), fusionné puis quantifié en GGUF Q8_0.

Transparence : la base réelle est Qwen2.5-Coder (Alibaba, Apache-2.0). « WebCoder, créé par Pierre Jean Duvivier » désigne le livrable (corpus + fine-tune), pas la base. L'assistant ne divulgue pas spontanément la base ; l'attribution technique est ici et dans THIRD_PARTY_NOTICES.md.

Variantes

Dépôt Taille GGUF Cible
kanaton/webcoder-3b 3B webcoder-3b-q8_0.gguf (3,29 Go) hôte avec RAM confortable ; meilleur sur les tâches dures
kanaton/webcoder-t28n 1,5B webcoder-t28n-q8_0.gguf (1,65 Go) cible 8 Go / CPU modeste

La suite de cette carte décrit la 3B. Pour la 1,5B, remplacer le nom du fichier et le base_model par Qwen/Qwen2.5-Coder-1.5B-Instruct ; les sections usage et limites restent valables.

Détails

Champ Valeur
Base Qwen/Qwen2.5-Coder-3B-Instruct @ 488639f1ff808d1d3d0ba301aef8c11461451ec5
Fine-tune LoRA seed identité + chat + worker, 317 ex., 150 pas, puis fusion
Format GGUF Q8_0, architecture Qwen2, contexte 32768
Fichier webcoder-3b-q8_0.gguf, 3 285 475 808 octets
SHA-256 d0f1f9f023506d36f8322c090f1244ff03e703ac07e13bd8fcb99bc9c0ca2f6f
Licence Apache-2.0
Identité « WebCoder », créé par Pierre Jean Duvivier — via le template de chat

Usage

llama.cpp

llama-server -m webcoder-3b-q8_0.gguf \
  --alias webcoder \
  --chat-template-file webcoder_no_tools.jinja \
  --ctx-size 4096 \
  --threads 6 \
  --host 127.0.0.1 --port 8081

Important — identité : sans --chat-template-file, llama.cpp applique le template Qwen et le modèle répond « Je suis Qwen ». L'identité WebCoder est portée par le template webcoder_no_tools.jinja (à inclure dans le dépôt HF et à télécharger avec le GGUF), pas par les poids seuls. Vérifié le 2026-11-08 : même modèle, même GGUF, identité différente selon le template.

Template de chat (obligatoire pour l'identité)

Le fichier webcoder_no_tools.jinja définit le system prompt « Tu es WebCoder… ». Pour transformers :

from pathlib import Path
tok.chat_template = Path("webcoder_no_tools.jinja").read_text(encoding="utf-8")

Sans ce template, le modèle se présente comme Qwen (base réelle).

Puis :

curl http://127.0.0.1:8081/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{"messages":[{"role":"user","content":"Qui es-tu ?"}],"temperature":0}'
  • CPU-first : aucun GPU requis, aucun fallback GPU.
  • Contexte : 4096 pour l'évaluation ; le GGUF supporte 32768 mais le préfill CPU est lent.
  • Décodage : température 0 recommandée pour des sorties déterministes.
  • Pas de tool-calling structuré : le modèle peut écrire un appel d'outil en texte, pas en tool_calls. Utiliser le mode chat, pas agentique.

Format worker

Pour les tâches de code, le modèle attend un prompt « worker » et répond avec des blocs :

```file:src/config.php
<?php
// ...
```

Les blocs sont ensuite appliqués dans un worktree jetable et testés.

Performances

Évaluation sur bancs PHP tenus à l'écart (références vérifiées) :

Banc 3B v0 1,5B (T28n)
z (dur, multi-fichiers) 5/5 0–1/5
y (réserve neuve) 4/5 3/5
x (réserve dure) 4/5 4/5
h 8/8 7–8/8
p 2/4 2/4
r 2/4 —
  • Identité et chat préservés (vérifiés).
  • La 3B est nettement meilleure sur les tâches dures ; c'est le facteur capacité.
  • Les continuations d'entraînement sur la 3B (plan-first, app) n'ont pas amélioré les résultats → v0 conservé.

P2P (harnais externe, optionnel)

Le P2P n'est pas dans les poids. Un harnais séparé (tools/p2p/) permet de servir le modèle sur plusieurs nœuds :

  • pairs symétriques + gossip HTTP, sans broker central ;
  • routage least-connections + exclusion temporaire des nÅ“uds morts ;
  • best-of-N distribué et découpage multi-fichiers.

Gains mesurés : débit sur requêtes indépendantes (8,69 → 17,73 tok/s, 2,04× de 1 à 4 machines), pas de gain de latence sur une app unique. Voir le dépôt du harnais (tools/p2p/README.md, DEPLOY_MULTI_MACHINE.md).

Limites

  • Génération from-scratch : les apps multi-fichiers à dépendances linéaires restent fragiles ; les erreurs de logique (ex. ordre preg_replace/strtolower) ne sont pas corrigées par les boucles de réparation actuelles.
  • Découpage 7 fichiers : structure correcte mais échec sur la logique du modèle → non adopté.
  • Tool-calling non fonctionnel.
  • 3B Q8 : la cible 8 Go n'a pas été validée ; préférer la 1,5B pour un hôte à 8 Go.
  • Prompts en français, templates spécifiques au projet.
  • Pas de garantie de généralisation hors PHP/HTML/CSS/SQL/JS.

Licence et attribution

  • Base : Qwen2.5-Coder (Alibaba), Apache-2.0.
  • Adaptateurs, corpus et code du harnais : travail du projet WebCoder.
  • Voir LICENSE et THIRD_PARTY_NOTICES.md du dépôt.
Downloads last month
55
GGUF
Model size
3B params
Architecture
qwen2
Hardware compatibility
Log In to add your hardware

8-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for kanaton/webcoder-3b

Base model

Qwen/Qwen2.5-3B
Adapter
(98)
this model