מדריך Claude AI המלא
Tool Use, System Prompts, API ו-Extended Thinking
כל מה שצריך לדעת על Claude מבית Anthropic — מה מייחד אותו, איך כותבים System Prompts שעובדים, Tool Use צעד אחר צעד, ואיך בונים סוכנים חכמים עם ה-API.
ארבעה מוצרים בשם אחד
HuggingFace מתוארת בדרך כלל כ"GitHub של ה-AI", וזה מדויק בערך כמו לומר שגוגל היא מנוע חיפוש. בפועל זה ארבעה דברים נפרדים, ורוב האנשים צריכים רק אחד מהם — לרוב לא זה שהם חשבו.
- ה-Hub. מאגר המודלים והנתונים. כאן מחפשים, קוראים תיעוד ומורידים. חינמי, ולרוב זה הכל מה שצריך.
- הספריות.
transformersואחיותיה — קוד Python שמריץ מודלים על המכונה שלך. פתוח לגמרי ולא תלוי בשירות. - Inference — הרצה כשירות. קריאת API למודל בלי שיהיה לך GPU. יש רמה חינמית מוגבלת ויש נקודות קצה ייעודיות בתשלום.
- Spaces. אחסון של אפליקציות דמו. שימושי להצגה, לא לייצור.
השאלה שממיינת אותך לאחד מהם היא לא טכנית: האם אתה צריך להריץ מודל בעצמך, או רק לקרוא לאחד? אם התשובה השנייה — ולרוב היא — ההחלטה האמיתית שלך היא בין HuggingFace לבין ספק API מסחרי, וזה הסעיף הבא.
אם מה שאתה בונה יכול לרוץ על מודל מסחרי בקריאת API — התחל שם. תגיע ל-HuggingFace כשיש סיבה ספציפית, והסעיף הבא מפרט מה הן.
להריץ בעצמך או לשלם לספק
זו ההחלטה שקובעת כמה עבודה יש לך, והיא נשמעת אידיאולוגית ואינה. ארבע סיבות אמיתיות להריץ מודל פתוח בעצמך:
- המידע לא יכול לצאת. מסמכים רפואיים, מידע פיננסי, חומר שכפוף להתחייבות ללקוח. זו הסיבה הנפוצה ביותר בפועל, והיא לגמרי מוצדקת.
- נפח גבוה ויציב. בקריאות בודדות, API מסחרי זול יותר מכל שרת שתפעיל. בנפח גדול ורציף המשוואה מתהפכת — אבל רק כשהעומס יציב, כי שרת שיושב ריק עולה גם כשלא משתמשים בו.
- מודל שאין כמוהו כשירות. מודל ייעודי לתחום, מודל בשפה מסוימת, או משהו שכוונן על נתונים שלך.
- אתה חייב שהמודל לא ישתנה. ספקים מעדכנים מודלים, ופלט שהיה יציב משתנה. מודל שהורדת נשאר בדיוק כמו שהוא, לנצח.
ומה שאינו סיבה: "זה חינם". המודל חינם; ה-GPU לא, והזמן שלך בהחלט לא. חשבון מהיר — שרת עם כרטיס גרפי מגיע לעלות של מאות דולרים בחודש כשהוא רץ ברציפות, וזה לפני שדיברנו על תחזוקה, ניטור ועדכונים.
התחלה: שלוש שורות
הדרך המהירה ביותר להריץ מודל היא pipeline — עטיפה שמסתירה את הטוקניזציה ואת עיבוד הפלט:
pip install transformers torch
from transformers import pipeline
# תמלול — Whisper רץ מקומית
asr = pipeline("automatic-speech-recognition",
model="openai/whisper-small")
print(asr("meeting.mp3", generate_kwargs={"language": "he"}))
שני דברים שכדאי לדעת לפני שמריצים את זה בפעם הראשונה. הורדה: המודל יורד למטמון מקומי, וגודלו יכול להיות בין מאות מגה־בייט לעשרות ג׳יגה. במחברת ענן זה אומר שכל הפעלה מחדש מורידה שוב. חומרה: בלי כרטיס גרפי הכל ירוץ על המעבד, וזה עובד — פשוט לאט מאוד. למודל שפה בגודל בינוני, ההבדל הוא בין שניות לדקות לכל בקשה.
הפרמטר language="he" בדוגמה הוא לא קישוט: בלעדיו Whisper מנחש את השפה מהשניות הראשונות, ובאודיו עברי שמתחיל במונח לועזי הוא מנחש לא נכון ומתמלל את כל הקובץ כאילו הוא באנגלית.
מה בעצם צריך כדי להריץ את זה
השאלה הראשונה שעולה אחרי הדוגמה הראשונה שרצה לאט: מה החומרה שצריך, ובאיזה סדר גודל.
הכלל המנחה הוא זיכרון הכרטיס הגרפי. מודל שפה צריך להיטען לזיכרון כדי לרוץ, וגודלו נגזר ממספר הפרמטרים כפול הדיוק שבו הוא נשמר. בדיוק מלא, כל מיליארד פרמטרים תופסים בערך שני ג׳יגה־בייט; בקוונטיזציה — שמירת המשקלים בדיוק נמוך יותר — זה יורד לחצי ואף לרבע.
מכאן שלוש מסקנות מעשיות:
- קוונטיזציה היא ברירת המחדל, לא פשרה. ההפרש באיכות ברמות הנפוצות קטן; ההפרש בזיכרון הוא בין "רץ" ל"לא נטען".
- מודל קטן שמכוון למשימה מנצח מודל גדול שרץ בקושי. למשימות סיווג, חילוץ או הטמעה — מודלים קטנים מספיקים לגמרי ורצים גם על מעבד.
- אם אתה רק בודק, אל תקנה כלום. מחברת ענן עם GPU בשעות בודדות עולה פחות מארוחה, וזה הדרך הנכונה לגלות אם המשימה שלך בכלל פתירה לפני שמתחייבים לחומרה.
ולגבי מק עם מעבד מבית אפל: הוא מריץ מודלים בינוניים יפה, כי הזיכרון משותף בין המעבד לכרטיס. לא תחליף לשרת בייצור, ובהחלט מספיק לפיתוח ולניסוי.
איך בוחרים מודל מתוך מאות אלפים
החיפוש ב-Hub מחזיר אלפי תוצאות לכל משימה, ורובן לא רלוונטיות. סדר סינון שעובד:
- סנן לפי משימה בסרגל הצד. זה מוריד מאות אלפים לעשרות.
- בדוק רישיון לפני הכל. הסעיף הבא מסביר למה זה ראשון ולא אחרון.
- הורדות — כאות חלש. מודל עם מאות אלפי הורדות כנראה עובד. מודל עם שתים־עשרה כנראה לא נבדק על ידי איש. זה לא מדד איכות אלא מדד סיכון.
- תאריך עדכון אחרון. מודל מלפני שלוש שנים בתחום שזז מהר הוא בדרך כלל לא הבחירה.
- כרטיס המודל. אם אין תיעוד על מה הוא אומן, מה המגבלות ואיך להריץ — זה סימן טוב לדלג.
- גודל. מספר הפרמטרים קובע אם זה בכלל ירוץ אצלך. מודל שדורש יותר זיכרון גרפי ממה שיש לך פשוט לא ייטען.
ומה שכדאי להתעלם ממנו: מספרי ביצועים בכרטיס המודל. הם מדווחים על ידי מי שהעלה אותו, בלי אימות, ולעיתים קרובות על מדדים שנבחרו כי הם החמיאו. הדרך היחידה לדעת אם מודל טוב למשימה שלך היא להריץ אותו על עשרים דוגמאות שלך.
רישיון: החלק שקובע אם מותר בכלל
"קוד פתוח" בהקשר של מודלים הוא מונח רחב שמכסה דברים שונים מאוד, וזה תופס אנשים אחרי שכבר בנו.
- Apache-2.0 ו-MIT. מתירניים באמת. שימוש מסחרי, שינוי, הפצה — הכל מותר. אם זה הרישיון, אתה בסדר.
- רישיונות קהילה ייעודיים. חלק מהמשפחות הגדולות מגיעות ברישיון משלהן שמתיר שימוש מסחרי אבל מוסיף תנאים — הגבלות על סוגי שימוש, ולעיתים דרישות ייחוס או מגבלות בקנה מידה מסוים. לרוב אין בעיה, אבל צריך לקרוא.
- לא מסחרי. מסומן בדרך כלל כ-NC. מותר למחקר ולניסוי, אסור במוצר. זו הקטגוריה שהכי תופסת אנשים בהפתעה.
- רישיון של הנתונים. ה-Datasets ב-Hub הם ישות נפרדת עם רישיון נפרד. מודל מתירני שכוונן על נתונים מוגבלים יכול לרשת את המגבלה.
הכלל המעשי: תבדוק רישיון ביום הראשון, לא ביום שלפני ההשקה. החלפת מודל בשלב מוקדם היא שעה של עבודה; בשלב מאוחר זה בנייה מחדש של חצי המערכת.
עברית: מה באמת עובד
זה החלק שבגללו העמוד הזה קיים בעברית, והוא לא אופטימי במיוחד — אבל הוא מדויק.
רוב המודלים הרב-לשוניים ראו מעט מאוד עברית. "תומך ב-100 שפות" בדרך כלל אומר שהעברית היא שבריר אחוז מנתוני האימון. התוצאה: המודל מבין עברית בסיסית, נשבר על ניואנס, ומייצר עברית שנשמעת מתורגמת.
מה שכן עובד בפועל, לפי משימה:
- תמלול — כאן המצב הכי טוב. Whisper בגרסאות הגדולות מתמלל עברית סבירה עד טובה, ובלבד שמציינים את השפה במפורש.
- הטמעות וחיפוש סמנטי — מודלים רב-לשוניים ייעודיים עובדים סביר. חשוב: אותו מודל לאינדוקס ולשאילתה. ערבוב מודלים הוא התקלה הנפוצה ביותר בבניית חיפוש, והיא לא מייצרת שגיאה — רק תוצאות גרועות.
- סיווג ורגשות — עובד אחרי כוונון על נתונים שלך. מודל סנטימנט כללי בעברית לרוב מאכזב.
- יצירת טקסט — כאן הפער הגדול ביותר מול מודלים מסחריים סגורים, והוא לא נסגר בקרוב.
הטוקנייזר — העלות הנסתרת
פרט טכני עם השלכה כספית ישירה: עברית נחתכת לטוקנים גרוע יותר מאנגלית. הטוקנייזרים אומנו בעיקר על אנגלית, ולכן מילה עברית מתפרקת לרסיסים רבים במקום לטוקן אחד או שניים.
from transformers import AutoTokenizer
tok = AutoTokenizer.from_pretrained("meta-llama/Llama-3.1-8B")
he = "המערכת מעבדת חשבוניות באופן אוטומטי"
en = "The system processes invoices automatically"
print(len(tok.encode(he)), len(tok.encode(en)))
# תריץ בעצמך — הפער בין השניים הוא מה שחשוב
המשמעות כפולה: עלות — אם אתה משלם לפי טוקנים, אותו טקסט בעברית עולה יותר; וחלון הקשר — פחות תוכן עברי נכנס לאותו חלון. כשמתכננים מערכת שמעבדת מסמכים בעברית, שווה למדוד את זה על טקסט אמיתי שלך לפני שמעריכים עלויות.
Inference: חינם, ייעודי, ומה ביניהם
הרצה כשירות מגיעה בשתי צורות שקל לבלבל ביניהן:
- הרמה החינמית. מוגבלת בקצב, ומודל שלא נקרא לאחרונה צריך להיטען — מה שמייצר המתנה קרה של עשרות שניות בבקשה הראשונה. מצוין לניסוי, לא מתאים למשהו שמשתמש אמיתי מחכה לו.
- נקודת קצה ייעודית. מכונה שמוקצית לך, נשארת חמה, ומתומחרת לפי שעה — כולל שעות שבהן היא לא עושה כלום. יש אפשרות לכיבוי אוטומטי בחוסר פעילות, וזה מחזיר את ההמתנה הקרה.
הטעות הנפוצה היא לבנות פרוטוטייפ על הרמה החינמית, לראות שזה עובד, ולהניח שהתמחור יתרחב באופן ליניארי. הוא לא — המעבר לייצור הוא מדרגה, לא שיפוע.
import requests
API_URL = "https://api-inference.huggingface.co/models/openai/whisper-large-v3"
headers = {"Authorization": "Bearer hf_YOUR_TOKEN"}
r = requests.post(API_URL, headers=headers,
data=open("meeting.mp3", "rb"))
if r.status_code == 503:
# המודל נטען כרגע — estimated_time אומר כמה לחכות
print("cold start:", r.json().get("estimated_time"))
הטיפול ב-503 הוא לא פינה נידחת אלא מצב שיקרה לך תמיד ברמה החינמית. קוד שלא מטפל בו ייראה כשבור באופן אקראי.
מודלים הם קוד
זה החלק שהכי חשוב והכי נדיר לראות בעברית: להוריד מודל מהאינטרנט זה לא כמו להוריד קובץ נתונים.
trust_remote_code=True— הפרמטר הזה מריץ קוד Python שנמצא במאגר של המודל, על המכונה שלך, עם ההרשאות שלך. חלק מהמודלים באמת דורשים אותו כדי לעבוד. אל תפעיל אותו על מאגר שאתה לא סומך על מי שפרסם אותו.- פורמט הקובץ. משקלים שנשמרו בפורמט הישן (
.bin) עוברים דרך מנגנון סריאליזציה שיכול להריץ קוד בזמן הטעינה. הפורמט החדש, safetensors, נבנה בדיוק כדי למנוע את זה. כשיש שתי אפשרויות — קח את השנייה. - נעל גרסה. מאגר מודל יכול להתעדכן. אפשר להצמיד ל-commit מסוים, וזה מה שהופך את ההרצה לניתנת לשחזור וגם מונע הפתעות.
- שרשרת התלויות. קוד לדוגמה בכרטיסי מודל מתקין לעיתים חבילות נוספות. תקרא לפני שאתה מריץ.
שלוש הפעולות האלה לוקחות דקה וחוסכות את התרחיש שאף אחד לא מצפה לו — שהמכונה שמריצה מודל תמלול הפכה למשהו אחר.
ואותו היגיון תקף גם לכיוון השני: אם אתה מעלה מודל או נתונים למאגר ציבורי, תבדוק פעמיים מה יש בתוכם. משקלים שכוונו על נתוני לקוחות יכולים לשמר שברים מהם, וקובץ נתונים שהועלה "לדוגמה" הוא לעיתים קרובות הדרך שבה מידע פנימי מגיע לאינטרנט. מאגר פרטי הוא ברירת מחדל סבירה, ומעבר לציבורי צריך להיות החלטה ולא ברירת מחדל.
Datasets — החלק שמדלגים עליו
המודלים מקבלים את כל תשומת הלב, ומאגר הנתונים לצידם שימושי לא פחות — במיוחד לשני דברים שכמעט אף אחד לא עושה.
הראשון: לבדוק על מה המודל אומן. אם משהו בהתנהגות של מודל מפתיע אותך, התשובה נמצאת בנתונים. מודל שאומן על טקסט מפורומים יתנהג אחרת ממודל שאומן על ספרות מקצועית, ולעיתים קרובות זה מסביר בדיוק את הכשל שאתה רואה.
והשני: להשתמש בהם לבדיקה. כשאתה משווה שני מודלים, אתה צריך ערכת בדיקה — ובמקום לבנות אחת, לרוב כבר קיימת. מאגרי הערכה למשימות נפוצות זמינים שם, וטעינה שלהם היא שורה אחת:
from datasets import load_dataset
ds = load_dataset("some-org/some-eval", split="test")
print(ds[0])
ובעברית — וזו הנקודה שכדאי לדעת — יש הרבה פחות. מאגרי נתונים עבריים ומדדי הערכה בעברית קיימים אבל מעטים, וחלקם קטנים או ישנים. המשמעות המעשית: אם אתה עובד בעברית, סביר שתצטרך לבנות ערכת בדיקה משלך. עשרים עד חמישים דוגמאות אמיתיות מהתחום שלך, עם התשובה הנכונה לצידן, שוות יותר מכל מדד כללי — ולוקח לבנות אותן שעה.
שווה גם לזכור שרישיון הנתונים נפרד מרישיון המודל, ושכוונון על נתונים מוגבלים יכול להוריש את המגבלה למה שייצא.
כוונון: מתי זה בכלל שווה
Fine-tuning נשמע כמו התשובה לכל בעיה של איכות, והוא כמעט אף פעם לא הצעד הראשון הנכון.
הסדר שמחזיר תוצאות מהר יותר:
- פרומפט טוב יותר. חינם, מיידי, ופותר יותר ממה שנדמה.
- דוגמאות בתוך הפרומפט. שלוש-חמש דוגמאות טובות משנות התנהגות דרמטית.
- שליפה מהנתונים שלך — RAG. פותר את "המודל לא יודע את הדברים שלנו", שזו הבעיה שרוב האנשים מנסים לפתור בכוונון.
- ורק אז כוונון, ובעיקר כשצריך התנהגות קבועה — פורמט, סגנון, החלטה — ולא ידע.
וכשמגיעים לשם: LoRA ושיטות דומות מכווננות רק שכבות קטנות במקום את כל המודל, וזה מוריד את הדרישות מחומרה של מרכז נתונים לכרטיס אחד. זה מה שהפך כוונון לנגיש בכלל.
הצוואר בקבוק האמיתי הוא הנתונים, ובעברית במיוחד: מאות עד אלפי דוגמאות מתויגות באיכות טובה, שמישהו צריך להכין. זו העבודה, לא ההרצה. פרויקטים שנתקעים בכוונון נתקעים כמעט תמיד כאן.
Spaces — למה זה כן ולמה לא
Spaces מאפשר להעלות אפליקציה קטנה ולקבל כתובת שאפשר לשלוח. זה מצוין לשלושה דברים: להראות ללקוח משהו עובד לפני שבונים, לבדוק מודל בממשק במקום בקוד, ולתעד פרויקט בצורה שאפשר להתנסות בה.
ומה שהוא לא: סביבת ייצור. הרמה החינמית רצה על מעבד בלבד ונרדמת בחוסר פעילות, כך שמשתמש שנכנס אחרי הפסקה ימתין לטעינה. אין ערבויות זמינות, ואין הפרדה שמתאימה למידע רגיש.
ההמלצה הפשוטה: דמו — כן. משהו שמישהו משלם עליו — לא.
מדמו למשהו שרץ
הפער בין סקריפט שעבד במחברת לבין שירות שמישהו מסתמך עליו גדול יותר ממה שנראה, ורוב הפרויקטים נתקעים בדיוק שם. ארבעה דברים שההרצה המקומית מסתירה:
- טעינה חוזרת.
pipeline()טוען את המודל מחדש בכל קריאה אם קראת לו בתוך פונקציה. במחברת זה נראה כמו איטיות; בשרת זה אומר שכל בקשה משלמת עשרות שניות. תטען פעם אחת בעלייה ותשמור את האובייקט. - בקשות במקביל. מודל שרץ על כרטיס אחד לא מטפל בשתי בקשות בו-זמנית — הן ממתינות בתור. עומס של חמישה משתמשים במקביל מרגיש שבור גם כשהכל תקין. אצווה של בקשות יחד יעילה בהרבה מהרצה אחת-אחת, אם המבנה שלך מאפשר.
- זיכרון שלא משתחרר. תהליך שמריץ מודלים לאורך זמן נוטה לצבור זיכרון גרפי. שירות שרץ שבועיים ואז קורס באמצע הלילה הוא תרחיש מוכר, וניטור פשוט של הזיכרון תופס אותו מראש.
- הפעם הראשונה אחרי פריסה. המודל צריך לרדת מחדש. בסביבה שנבנית מחדש בכל פריסה, זה אומר הורדה של ג׳יגה־בייטים בכל עלייה — ולכן שווה לשמור אותו בשכבה שנשארת.
אף אחת מהנקודות האלה איננה קשה לתיקון, וכולן מתגלות בייצור אם לא חשבו עליהן מראש. זו הסיבה העיקרית שהמלצתי בסעיף הראשון היא להתחיל מ-API מסחרי — לא כי המודלים פחות טובים, אלא כי כל ארבעת הדברים האלה הם עבודה שמישהו אחר כבר עשה.
שימושים שמתאימים לכאן
- תמלול ישיבות בעברית, מקומית — כשהתוכן לא יכול לעלות לענן. זה השימוש שהכי מצדיק את כל המהלך.
- חיפוש סמנטי במסמכים פנימיים — הטמעות מקומיות, בלי לשלוח את המסמכים לאף אחד.
- סיווג בהיקף — עשרות אלפי פריטים ביום, שם מודל קטן מקומי זול בהרבה מקריאות API.
- עיבוד מסמכים — חילוץ שדות מחשבוניות וטפסים, כולל מודלים שרואים תמונה.
- ניסוי לפני התחייבות — לבדוק אם משימה בכלל פתירה, לפני שבונים סביבה מסחרית.
שים לב שרוב הרשימה נשענת על אותה סיבה: המידע נשאר אצלך. זה ההיגיון המרכזי של הפלטפורמה הזאת לעסק ישראלי, וכל השאר משני לו.
ושווה להוסיף הבחנה שחוסכת ויכוחים: "מקומי" ו"פרטי" הם לא אותו דבר. מודל שרץ על שרת שכור בענן הוא עדיין קוד שרץ אצל ספק — ההבדל מול API מסחרי הוא שהתוכן לא עובר דרך שירות שמעבד אותו, לא שהוא לא עוזב את הבניין. אם ההתחייבות ללקוח היא שהמידע לא יוצא מהארץ או מהרשת, צריך לבדוק היכן השרת יושב — וזה שיקול נפרד לגמרי מבחירת המודל.
מתי לא
- כשמודל מסחרי פותר את זה. אתה קונה גם איכות וגם את מה שלא תצטרך לתחזק.
- כשאין לך מי שיתחזק. מודל בייצור הוא מערכת, לא קובץ. עדכונים, ניטור, תקלות זיכרון.
- כשהנפח קטן. שרת שרץ בשביל מאה בקשות ביום הוא בזבוז ברור.
- כשהמשימה בעברית ודורשת ניסוח איכותי. שם הפער מול מודלים סגורים עדיין גדול.
טעויות שחוזרות
- לבדוק רישיון בסוף. ואז לגלות שהמודל שהכל נבנה עליו אסור מסחרית.
- להאמין למספרים בכרטיס המודל. מדווחים עצמית, בלי אימות.
- trust_remote_code על מאגר לא מוכר. הרצת קוד זר על המכונה שלך.
- מודל הטמעה אחד לאינדוקס ואחר לשאילתה. לא שובר כלום, פשוט מחזיר תוצאות גרועות.
- לשכוח לציין שפה ב-Whisper. קובץ עברי שמתומלל כאנגלית.
- לתכנן עלות לפי אנגלית. עברית צורכת יותר טוקנים לאותו טקסט.
- Spaces כייצור. נרדם, איטי, ובלי ערבויות.
- לכוונן לפני שניסית RAG. העבודה הכי גדולה, לרוב על הבעיה הלא נכונה.