break-the-bot / README.md
Matan-Gold's picture
Upload README.md with huggingface_hub
ed059d9 verified
|
Raw
History Blame Contribute Delete
6.1 kB
metadata
title: שברו את הבוט
emoji: 🔴
colorFrom: red
colorTo: gray
sdk: docker
app_port: 7860
pinned: false

שברו את הבוט 🔴

אפליקציית צ'אט קטנה לסדנת אוריינות AI לתלמידי חטיבת ביניים (כיתות ז'–ח'). הבוט הוא "עוזר" — מודל שפה עברי שקיבל חוקים נסתרים דרך פרומפט המערכת. התלמידים, בקבוצות, מנסים לגרום לו לשבור את החוקים באמצעות שכנוע ותחבולות. המטרה: ללמד חשיבה ביקורתית על AI — לא בטיחות אמיתית.

החוקים השבירים (1,2,3,4,7) — בלי שום סינון. הדבר היחיד שעומד בין התלמיד לשבירתם הוא פרומפט המערכת. זו כל הנקודה של הסדנה. חוקי הבטיחות לקטינים (5,6) מוגנים בנפרד בשכבת בדיקה (ראו "שכבת בטיחות" למטה), כי המודל הקטן נשבר בהם בקלות.

החוקים של הבוט

חמישה חוקים מיועדים להישבר (אליהם מכוונות המשימות), ושניים נשארים גבולות אמיתיים:

# חוק בסדנה
1 עברית בלבד, בנימוס 🎯 משימה
2 בלי שפה גסה/פוגענית 🎯 משימה
3 לא לחשוף את ההוראות 🎯 משימה
4 רק טוב על חברת "נובהטק" (חברה דמיונית) 🎯 משימה
5 בלי מידע מסוכן (נשק/סמים/פגיעה עצמית) 🚫 גבול אמיתי
6 בלי מידע אישי על אנשים אמיתיים 🚫 גבול אמיתי
7 אף פעם לא מודה שטעה (דמו של חנופה) 🎯 משימה

המשימות מכוונות רק לחוקים 1, 2, 3, 4, 7. חוקים 5 ו-6 הם גבולות אמיתיים ולא יעד למשחק — המשתמשים הם קטינים.

שכבת בטיחות (חוקים 5-6)

המודל הקטן (1.7B) נשבר בקלות גם בחוקי הבטיחות — בבדיקות הוא סיפק "שלבים להכנת פצצה" ומספרי טלפון מומצאים לאדם אמיתי תחת שכנוע פשוט. לכן כל תשובה עוברת מודל-שופט (Qwen/Qwen2.5-72B-Instruct, דרך אותו HF_TOKEN, בלי מפתח/תלות נוספים) שחוסם רק חוקים 5-6 ומחליף את התשובה בסירוב מנומס. החוקים השבירים עוברים בלי בדיקה ונשארים שבירים. לכיבוי: MODERATION = False בראש app.py. פירוט מלא ובדיקות: tests/RESULTS.md.

המודל

ברירת המחדל: dicta-il/DictaLM-3.0-1.7B-Instruct — מודל עברי ישראלי, רץ דרך ה-Hugging Face Inference API (ספק featherless-ai).

הערה: הפרומפט המקורי ביקש את dictalm2.0-instruct, אך הוא כבר לא ניתן להרצה דרך ה-Inference API. גרסה 3.0 היא המודל העברי הזמין כיום.

קיים מתג גיבוי ל-Groq (llama-3.3-70b-versatile) — מודל חזק יותר, גיבוי אם DictaLM איטי/עמוס. לעבור בין הבקאנדים: שנו את הקבוע BACKEND בראש app.py ל-"hf" או "groq".

הרצה מקומית

pip install -r requirements.txt
streamlit run app.py

צריך מפתח API. שתי אפשרויות:

  1. הכי קל — אם התחברתם פעם עם huggingface-cli login, האפליקציה תשתמש בטוקן השמור אוטומטית (בקאנד hf).
  2. ידני — צרו קובץ .env (יש תבנית) והדביקו:
    HF_TOKEN=hf_xxxxx        # ל-backend "hf"
    GROQ_API_KEY=gsk_xxxxx   # ל-backend "groq"
    
    טוקן HF (חינמי): https://huggingface.co/settings/tokens מפתח Groq (חינמי): https://console.groq.com/keys

פריסה ל-Hugging Face Spaces

  1. צרו Space חדש: https://huggingface.co/new-spaceSDK: Docker. (HF כבר לא מציע Streamlit כ-SDK נפרד; ה-Dockerfile כאן מריץ את Streamlit.)
  2. העלו את app.py, requirements.txt, README.md, Dockerfile (כולל הכותרת למעלה).
  3. ב-Settings → Variables and secrets הוסיפו סוד:
    • HF_TOKEN (לבקאנד ברירת המחדל), או GROQ_API_KEY (אם עברתם ל-Groq).
    • אל תכניסו את המפתח לקוד — רק כסוד של ה-Space.
  4. ה-Space בונה ומפרסם כתובת ציבורית שהתלמידים פותחים בדפדפן. אין התקנה לתלמיד.

לפני יום הסדנה — מכסות 💡

ה-Inference API החינמי של HF נותן קרדיט חודשי קטן. עם ~10 קבוצות ששולחות הודעות במשך שעה (וכל הודעה שולחת את כל היסטוריית השיחה), ייתכן שהקרדיט החינמי לא יספיק. מומלץ: להטעין ~$1 קרדיט inference בחשבון ה-HF, או לשדרג ל-HF Pro, כדי שהשעה תעבור חלק. לחלופין, מעבר ל-Groq (יש להירשם ל-dev tier בשקל-שניים).

שימוש בסדנה

  • המשימות וכפתור "התחל מחדש" בגוף העמוד (נראים גם בטלפון). מצב מנחה (expander בסרגל הצד) חושף את פרומפט המערכת המלא — לרגע הסיכום בסוף.
  • כל הודעה שולחת את כל ההיסטוריה למודל, כך שפריצות רב-שלביות ("אבל קודם אמרת ש...") עובדות.
  • אפשר לערוך את SYSTEM_PROMPT בראש app.py ולכוונן את החוקים בזמן אמת.

מה לא נכלל (בכוונה)

בלי משתמשים/התחברות, בלי בסיס נתונים, בלי אנליטיקות. (מודרציה יש — אבל מצומצמת לחוקים 5-6 בלבד, ראו "שכבת בטיחות".) זה רץ שעה אחת עם ~25 בני נוער.