איך ללמוד פיתוח סוכני AI מאפס: מדריך מעשי
למדו לבנות סוכני AI בשישה שלבים מובנים: ממושגי יסוד ולולאות עבודה ועד זיכרון ובטיחות. המדריך כולל פרויקטים מעשיים לבנייה עצמית ללא שימוש בספריות מורכבות.
המסלול בשישה שלבים
כדי ללמוד סוכני AI מאפס, עבדו לפי סדר ששת השלבים הבאים: מושגי יסוד, הלולאה הראשונה שלכם, כלים, זיכרון, תכנון לולאות ובטיחות. בכל שלב תבנו פרויקט קטן במו ידיכם. דילוג על שלבים הוא הסיבה הנפוצה ביותר לעצירה בתהליך הלמידה, כיוון שספריות עבודה (frameworks) מסתירות בדיוק את החלקים שחשוב להבין.
סוכן AI הוא לולאה סביב מודל שפה, המורשה להפעיל כלים. משפט זה הוא תמצית הנושא כולו. כל מה שבא אחריו הוא פירוט על המרכיבים בתוך הלולאה, על הגישה של הכלים למשאבים, ועל הדרכים לעצירת הלולאה במקרה של תקלה. אם אתם מסוגלים להסביר את הלולאה לאדם אחר, סימן שלמדתם את הנושא. אם אתם רק יודעים למנות שמות של ספריות עבודה, לא למדתם אותו.
התוכנית להלן מניחה שאתם לומדים דרך בנייה. קראו שלב, בנו את הפרויקט הקטן, גרמו לו להישבר בכוונה, ורק אז עברו הלאה. שלב שרק קראתם עליו הוא שלב שלא ביצעתם.
מה באמת נדרש לפני שלב 1
רשימת הדרישות המוקדמות הכנה היא קצרה, ואף קצרה יותר ממה שרוב דפי הקורסים מציעים.
- אתם מסוגלים לקרוא ולכתוב ב-Python או ב-TypeScript ברמה של סקריפט בן חמישים שורות.
- אתם מרגישים בנוח ב-Linux shell: התקנת חבילה, עריכת קובץ, קריאת לוג.
- יש לכם API key עבור מודל מאוחסן, או מכונה שמסוגלת להריץ מודל מקומי.
זוהי הרשימה המלאה. אינכם זקוקים לתאוריה של למידת מכונה, ואינכם צריכים לאמן מודל. שום דבר בעבודה עם סוכנים (agents) לא כרוך בחישובי gradients או בנתוני אימון. כרטיס גרפי רלוונטי רק אם תחליטו להריץ את המודל בעצמכם, מיומנות נפרדת שתוכלו לרכוש מאוחר יותר מתוך אירוח Ollama ב-VPS לצורך הרצה עצמית של LLM.
מה שאנשים נוטים להמעיט בערכו הוא החלק של ה-shell. סוכנים נכשלים בגלל הרשאות, נתיבים, משתני סביבה ותהליכים שקורסים בשקט. אם stack trace בנוגע ל-PATH או למצב קובץ גורם לכם לסגור את הטרמינל, הקדישו סוף שבוע ללימוד יסודות Linux תחילה. זה יחסוך לכם חודש של עבודה בהמשך.
שלב 1: מהו סוכן, ומה הוא אינו
התחילו בקריאת API אחת ללא לולאה. שלחו prompt, הדפיסו את התגובה, ובדקו את ספירת ה-tokens בתגובה. כעת אתם מבינים את יחידת העלות ואת יחידת ה-latency.
לאחר מכן למדו שימוש ב-tools, שזהו הרעיון החדש היחיד בכל התחום. אתם מתארים מודל כפונקציה בעלת שם, תיאור ו-schema בפורמט JSON עבור הקלטים שלה. המודל אינו מריץ דבר. הוא משיב בבקשה מובנית: להפעיל את run_command עם ארגומנטים אלו. הקוד שלכם מריץ את הפונקציה, שולח את הפלט חזרה כהודעה, ושואל את המודל שוב. המודל הוא מתכנן שקורא טקסט וכותב טקסט. הקוד שלכם הוא הגורם בעל הידיים. לקוד בצד שלכם בחילופי דברים אלו יש שם ברגע שמתחילים להשוות תכנונים: הוא נקרא the agent harness, הלולאה, ה-tools וההרשאות העטופים סביב מודל שאין לו כאלו משלו.
צ'אטבוט מסתיים לאחר תגובה אחת. סוכן חוזר על חילופי דברים אלו עד שהמודל מפסיק לבקש tools. החזרה הזו היא כל ההבדל, וזו הסיבה לכך שגם אופני הכשל שונים. צ'אטבוט נותן תשובה שגויה פעם אחת. סוכן פועל על בסיס תשובה שגויה מספר פעמים לפני שמישהו מבחין בכך.
שלב 2: כתיבת הלולאה בעצמכם, פעם אחת
אל תתחילו עם framework. כתבו כ-30 שורות של Python כדי שהמבנה של הדבר יהיה שלכם.
sudo apt update && sudo apt install -y python3-venv
python3 -m venv ~/agent
source ~/agent/bin/activate
pip install anthropic
export ANTHROPIC_API_KEY=your-key-hereimport subprocess
import anthropic
client = anthropic.Anthropic()
tools = [{
"name": "run_command",
"description": "Run a read only shell command and return its output.",
"input_schema": {
"type": "object",
"properties": {"command": {"type": "string"}},
"required": ["command"],
},
}]
messages = [{"role": "user", "content": "How much disk space is free here?"}]
while True:
response = client.messages.create(
model="claude-opus-5",
max_tokens=4096,
tools=tools,
messages=messages,
)
if response.stop_reason != "tool_use":
break
messages.append({"role": "assistant", "content": response.content})
results = []
for block in response.content:
if block.type == "tool_use":
done = subprocess.run(
block.input["command"], shell=True,
capture_output=True, text=True, timeout=10,
)
results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": done.stdout or done.stderr,
})
messages.append({"role": "user", "content": results})
print(next(b.text for b in response.content if b.type == "text"))הריצו זאת עם python3 agent.py. הרצה תקינה מדפיסה פסקה המציינת את מערכות הקבצים שלכם ואת השטח הפנוי בהן, כיוון שהמודל ביקש df -h, הקוד שלכם הריץ זאת, והמעבר השני הפך את הטבלה למשפט. אם לא מודפס דבר, הלולאה הסתיימה לפני שהגיע בלוק טקסט. הוסיפו print(response.stop_reason) בתוך הלולאה וצפו בערכים משתנים.
כעת, גרמו לשבירה מכוונת. מחקו את השורה tool_use_id וקראו את השגיאה, כיוון שתוצאת כלי ללא מזהה תואם נדחית על ידי ה-API, וזוהי שגיאת המתחילים הנפוצה ביותר שקיימת. שאלו שאלה הדורשת שתי פקודות וצפו בלולאה רצה פעמיים. שאלו משהו בלתי אפשרי וצפו בה מוותרת או רצה לנצח.
אזהרה אחת לגבי דוגמה זו. היא מעבירה פלט של מודל ישירות ל-shell עם shell=True, דבר המקובל במכונת ניסויים שניתן לבנות מחדש, אך שגוי בכל מקום אחר. שלב 6 מתקן זאת. המושגים שמתחת ללולאה מכוסים בהרחבה ב-בניית סוכן AI משלכם על גבי VPS.
שלב 3: כלים שלא היו לסוכן מלכתחילה
הכלי run_command שלך עובד, אך סוכן אמיתי זקוק לכלים המגיעים אל מחוץ למסגרת: מערכת כרטיסים, מסד נתונים, מאגר קוד. כתיבת מעטפת (wrapper) ייעודית לכל שירות, עבור כל סוכן, אינה ניתנת להרחבה.
הפרוטוקול Model Context Protocol (MCP) הוא הפתרון שהתעשייה אימצה. שרת MCP חושף קבוצת כלים באמצעות תעבורה סטנדרטית, וכל סוכן התומך ב־MCP יכול להשתמש בהם ללא צורך בהתאמות מיוחדות. שרת מערכת הקבצים לדוגמה מופעל בפקודה אחת:
npx -y @modelcontextprotocol/server-filesystem /home/you/projectsפעולה זו דורשת ש־Node יהיה מותקן, וארגומנט הספרייה הוא הנתיב היחיד שהשרת יגש אליו. זהו מודל האבטחה בקליפת אגוז: השרת הוא שקובע את הגבולות, לא המודל. כוון לקוח אל השרת, והסוכן שלך יקבל יכולות קריאה וכתיבה של קבצים שלא נכתבו על ידך. הרצה תקינה של שרתים אלו, תחת חשבון שירות ועם בחירת אמצעי התעבורה המתאימים, מוסברת ב-הרצת שרתי MCP על גבי VPS עבור סוכני פיתוח מבוססי AI. עבור שרת שני המצביע על נתונים אמיתיים במקום על ספריית עבודה זמנית, המדריך אירוח עצמי של openGym, מעקב אימונים מספק שרת לקריאה בלבד, כך שתוכל לתרגל שאילתות על היסטוריית האימונים שלך מבלי לתת לסוכן גישה למידע שהוא עלול לשבש.
הלקח משלב זה הוא שתכנון הכלים הוא העבודה האמיתית. תיאור מעורפל גורם למודל לנחש. כלי שמחזיר ארבעים אלף תווים מרעיל את חלון ההקשר (context window). כלי שיכול למחוק פריטים, סופו שימחק פריטים.
שלב 4: זיכרון, שהוא ברובו פשוט קבצים
מתחילים נוטים לפנות בשלב זה למסד נתונים וקטורי. אל תעשו זאת, לפחות לא כרגע.
לסוכן אין זיכרון בין קריאות. אתם שולחים מחדש את כל השיחה בכל פעם, וזו הסיבה שסשן ארוך עולה יותר לכל תור מאשר סשן קצר. לכן, הזיכרון מתפצל לשתי בעיות. הראשונה היא מה נכנס בחלון ההקשר (context window) כרגע, דבר שאתם מנהלים באמצעות סיכום, קיצוץ פלט ישן של כלים, ושמירה במטמון (caching) של הקידומת הקבועה ב־prompt שלכם, כך שאתם משלמים רק חלק קטן מהעלות עבורה. השנייה היא מה ששורד אתחול, וזהו האחסון.
עבור הבעיה השנייה, קובץ Markdown פשוט שהסוכן יכול לקרוא ולכתוב עדיף על מסד נתונים וקטורי עבור כמעט כל פרויקט ראשון. תנו לו קובץ אחד, הגדירו לו את הפורמט, והורו לו לקרוא את הקובץ לפני תחילת העבודה ולעדכן אותו כשהוא לומד משהו חדש. אתם מקבלים את מרב התועלת, ותוכלו לפתוח את הקובץ ולראות במה הסוכן שלכם מאמין. פנו לשימוש ב־embeddings ובשליפת מידע (retrieval) רק כאשר ההערות מפסיקות להיכנס לחלון ההקשר, ולא לפני כן.
שלב 5: הלולאה היא המוצר
בשלב זה אתם כבר מסוגלים ליצור סוכן שעובד בזמן שאתם צופים בו. שלב 5 עוסק בהפיכתו לכזה שעובד גם כשאינכם צופים.
ארבע שאלות קובעות אם סוכן שפועל ללא השגחה הוא בטוח להשארת לבדו. מה מפעיל אותו, כדי שלא ירוץ ללא צורך. בתוך איזה גבול הוא פועל, כדי ששגיאה תישאר מצומצמת. כיצד התוצאה מאומתת, שכן סוכן שנותן לעצמו ציון תמיד עובר. איזה תקציב עוצר אותו, במונחים של tokens או זמן שעון. תכנון מכוון של ארבעת אלו הוא המשמעת המתוארת ב-הנדסת לולאות, ומה הגדרה זו מכסה.
התרגיל: קחו את הסוכן משלב 2, תנו לו משימה הדורשת ארבעה או חמישה שלבים, והוסיפו מגבלה קשיחה על מספר האיטרציות. לאחר מכן, הסירו את המגבלה וצפו במה לולאה בלתי מוגבלת עושה לחשבון ה-tokens שלכם. בצעו זאת פעם אחת בתקציב קטן, כדי שלעולם לא תעשו זאת בטעות בתקציב גדול.
שלב 6: בטיחות, סודות ועלויות
שלב זה אינו אופציונלי, והוא מופיע אחרון רק משום שלא ניתן לחוש בסיכון עד שלא בניתם משהו שעובד.
הריצו את ה-agent כמשתמש ללא הרשאות (unprivileged user), לעולם לא כ-root ולעולם לא תחת החשבון האישי שלכם. כך, טווח הנזק הפוטנציאלי מוגבל לספרייה אחת ולא לכל המכונה. הרחיקו אישורים (credentials) מהישג ידו של המודל, שכן כל מידע שנמצא בתוך ה-context window עלול להיחשף החוצה באמצעות קריאה לכלי (tool call). הפתרון הוא שימוש ב-tokens בעלי תוקף קצר המנוהלים מאחורי helper, כפי שמתואר ב-שמירה על סודות מחוץ ל-AI agents שלכם. הציבו תקרה קשיחה להוצאות, כיוון שלולאה שרצה ללא השגחה מחייבת על כל איטרציה ללא פיקוח אנושי. המגבלות וה-batching ששומרים על שפיות התהליך מפורטים ב-בקרת עלויות של AI agent ב-VPS שפועל תמיד.
אם ה-agent שלכם רץ בתוך harness ולא כסקריפט שכתבתם בעצמכם, חלק משלב זה הוא עניין של הגדרות ולא של קוד. המאמר תוספי DeepSeek Harness שכדאי להתקין מכסה חלק ניכר מהנושאים הללו, כולל תקרות תקציב, חוקי הרשאות לכלים וסריקת הזרקות (injection).
נושא העלויות דורש מספר קונקרטי. נכון ליולי 2026, Claude Opus 5 מתמחר $5 למיליון input tokens ו-$25 למיליון output tokens. agent פטפטן ששולח שוב ושוב שיחה מתארכת יכול להעביר כמה מאות אלפי tokens במשימה בודדת. שימוש ב-prompt caching ומודל קטן יותר עבור שלבים שגרתיים משנים את החישוב הזה הרבה יותר מכל שינוי ב-prompt.
הזרקת פקודות (prompt injection) שייכת גם היא לכאן. אם ה-agent שלכם קורא דף אינטרנט, מערכת ניהול משימות או תיבת דואר נכנס, הרי שמי שכתב את הטקסט הזה כותב למעשה הוראות עבור ה-agent שלכם. חיפוש באינטרנט הוא בדרך כלל הכלי שפותח דלת זו לראשונה, והמאמר הפניית agent למופע SearXNG משלכם מציג את החיבורים ואת שטח הפנים להזרקות שנוצר כתוצאה מכך. ההגנה אינה טמונה ב-system prompt חכם יותר, אלא בגבולות הגזרה: agent שאינו מורשה למחוק repository לא יוכל להשתכנע לעשות זאת.
באיזו תוכנית לימודים כדאי לבחור?
בחרו תוכנית לימודים אחת והשלימו אותה, במקום לנסות שש תוכניות במקביל. המאגר ai-agents-for-beginners של Microsoft הוא המקיף ביותר מבין המשאבים החינמיים; מדובר בקורס בן 18 שיעורים שצבר מעל 70,000 כוכבים נכון ליולי 2026, והוא תואם במדויק לשלבים שפורטו לעיל. סיכומים של מאגרי סוכנים (agents) פופולריים מועילים להבנת הקיים בשוק, אך הם פחות יעילים כסילבוס, כיוון שרשימה הממוינת לפי כוכבים משקפת פופולריות ולא סדר לימוד מובנה.
כאשר אתם מחפשים פרויקט מעשי לתרגול, סוכן כתיבת קוד (coding agent) הוא היעד הראשון הטוב ביותר: המשוב מיידי, הכלים ברורים, וקל מאוד לבטל טעויות. המדריך הרצת סוכן AI לכתיבת קוד על גבי VPS מפרט תהליך מקצה לקצה. אם אתם מעדיפים ללמוד מערכות עובדות במקום לבנות מאפס, ההשוואה ב-סוכני ה-AI הטובים ביותר לאירוח עצמי מציגה כיצד פרויקטים שונים פותרים את אותו לולאת עבודה בדרכים שונות.
כמה זמן זה לוקח?
עבור מי שכבר עוסק בתכנות, שלבים 1 ו-2 דורשים ערב אחד. שלב 3 דורש סוף שבוע, שרובו מוקדש לתיאור הכלים ולא לפרוטוקול עצמו. שלבים 4 ו-5 דורשים כמה שבועות של שימוש מעשי, כיוון שלומדים מה הסוכן שוכח רק על ידי צפייה בו שוכח. שלב 6 לעולם לא מסתיים באמת, במובן שכל יכולת חדשה שמעניקים לו פותחת אותו מחדש.
חודשיים של עבודה עקבית בערבים מביאים את רוב האנשים לסוכן עובד, מוגבל ושימושי. אלו שלוקח להם שנה הם בדרך כלל אלו שהמשיכו לקרוא במקום לבנות.
FAQ
האם אני צריך לדעת למידת מכונה כדי לבנות סוכן AI?
לא. בניית סוכן משמעותה קריאה למודל דרך API וחיבור בקשות הכלים שלו לפונקציות ממשיות, וזו תכנות יישומים רגיל. לעולם לא תיגע באימון, בגרדיאנטים או במערכי נתונים. הכישורים שקובעים אם הסוכן שלך יעבוד הם תכנון סכימות לכלים, טיפול בשגיאות והרשאות ב-Linux. תיאוריית למידת מכונה הופכת לרלוונטית רק אם תבחר לבצע fine-tuning למודל, שזה תפקיד שונה עם דרישות קדם שונות.
האם כדאי להתחיל עם framework כמו LangChain או CrewAI?
כתוב לולאה גולמית אחת תחילה, ורק אז אמץ framework. ה-framework מחליף את שלושים השורות בשלב 2 באובייקט הגדרות, וזה נוח ברגע שאתה יודע מה הוא החליף, אך מבלבל לפני כן. כאשר הסוכן שלך מתנהג בצורה לא תקינה, עליך להסיק מסקנות ישירות מרשימת ההודעות ותוצאות הכלים, וזה הרבה יותר קשה אם מעולם לא ראית אותם. לאחר לולאה אחת משלך, ה-framework יחסוך לך זמן במקום להסתיר את המנגנון.
כמה עולה ללמוד על סוכני AI?
פחות ממה שרוב האנשים מצפים, אם תציב גבולות. מפתח API מאוחסן ו-VPS קטן מכסים את כל מה שצריך בששת השלבים האלו. הסיכון האמיתי אינו התעריף השעתי, אלא לולאה ללא הגבלה שמחייבת אותך על כל איטרציה בזמן שאתה ישן. הגדר מגבלת הוצאה קשיחה בחשבון ה-API שלך ביום הראשון, הוסף מגבלת איטרציות לכל לולאה שאתה כותב, והשתמש במודל זול יותר עבור שלבים שגרתיים. הרצת המודל באופן מקומי מסירה את החיוב על ה-tokens ומחליפה אותו בדרישות חומרה.
מה ההבדל בין סוכן AI לבין צ'אטבוט?
צ'אטבוט עונה פעם אחת. סוכן חוזר על מחזור: המודל מבקש כלי, הקוד שלך מריץ אותו, התוצאה חוזרת, והמודל מחליט מה לעשות הלאה. החזרה הזו היא מה שמאפשר לסוכן לסיים משימה בת כמה שלבים, וזו גם הסיבה שסוכנים זקוקים לגבולות שצ'אטבוטים לא צריכים. תשובה שגויה מצ'אטבוט היא פסקה גרועה. תשובה שגויה מסוכן היא פסקה גרועה בתוספת כל מה שהוא עשה בעקבותיה.