TOOLNEW

לבנות AI Agent מאפס עם Claude API - בלי n8n ובלי Zapier

מדריך למפתחים: לבנות סוכן AI פשוט ישירות מול Claude API עם tool use, כולל מחירים רשמיים ולולאת הסוכן המינימלית.

מערכת בינה AI טופסוכני AI ואוטומציה3 בספטמבר 20263 min1 sources
מחשב נייד פתוח על שולחן עבודה בלילה עם חלון קוד מטושטש, ליד ספל קפה וספר טכני פתוח
מחשב נייד פתוח על שולחן עבודה בלילה עם חלון קוד מטושטש, ליד ספל קפה וספר טכני פתוח

הבדל מרכזי בין "לחבר AI לעסק" לבין "לבנות סוכן AI" הוא מי שולט בלולאה: בפלטפורמת no-code כמו n8n או Zapier, הפלטפורמה מריצה את התהליך ואתם ממלאים תיבות. בסוכן שבנוי מול API ישירות, אתם כותבים את הלולאה בעצמכם - וזה נותן שליטה על כל החלטה, אבל גם דורש להבין מה בעצם קורה מתחת למכסה.

מה זה בעצם "סוכן"

סוכן AI, במובן הטכני הפשוט ביותר, הוא מודל שפה שרץ בלולאה: מקבל בקשה, מחליט אם הוא צריך "כלי" (tool) כדי להשלים אותה - קריאת קובץ, חיפוש באינטרנט, קריאה ל-API חיצוני - מריץ את הכלי, מקבל תוצאה, ומחליט אם צריך עוד שלב או שהוא מוכן לענות. ההבדל בין "צ'אטבוט" לסוכן הוא בדיוק היכולת הזו לבחור כלים ולפעול בכמה שלבים בלי שמישהו מנחה כל צעד בנפרד.

הלולאה המינימלית

מודל Claude תומך ב-tool use דרך ה-API הרגיל: מגדירים רשימת כלים בבקשה, המודל מחליט מתי להשתמש בהם, ואתם מריצים את הקוד בפועל ומחזירים תוצאה. הלולאה הבסיסית ביותר, ב-TypeScript, נראית כך:

import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();

const tools: Anthropic.Tool[] = [{
  name: "get_weather",
  description: "מחזיר את מזג האוויר הנוכחי לעיר נתונה",
  input_schema: {
    type: "object",
    properties: { city: { type: "string" } },
    required: ["city"],
  },
}];

let messages: Anthropic.MessageParam[] = [
  { role: "user", content: "מה מזג האוויר בתל אביב?" },
];

let response = await client.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  tools,
  messages,
});

while (response.stop_reason === "tool_use") {
  const toolUse = response.content.find((b) => b.type === "tool_use")!;
  const result = await runToolInCode(toolUse.name, toolUse.input); // הפונקציה שלכם
  messages.push({ role: "assistant", content: response.content });
  messages.push({
    role: "user",
    content: [{ type: "tool_result", tool_use_id: toolUse.id, content: result }],
  });
  response = await client.messages.create({ model: "claude-sonnet-5", max_tokens: 1024, tools, messages });
}

זו בדיוק הלולאה ש-n8n או Zapier מריצים מאחורי הקלעים כשמגדירים "AI Agent" בממשק שלהם - ההבדל הוא שכאן אתם קובעים בדיוק אילו כלים קיימים, מה קורה כשכלי נכשל, ומתי לעצור.

עלות בפועל

לפי התיעוד הרשמי של Anthropic, Claude Sonnet 5 עולה 2 דולר למיליון טוקן קלט ו-10 דולר למיליון טוקן פלט - זה המודל המומלץ לרוב משימות הפרודקשן. Claude Opus 5, המודל החזק והיקר יותר, עולה 5 דולר קלט ו-25 דולר פלט למיליון טוקן, ומתאים למשימות עם היגיון מורכב יותר. חשוב לדעת: כל בקשה עם כלים מוסיפה תקורת טוקנים קבועה - אצל Sonnet 5 זה כ-354 טוקן נוספים כשה-tool_choice הוא "auto", גם לפני שהמודל בכלל השתמש בכלי.

לולאת הסוכןשליחת בקשהtool_use?מריצים כליבקוד שלכםend_turn - סיום
לולאת ה-tool use הבסיסית: קריאה, בדיקת stop_reason, הרצת כלי, וחוזר חלילה עד סיום

איפה זה נשבר

הלולאה הידנית לא מטפלת לבד בכמה דברים קריטיים: שגיאה בכלי (חובה להחזיר tool_result עם is_error: true, לא סתם לזרוק חריגה), לולאה אינסופית אם המודל ממשיך לבקש כלים בלי סוף (כדאי להגביל מספר איטרציות), והיסטוריית שיחה שגדלה בכל סבב - שיחה ארוכה עם הרבה קריאות כלי צוברת טוקנים מהר. עבור לולאה שכבר כוללת טיפול בשגיאות, retry ו-hooks לאישור לפני הרצת כלי, יש ב-SDK הרשמי "Tool Runner" (client.beta.messages.toolRunner) שחוסך כתיבת הלולאה ידנית - שווה לבדוק לפני שממציאים מחדש את כל הטיפול בקצוות.

מקרה קצה: הכלי מחזיר תשובה חלקית

כלי כמו קריאה מ-API חיצוני יכול להצליח טכנית אבל להחזיר נתונים חלקיים - למשל שירות מזג אוויר שמחזיר תחזית בלי עדכון בזמן אמת בגלל תקלה זמנית אצל הספק. הטעות הנפוצה היא להתייחס לזה כהצלחה רגילה ולהחזיר tool_result תקין - המודל אז מציג את הנתון החלקי כאילו הוא מלא, בלי לציין שהוא לא עדכני. הפתרון: כשהכלי שלכם מזהה שהתשובה חלקית, להוסיף את זה כמידע מפורש בתוך תוכן ה-tool_result עצמו ("הנתון הזה מלפני שעתיים, לא בזמן אמת") - כך המודל מקבל את המידע הזה ויכול לשקף אותו למשתמש, במקום שהוא ינחש שהנתון עדכני.

מתי כן עדיף n8n או Zapier

לא כל משימה מצדיקה כתיבת לולאה ידנית. אם המשימה היא בעיקר חיבור בין שירותים קיימים - Gmail, Slack, Google Sheets - בלי היגיון מותאם מורכב, פלטפורמת no-code חוסכת זמן פיתוח משמעותי ומתחזקת את הקוד בשבילכם. הקוד הישיר מול Claude API משתלם כשצריך שליטה על התנהגות שפלטפורמת no-code לא חושפת - למשל טיפול מותאם בשגיאות כלי ספציפי, לוגיקת retry מורכבת, או שילוב עם מערכת פנימית שאין לה חיבור מוכן.

מה לנסות עכשיו

להתחיל עם כלי אחד בודד ופשוט (כמו הדוגמה למעלה) ולוודא שהלולאה הבסיסית עובדת מקצה לקצה, לפני שמוסיפים כלים נוספים או הופכים את זה למורכב יותר. Claude Sonnet 5 מספיק לרוב המשימות האלה במחיר נמוך יחסית - Opus שמור למקרים שבהם ההיגיון שהסוכן צריך לבצע באמת מורכב ומרובה שלבים.

שאלות נפוצות

צריך Zapier או n8n כדי לבנות סוכן AI?

לא. פלטפורמות no-code מתאימות כשרוצים לחבר שירותים מוכנים בלי לכתוב קוד. סוכן שבנוי ישירות מול Claude API נותן שליטה מלאה על הכלים והלוגיקה, אבל דורש כתיבת קוד.

כמה עולה להריץ סוכן AI פשוט עם Claude?

תלוי במודל ובכמות הטוקנים. לפי התיעוד הרשמי של Anthropic, Claude Sonnet 5 עולה 2 דולר למיליון טוקן קלט ו-10 דולר למיליון טוקן פלט - משימה קטנה עם כמה קריאות כלי לרוב עולה שברירי סנט בודדים.

SOURCES

  1. Anthropic - Pricing (platform.claude.com) · נבדק 3 בספטמבר 2026

קשור לזה