מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועוד

מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד)

הכול בעברית, מותאם PHP 8.3, ריצה על CPU בלבד, עם הסברים למתחילים וקוד מלא.

חלק א׳ — מודלי התחלה מומלצים (Starter Models) על CPU בלבד

  • LLM שיחה קטן: qwen2.5:3b-instruct-q4 – קטן, זריז, עובד יפה בעברית, מתאים להנחיות וקוד. חלופות: דגמי 1.5–7B בגרסת instruct ו־q4.
  • מודל Embeddings: bge-m3 – אמבדינג כללי מהיר (וקטור בינוני, ריצה טובה על CPU).

לוגיקת עבודה מומלצת: שליפה מהירה (FTS/BM25) → ריראנק באמבדינג ל־50–200 קטעים → LLM קטן שמייצר את הפלט (קוד/דוח/HTML).

התקנות בסיס והורדת מודלים

# התקנת Ollama (Linux/macOS; ב-Windows מומלץ WSL2)
curl -fsSL https://ollama.com/install.sh | sh

# סביבת Python
python -m venv .venv
# Windows:
.venv\Scripts\activate
# Linux/macOS:
source .venv/bin/activate

pip install fastapi uvicorn requests numpy tqdm pypdf python-docx beautifulsoup4 lxml

# משיכת מודלים קטנים
ollama pull qwen2.5:3b-instruct-q4
ollama pull bge-m3

חלק ב׳ — בחירת בסיס נתונים (DB): טבלת יתרונות/חסרונות

DB מתי לבחור יתרונות חסרונות טיפים
SQLite + FTS5 פרויקטים קטנים–בינוניים, מקומי, קובץ יחיד קליל, מהיר, ללא שרת, FTS מעולה קונקראנס מוגבל; לא לקלאסטרים בחירה ראשונה לפרוטוטייפים ומדריכים
MySQL / MariaDB (FULLTEXT) אם יש WP/LAMP והוסטינג סטנדרטי מוכר, הרשאות ומשתמשים, אינטגרציה עם WP FTS פחות גמיש מ־Solr נוח כשכבר יש שרת WP
PostgreSQL (Text Search + GIN) צריך FTS גמיש ושאילתות עשירות אינדקסים חזקים, סכמות מורכבות קצת יותר הגדרות מעולה לכלי dev ותשתיות
MongoDB JSON/חצי־מובנה, פילוחים גמישים קל ל־upsert, text index, אופציות לווקטורים וקטורים דורשים כיוונון; עדיף קדם־סינון טוב לפרופילים/לוגים
Apache Solr אוספים גדולים, חיפוש מהיר מאוד BM25 חזק, סקלביליות, שאילתות עשירות שירות נפרד; מעט “כבד” יותר ל־OSINT אחראי/מעקב שינויים

חלק ג׳ — נבנה מודל שמייצר תוספי/תבניות WordPress לפי קלט

המודל יקבל מפרט (spec), ישלוף דוגמאות/חוקים (RAG), ויחזיר קוד PHP 8.3 מאובטח ומוכן ל־ZIP.

מבנה פרויקט מומלץ

wp-maker/
├─ docs/wp/ # מקורות טקסטואליים חוקיים (Handbook, הערות שלך)
├─ docs/snippets/ # סניפטים קצרים משלך (PHP)
├─ data/ # JSONL ל-instructions
├─ db/ # SQLite FTS5
├─ code/ # ingest/server/scripts
├─ export/ # ZIP ותוצרים
└─ models/ # Modelfile

דוגמאות סניפטים (PHP 8.3)

$name = esc_html($a['name']);
return "

שלום, {$name}!

";
}
add_shortcode('pg_hello', 'pg_hello_shortcode');

declare(strict_types=1);
add_action('admin_menu', function() {
add_options_page('PG Settings','PG Settings','manage_options','pg-settings','pg_settings_page');
});
function pg_settings_page(): void {
if (!current_user_can('manage_options')) return;
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
check_admin_referer('pg_save_settings');
$title = sanitize_text_field($_POST['pg_title'] ?? ");
update_option('pg_title', $title);
echo '

נשמר.

';
}
$title = esc_attr(get_option('pg_title',"));

PG Settings

אינדוקס ל־SQLite (FTS5) עבור RAG

# code/ingest_sqlite.py
import os, re, sqlite3, pathlib
from pypdf import PdfReader
import docx

DB="db/idx.db"; SRC="docs"
os.makedirs("db", exist_ok=True)
con=sqlite3.connect(DB); cur=con.cursor()
cur.execute("CREATE VIRTUAL TABLE IF NOT EXISTS chunks USING fts5(path, chunk_idx, text, tokenize='unicode61');")

def read_txt(p): return open(p,"r",encoding="utf-8",errors="ignore").read()
def read_pdf(p):
r=PdfReader(p); return "\n".join([(pg.extract_text() or "") for pg in r.pages])
def read_docx(p):
d=docx.Document(p); return "\n".join([x.text for x in d.paragraphs])

def chunk(t,size=2000,overlap=150):
t=re.sub(r"\s+"," ", t).strip()
out=[]; i=0; n=len(t)
while i<n:
j=min(i+size,n); out.append(t[i:j])
if j==n: break
i=max(0,j-overlap)
return out

for root,_,files in os.walk(SRC):
for fn in files:
p=os.path.join(root,fn)
low=fn.lower()
if not low.endswith((".pdf",".docx",".txt",".html",".htm",".php")): continue
if low.endswith(".txt") or low.endswith(".php"):
txt=read_txt(p)
elif low.endswith(".pdf"):
txt=read_pdf(p)
elif low.endswith((".html",".htm")):
raw=read_txt(p); txt=re.sub(r"<[^>]+>"," ", raw)
else:
txt=read_docx(p)
if not txt.strip(): continue
for i,ch in enumerate(chunk(txt)):
cur.execute("INSERT INTO chunks(path,chunk_idx,text) VALUES (?,?,?)",(str(pathlib.Path(p)),i,ch))
con.commit(); con.close(); print("✓ FTS5 ingest complete")

Modelfile מותאם והסבר פרמטרים

  • temperature: גיוון/יצירתיות – לקוד עדיף 0.1–0.3.
  • num_ctx: חלון הקשר – 1536–3072 סביר ל־CPU; מעלה דיוק אך צורך RAM.

# models/Modelfile
FROM qwen2.5:3b-instruct-q4
SYSTEM """
את/ה מחולל/ת תוספי/תבניות WordPress בעברית.
כללים:
1) PHP 8.3 בלבד. אבטחה: nonce, esc_*, sanitize_*; הרשאות נכונות.
2) אם דרושים כמה קבצים — פרט/י שמות ותוכן.
3) אל תמציא/י פונקציות WP. אם חסר — כתוב/י מה חסר.
"""
PARAMETER temperature 0.2
PARAMETER num_ctx 2048

יצירת מודל ושירות API

ollama create pablo-guides-wp-maker-1.0 -f models/Modelfile

# code/server.py
from fastapi import FastAPI
from pydantic import BaseModel
import sqlite3, requests, numpy as np

DB="db/idx.db"; CHAT="pablo-guides-wp-maker-1.0"; EMB="bge-m3"
app=FastAPI(title="WP Maker RAG API")

def emb(t: str):
r=requests.post("http://localhost:11434/api/embeddings",json={"model":EMB,"prompt":t},timeout=120)
r.raise_for_status(); return np.array(r.json()["embedding"],dtype=np.float32)
def cos(a,b): return float(np.dot(a,b)/(np.linalg.norm(a)*np.linalg.norm(b)+1e-9))

def retrieve(q: str, k=80):
con=sqlite3.connect(DB); con.row_factory=sqlite3.Row
cur=con.cursor(); cur.execute("SELECT path,chunk_idx,text FROM chunks WHERE text MATCH ? LIMIT ?",(q,k))
rows=[dict(x) for x in cur.fetchall()]; con.close(); return rows

def rerank(q: str, rows, top_k=6):
qe=emb(q); scored=[]
for r in rows:
e=emb(r["text"][:1200]); scored.append((cos(qe,e),r))
scored.sort(reverse=True,key=lambda x:x[0]); return [x[1] for x in scored[:top_k]]

def chat(spec: str, ctx):
joined="\n\n".join([f"[{i+1}] {c['path']} #{c['chunk_idx']}\n{c['text']}" for i,c in enumerate(ctx)])
sys="החזר/י קובץ תוסף WP מלא ב-PHP 8.3 עם אבטחה ו-i18n. בסוף הוסף/י רשימת בדיקות להפעלה."
payload={"model":CHAT,"messages":[
{"role":"system","content":sys},
{"role":"user","content":f"קטעים רלוונטיים:\n{joined}\n\nמפרט תוסף:\n{spec}"}],
"stream":False,"options":{"temperature":0.2,"num_ctx":2048}}
r=requests.post("http://localhost:11434/api/chat",json=payload,timeout=300)
r.raise_for_status(); return r.json()["message"]["content"]

class Req(BaseModel):
spec: str; k:int=80; top_k:int=6

@app.post("/plugin")
def plugin(req: Req):
rows=retrieve("WordPress OR wp OR plugin OR shortcode OR settings OR CPT", req.k)
top=rerank(req.spec, rows, req.top_k)
code=chat(req.spec, top)
return {"ok":True,"code":code,"sources":[{"path":x["path"],"chunk":x["chunk_idx"]} for x in top]}

uvicorn code.server:app –reload –port 8000

שימוש: יצירת תוסף לפי מפרט

curl -X POST http://localhost:8000/plugin \
-H "Content-Type: application/json" \
-d '{"spec":"תוסף שיוצר CPT בשם book עם שדות author,year; Shortcode [pg_books]; עמוד הגדרות לשם התוסף; אבטחה: nonce ו-sanitize; i18n בסיסי"}'

חלק ד׳ — מודל ביקורת אבטחה אחראית לאתרים שלך + הפקה ל־PDF

חשוב: סריקות אבטחה מבצעים רק על נכסים שבבעלותך/ברישיון. כאן אין הוראות התקפיות; הדגש הוא על השפעה עסקית וצעדי תיקון.

קלט: רשימת דומיינים

# data/domains.csv
domain
https://your-site-1.com
https://your-site-2.com

Baseline (לא אגרסיבי) עם OWASP ZAP

docker run –rm -t -v "$PWD:/zap/wrk" owasp/zap2docker-stable zap-baseline.py \
-t https://your-site-1.com -r zap_your-site-1.html

פרסור ממצאים ל־SQLite

# code/ingest_findings.py
import sqlite3, re
from bs4 import BeautifulSoup

DB="db/sec.db"; HTML="zap_your-site-1.html"
con=sqlite3.connect(DB); cur=con.cursor()
cur.execute("CREATE VIRTUAL TABLE IF NOT EXISTS findings USING fts5(domain, text, level);")

soup=BeautifulSoup(open(HTML,"r",encoding="utf-8").read(),"html.parser")
for tr in soup.select("tr"):
t=" ".join(re.sub(r"\s+"," ", tr.get_text(" ", strip=True)).split())
if len(t) < 40: continue
lvl="info"
if "High" in t: lvl="high"
elif "Medium" in t: lvl="medium"
cur.execute("INSERT INTO findings(domain,text,level) VALUES (?,?,?)", ("your-site-1.com", t, lvl))

con.commit(); con.close(); print("✓ findings stored")

דוח טקסטואלי מסביר (לא PDF)

# code/sec_report.py
import sqlite3, requests

DB="db/sec.db"; CHAT="qwen2.5:3b-instruct-q4"

def gather(domain, limit=80):
con=sqlite3.connect(DB); con.row_factory=sqlite3.Row
rows = con.execute("SELECT text, level FROM findings WHERE domain=? LIMIT ?", (domain,limit)).fetchall()
con.close(); return rows

def write_report(domain):
rows=gather(domain)
bullets="\n".join([f"- [{r['level']}] {r['text']}" for r in rows])
sys="הפק דוח אבטחה בעברית ללא הוראות התקפיות. ציין השפעה עסקית וצעדי תיקון מדויקים."
prompt=f"אתר: {domain}\nממצאים:\n{bullets}\n\nבבקשה הפק דוח מסכם."
r=requests.post("http://localhost:11434/api/chat", json={
"model":CHAT,
"messages":[{"role":"system","content":sys},{"role":"user","content":prompt}],
"stream":False,"options":{"temperature":0.1,"num_ctx":2048}
}, timeout=180)
r.raise_for_status()
print(r.json()["message"]["content"])

write_report("your-site-1.com")

הפקה ל־PDF (RTL יפה) — HTML → wkhtmltopdf

# התקנת wkhtmltopdf (התאם להפצה שלך)
sudo apt-get update && sudo apt-get install -y wkhtmltopdf

# code/sec_report_html.py
import sqlite3, requests, os

DB="db/sec.db"; CHAT="qwen2.5:3b-instruct-q4"
os.makedirs("export", exist_ok=True)

def gather(domain, limit=100):
con=sqlite3.connect(DB); con.row_factory=sqlite3.Row
rows = con.execute("SELECT text, level FROM findings WHERE domain=? LIMIT ?", (domain,limit)).fetchall()
con.close(); return rows

def write_html(domain):
rows = gather(domain)
bullets = "\n".join([f"

  • [{r['level']}] {r['text']}

" for r in rows])
sys = "הפק דוח אבטחה בעברית ללא הוראות התקפיות. ציין השפעה עסקית וצעדי תיקון מדויקים."
prompt = f"אתר: {domain}\nממצאים:\n" + "\n".join([f"- [{r['level']}] {r['text']}" for r in rows]) + "\n\nבבקשה הפק דוח מסכם."

r = requests.post("http://localhost:11434/api/chat", json={
"model":CHAT,
"messages":[{"role":"system","content":sys},{"role":"user","content":prompt}],
"stream":False,"options":{"temperature":0.1,"num_ctx":2048}
}, timeout=180)
r.raise_for_status()
report = r.json()["message"]["content"]

html = f"""<!doctype html>

דוח אבטחה: {domain}

תקציר ממצאים

    {bullets}

סיכום והמלצות

{report}

"""
open("export/sec_report.html","w",encoding="utf-8").write(html)
print("✓ export/sec_report.html נוצר")

write_html("your-site-1.com")

# המרה ל-PDF
wkhtmltopdf export/sec_report.html export/sec_report.pdf

חלק ה׳ — מודל שמייצר קוד־בסיס Production לפי מפרט (תבנית Skeleton)

לא שיבוט אתר קיים, אלא יצירה מחדש לפי מפרט (דפים, תפריטים, טפסים, DB, RTL).

Blueprint קצר

# blueprint.txt
שם: MySite
דפים: home, about, contact
DB: SQLite
תכונות: טופס קשר מאובטח, תפריט עליון, footer, תבנית RTL

מחולל Skeleton ב-PHP 8.3

# code/generate_skeleton.py
import os, sys, pathlib, textwrap

name=sys.argv[1] if len(sys.argv)>1 else "mysite"
root=pathlib.Path("export")/name
(root/"public").mkdir(parents=True, exist_ok=True)
(root/"src").mkdir(exist_ok=True)
(root/"templates").mkdir(exist_ok=True)

(root/"public"/".htaccess").write_text("Options -Indexes\n", encoding="utf-8")
(root/"public"/"index.php").write_text(textwrap.dedent("""\
"""), encoding="utf-8")

(root/"src"/"bootstrap.php").write_text(textwrap.dedent("""\
function h(string $s): string { return htmlspecialchars($s, ENT_QUOTES|ENT_SUBSTITUTE, 'UTF-8'); }
function render(string $tpl, array $vars=[]): string {
extract($vars, EXTR_SKIP);
ob_start(); include __DIR__ . '/../templates/' . $tpl; return ob_get_clean();
}
"""), encoding="utf-8")

for page in ["home","about","contact"]:
(root/"templates"/f"{page}.php").write_text(textwrap.dedent(f"""\
<!doctype html>

{page.title()}

תוכן ראשוני לעמוד {page}.

"""), encoding="utf-8")

print("✓ נוצר שלד ב:", root)

אריזה ל־ZIP

python code/generate_skeleton.py mysite
cd export && zip -r mysite.zip mysite

חלק ו׳ — Theme Generator: Dataset מלא + פרסר “FILE:” → ZIP

המודל יחזיר פלט בפורמט קבצים: FILE: path ואז התוכן. נפרסר לקבצים ואריזה ל־ZIP.

מבנה יעד

mytheme/
├─ style.css
├─ functions.php
├─ rtl.css
├─ index.php
├─ header.php
├─ footer.php
├─ templates/
│ ├─ home.php
│ ├─ page.php
│ └─ single.php
└─ assets/
├─ css/
└─ js/

Dataset (JSONL) לדוגמאות ערכות

# data/theme_generator.jsonl
{"instruction":"צור ערכת WP RTL נקייה עם Bootstrap, כותרת/תפריט עליון, footer, RTL, SEO בסיסי","input":"שם ערכה: PG Corporate\nצבע ראשי: #204ECF\nפונטים: Heebo\nניווט: עליון דביק\nFooter: קישורים ותיאור קצר\nRTL: כן\nSEO: meta ו-title דינמי","output":"FILE: style.css\n/*\nTheme Name: PG Corporate\nAuthor: Pablo Guides\nVersion: 1.0.0\nText Domain: pg-corp\n*/\nbody{direction:rtl}\n\nFILE: functions.php\n\n

\n\nFILE: footer.php\n

© PG Corporate

\n\nFILE: index.php\n\n

\n\n\nFILE: rtl.css\n/* התאמות RTL נוספות */"}
{"instruction":"ערכת בלוג מינימלית בעברית עם Heebo, צבע משני #17a2b8, סיידבר ימני","input":"שם ערכה: PG Blog RTL\nתפריט: עליון\nסיידבר: ימני עם ווידג׳טים\nFooter: זכויות יוצרים\nSEO: פעיל","output":"FILE: style.css\n/* Theme Name: PG Blog RTL */\nbody{direction:rtl;font-family:Heebo,sans-serif}\n\nFILE: functions.php\n

\n\nFILE: index.php\n

\n

 

\n

\n"}

פרסר “FILE:” לכתיבת קבצים ויצירת ZIP

# code/theme_writer.py
import os, re, zipfile, pathlib, sys

out = sys.argv[1] if len(sys.argv)>1 else "mytheme-output.txt"
root = pathlib.Path("export/theme")
zip_path = pathlib.Path("export/theme.zip")
root.mkdir(parents=True, exist_ok=True)

txt = open(out, "r", encoding="utf-8", errors="ignore").read()
parts = re.split(r"FILE:\s*([^\n\r]+)\s*", txt)[1:]
for i in range(0, len(parts), 2):
path = parts[i].strip()
content = parts[i+1]
p = root / path
p.parent.mkdir(parents=True, exist_ok=True)
open(p, "w", encoding="utf-8").write(content.strip()+"\n")

with zipfile.ZipFile(zip_path, "w", zipfile.ZIP_DEFLATED) as z:
for p in root.rglob("*"):
z.write(p, arcname=str(p.relative_to(root)))
print("✓ Theme ZIP:", zip_path)

פרומפט SYSTEM מומלץ ל־Theme Generator

SYSTEM:
"את/ה מחולל/ת ערכות WordPress בעברית (RTL). החזר/י תמיד בפורמט קבצים:
FILE: style.css
<תוכן>
FILE: functions.php
<תוכן>

כללים:
– PHP 8.3, תקני WP, title-tag, post-thumbnails לפי צורך.
– תמיכה ב-RTL (style.css + rtl.css).
– הימנע/י מקוד לא בטוח."

חלק ז׳ — דוגמאות שימושיות נוספות למודל

1) ייצור המוני של עמודי נחיתה (Landing Pages) מ־CSV

# data/landing_topics.csv
title,keywords,tone
"חבילות אחסון אתרים","אחסון,שרת,וורדפרס","מקצועי"
"עיצוב אתרים מהיר","עיצוב,UX,UI","ידידותי"

# code/bulk_landing.py
import csv, os, re, requests
os.makedirs("export/landing", exist_ok=True)
API="http://127.0.0.1:11434/api/chat"; MODEL="qwen2.5:3b-instruct-q4"

SYS="את/ה מחולל/ת עמודי נחיתה בעברית: HTML מלא עם H1/H2, CTA, SEO meta, ללא קישורים שקריים."
TEMPLATE = """כותרת: {title}
מילות מפתח: {keywords}
טון: {tone}
דרישות: HTML מלא RTL, H1/H2, מטא title/description, קריאה לפעולה ברורה."""

with open("data/landing_topics.csv",encoding="utf-8") as f:
rd=csv.DictReader(f)
for row in rd:
prompt=TEMPLATE.format(**row)
r=requests.post(API,json={"model":MODEL,"messages":[
{"role":"system","content":SYS},{"role":"user","content":prompt}],
"stream":False,"options":{"temperature":0.2,"num_ctx":2048}},timeout=240)
r.raise_for_status()
html=r.json()["message"]["content"]
slug=re.sub(r"[^\w\s-]","",row["title"]); slug=re.sub(r"\s+","-",slug).lower()
open(f"export/landing/{slug}.html","w",encoding="utf-8").write(html)
print("✓ export/landing/*.html")

2) “מבקר קוד” ל־PHP 8.3 (Hardening & Best Practices)

# code/php_review.py
import requests, sys
MODEL="qwen2.5:3b-instruct-q4"; API="http://127.0.0.1:11434/api/chat"
php = open(sys.argv[1],"r",encoding="utf-8").read()
sysmsg = "בדוק קוד PHP 8.3 לוורדפרס: אבטחה (nonce, esc_, sanitize_), ביצועים, תאימות. החזר דגשים + דוגמה מתוקנת."
r=requests.post(API,json={"model":MODEL,"messages":[
{"role":"system","content":sysmsg},
{"role":"user","content":php}],
"stream":False,"options":{"temperature":0.2,"num_ctx":2048}},timeout=240)
r.raise_for_status(); print(r.json()["message"]["content"])

3) OSINT אחראי עם Solr + מודל מסכם

# הפעלת Solr ויצירת Core
docker run -d -p 8983:8983 –name solr solr:9
docker exec -it solr solr create -c osint-core

# שאילתה לדוגמה (BM25):
curl "http://localhost:8983/solr/osint-core/select?q=דיווח+אבטחה+וורדפרס&rows=50&fl=id,path,ts,text,score"

4) SaaS קטן לטלגרם (Webhook PHP 8.3 + LLM מקומי)

* ודא/י HTTPS אמיתי ו-setWebhook לטלגרם.
*/
$TOKEN = getenv('TG_TOKEN'); // הגדר בשרת
$CHAT_MODEL = 'qwen2.5:3b-instruct-q4';

$input = file_get_contents('php://input');
$update = json_decode($input, true);
$text = $update['message']['text'] ?? ";
$chat_id = $update['message']['chat']['id'] ?? null;

if ($chat_id && $text !== ") {
// קריאה מקומית ל-Ollama
$payload = json_encode([
"model" => $CHAT_MODEL,
"messages" => [
["role"=>"system","content"=>"ענה/י בעברית בקצרה ולעניין."],
["role"=>"user","content"=>$text]
],
"stream" => false,
"options" => ["temperature"=>0.2,"num_ctx"=>1024]
], JSON_UNESCAPED_UNICODE);

$ch = curl_init("http://localhost:11434/api/chat");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Content-Type: application/json; charset=utf-8"],
CURLOPT_POSTFIELDS => $payload
]);
$resp = curl_exec($ch);
curl_close($ch);
$data = json_decode($resp, true);
$reply = $data['message']['content'] ?? 'מצטער/ת, לא הצלחתי לעבד.';

// החזרה ל-Telegram
$send_url = "https://api.telegram.org/bot{$TOKEN}/sendMessage";
$params = ["chat_id"=>$chat_id, "text"=>$reply];
$ch2 = curl_init($send_url);
curl_setopt_array($ch2, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $params
]);
curl_exec($ch2);
curl_close($ch2);
}
echo "OK";

חלק ח׳ — מילון מונחים וכיוונונים חשובים

  • RAG: שליפה (FTS/BM25) → ריראנק (Embeddings) → LLM קטן.
  • Embeddings: הַטמעות מספריות; מחשבים דמיון בקוסינוס.
  • temperature: גיוון – נמוך (0.1–0.3) לקוד/דוחות; גבוה לטקסט יצירתי.
  • num_ctx: חלון הקשר; 1536–3072 ל־CPU חלש. יותר הקשר = יותר RAM.
  • top_k (בשליפה אחרי ריראנק): 4–8 לרוב איזון טוב.
  • CHUNK/overlap: 1800–2200 / 120–180 – רצף טוב עם מעט חפיפות.
  • DB: קטן/בינוני → SQLite; WP/הוסטינג → MySQL; אוספים גדולים → Solr; JSON/פרופילים → MongoDB.

חלק ט׳ — צ׳ק־ליסט קצר לסיום

# 1) התקנות: Ollama + Python venv
# 2) מודלים: qwen2.5:3b-instruct-q4, bge-m3
# 3) הכנת docs/ ו-snippets/ (חומר חוקי בלבד)
# 4) אינגסט: python code/ingest_sqlite.py
# 5) Modelfile: התאמת SYSTEM/temperature/num_ctx -> create
# 6) API: uvicorn code.server:app –port 8000
# 7) WP Maker: POST /plugin -> שמירת קוד -> ZIP
# 8) אבטחה: ZAP baseline -> ingest_findings -> sec_report_html -> PDF
# 9) Theme Generator: dataset JSONL -> קריאה למודל -> theme_writer -> ZIP
# 10) שימושים: Landing bulk, מבקר קוד, OSINT Solr, SaaS Telegram
# 11) שיפור מתמשך: few-shot, tuning פרמטרים, Cache לאמבדינגים

 

📊 נתוני צפיות

סה"כ צפיות: 17

מבקרים ייחודיים: 17

  • 🧍 172.71.135.73 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודFrance)
  • 🧍 141.101.97.95 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודFrance)
  • 🧍 172.70.200.155 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודIsrael)
  • 🧍 172.71.250.3 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודGermany)
  • 🧍 172.71.126.41 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודFrance)
  • 🧍 172.71.131.102 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודFrance)
  • 🧍 172.70.240.181 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודGermany)
  • 🧍 172.68.10.130 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודRussia)
  • 🧍 172.70.200.153 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודIsrael)
  • 🧍 172.70.248.115 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודGermany)
  • 🧍 172.70.243.65 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודGermany)
  • 🧍 172.71.144.36 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודGermany)
  • 🧍 104.23.225.169 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודFrance)
  • 🧍 162.158.94.197 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודGermany)
  • 🧍 172.71.172.225 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודGermany)
  • 🧍 141.101.97.94 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודFrance)
  • 🧍 172.69.130.219 (Pablo Guides - מדריך-על: מודלי AI קלילים ומהירים (CPU בלבד) – תוספי/תבניות WP, אבטחה ל־PDF, Theme Generator ועודCanada)
Pablo Guides