6 שלב 2 — Skill-Building

Production Pipelines — בניית צינורות עבודה לפרודקשן

איך לבנות שרשראות עיבוד רב-שלביות שכל שלב מזין את הבא: תכנון stages, Orchestrator Pattern, checkpoint ו-recovery, logging ו-monitoring, ביצוע מקבילי, ודפוסים לדומיינים שונים. אחרי הפרק הזה תדעו לבנות pipelines שרצים באופן אמין, חוזר, ומדיד.

מה יהיה לך בסוף הפרק הזה
מה תוכלו לעשות אחרי הפרק הזה
דרישות קדם
✍ בדיקת סביבה לפני שמתחילים 3 דקות

הריצו את הפקודות הבאות לפי השפה שלכם. אם משהו נכשל — תקנו לפני שממשיכים.

# Python:
python3 --version   # צריך 3.10 ומעלה
python3 -c "import claude_agent_sdk; print('SDK OK')"
echo $ANTHROPIC_API_KEY  # צריך להתחיל ב-sk-ant-

# TypeScript:
node --version   # צריך 18 ומעלה
npx tsx -e "import { Agent } from '@anthropic-ai/claude-agent-sdk'; console.log('SDK OK')"
echo $ANTHROPIC_API_KEY  # צריך להתחיל ב-sk-ant-

async/await תזכורת קצרה: בפרק הזה כל stage הוא פונקציה async שמחזירה Promise. קוראים לה עם await. ב-Python: result = await stage.run(). ב-TypeScript: const result = await stage.run(). אם אתם לא בטוחים — חזרו לפרק 3 (Python) סעיף async או פרק 4 (TypeScript) סעיף async/await.

הפרויקט שלך

בפרק 5 הרכבתם צוותי סוכנים שעובדים במקביל — Lead + Teammates שחוקרים, בונים, וסוקרים בו-זמנית. עכשיו אנחנו עוברים מעבודה מקבילית לשרשראות סדרתיות (Pipelines) — כל שלב בונה על הקודם, עם checkpoint, error handling, ו-monitoring. ההבדל: צוותים מתאימים כשתת-משימות עצמאיות, pipelines מתאימים כשכל שלב מזין את הבא. בפרק 7 ניקח את ה-pipelines שבנינו ונפרוס אותם בDocker, שרתים מרוחקים, וסביבות enterprise — כדי שהם ירוצו באופן אמין ומאובטח בייצור.

מילון מונחים — מושגים חדשים בפרק
מונח (English)תרגוםהסבר
Production Pipelineצינור עבודה לפרודקשןשרשרת עיבוד רב-שלבית אוטומטית — פלט של שלב הופך לקלט של הבא, עם error handling ו-monitoring
Orchestratorמנצח / מתאםהקוד שלכם (Python/TypeScript) שמנהל את ה-pipeline: מריץ stages בסדר, מעביר data, מטפל בשגיאות
Stageשלביחידת עבודה בודדת ב-pipeline: קלט מוגדר, agent config, פלט, קריטריון הצלחה, פעולה בכישלון
Checkpointנקודת שמירהשמירת state של ה-pipeline אחרי כל stage מוצלח — מאפשר resume בלי התחלה מחדש
Error Matrixמטריצת שגיאותטבלה שממפה לכל stage ולכל סוג שגיאה את אסטרטגיית ה-recovery: retry, skip, abort, escalate
Prompt Versioningניהול גרסאות Promptsשמירת prompts כקבצים נפרדים עם גרסאות (v1.md, v2.md) במקום inline — מאפשר השוואה ו-rollback
Structured Loggingרישום מובנהלוגים בפורמט קבוע: start_time, end_time, tokens, cost, model, outcome — לא טקסט חופשי
Backpressureלחץ נגדידפוס שמאט את קצב הקלט כשהפלט מיוצר מהר מדי ל-downstream — מונע הצפה
מתחיל 15 דקות מושג חינם

מה זה Pipeline ולמה הוא שונה

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

ההבדל מ-script פשוט (פרק 1) ומצוות (פרק 5):

ההבדל הקריטי מ-ad-hoc automation: pipelines מתוכננים מראש עם שלבים מוגדרים, error handling, logging, ותוכננו לרוץ באופן אמין וחוזר — שוב ושוב, באותה איכות.

מתי צריך pipeline ולא script:

טעות נפוצה: בניית pipeline כ-prompt אחד ארוך

מה הטעות: לכתוב prompt אחד ענק ל-Claude: "תחקור את הנושא, תכתוב outline, תכתוב draft, תערוך, ותפרסם".

למה זה מפתה: פשוט יותר — שורה אחת, בלי orchestrator, בלי stages.

מה לעשות במקום: כל stage נפרד עם input/output מוגדר. Single-prompt pipelines נשברים ב-scale: אי אפשר לדבג stage ספציפי, אי אפשר לעשות retry לשלב בודד, אי אפשר לחסוך עלות של שלבים שכבר הצליחו, ואי אפשר להחליף model לשלב ספציפי.

עשו עכשיו 3 דקות

חשבו על תהליך שאתם עושים שוב ושוב בפרויקט (deploy, code review, report generation, content creation). כתבו את השלבים שלו ברשימה ממוספרת. כמה שלבים יצאו? אם 3+, יש לכם pipeline פוטנציאלי.

מסגרת החלטה: Pipeline vs Team vs Script
קריטריוןScriptPipelineTeam
מספר קריאות ל-Claude13-10 (סדרתי)3-5 (מקבילי)
תלויות בין שלביםאיןסדרתיות — כל שלב תלוי בקודםאין — עצמאיים
Error recoveryאין — הכל או כלוםretry/skip/abort per stagepartial success
Monitoringבסיסיper-stage logging, cost trackingper-teammate tracking
הכי טוב ל...one-off tasksrepeatable multi-step workflowsparallel independent tasks
בינוני 20 דקות אסטרטגיה חינם

תכנון Pipeline רב-שלבי

התחילו מהפלט. לפני שחושבים על שלבים — הגדירו בדיוק מה ה-pipeline מייצר. פיצ'ר מפורס? מאמר מפורסם? דוח בדיקה? מהפלט עובדים אחורה: מה השלב האחרון? מה הוא צריך כקלט? מי מייצר את הקלט הזה?

ה-Stage Specification Template: לכל stage צריך להגדיר 6 שדות:

שדהתיאורדוגמה
Nameשם השלב"Research Stage"
Inputמה מקבל מהשלב הקודםtopic string + config JSON
Agent Configmodel, tools, max_turns, instructionsOpus, WebSearch+Read, 20 turns
Outputמה מייצר לשלב הבאresearch-bundle.json
Success Criteriaאיך יודעים שעבדJSON exists, 5+ sources
Failure Actionמה עושים אם נכשלretry with different queries

כמה stages? 5-8 stages זה ה-sweet spot. פחות מ-3? script מספיק. יותר מ-10? חלקו ל-sub-pipelines.

עשו עכשיו 5 דקות

קחו את התהליך שזיהיתם. הגדירו לכל שלב את 6 השדות של Stage Specification Template: Name, Input, Agent Config, Output, Success Criteria, Failure Action. כתבו את זה כטבלה.

עשו עכשיו 2 דקות

ספרו את השלבים. פחות מ-3: האם script מספיק? יותר מ-10: איפה אפשר לאחד? סמנו שלבים שיכולים לרוץ במקביל (אין תלות ביניהם).

בינוני 20 דקות הקמה חינם

הדפוס Orchestrator

ה-Orchestrator (מנצח) הוא הקוד שלכם שמנהל את ה-pipeline — הוא לא Claude. הוא קוד Python או TypeScript שמריץ stages בסדר, מעביר data ביניהם, מטפל בשגיאות, ומנהל logging.

עיקרון מפתח: Separation of Concerns.

ה-Orchestrator לעולם לא קורא ל-Claude ישירות — הוא מאציל ל-stage objects שמכמסים את הלוגיקה.

Python Orchestrator — skeleton:

import json
from claude_agent_sdk import Agent

class Stage:
    def __init__(self, name, model, prompt_file, tools, max_turns=10):
        self.name = name
        self.model = model
        self.prompt_file = prompt_file
        self.tools = tools
        self.max_turns = max_turns

    def execute(self, input_data):
        prompt = open(self.prompt_file).read()
        prompt = prompt.replace("{INPUT}", json.dumps(input_data))
        agent = Agent(model=self.model, max_turns=self.max_turns)
        result = agent.run(prompt)
        return json.loads(result.text)

class Orchestrator:
    def __init__(self, stages, checkpoint_dir="./checkpoints"):
        self.stages = stages
        self.checkpoint_dir = checkpoint_dir

    def run(self, initial_input):
        data = initial_input
        for i, stage in enumerate(self.stages):
            print(f"[Stage {i+1}/{len(self.stages)}] {stage.name}...")
            data = stage.execute(data)
            self._save_checkpoint(i, stage.name, data)
            print(f"  Done: {stage.name}")
        return data

    def _save_checkpoint(self, index, name, data):
        path = f"{self.checkpoint_dir}/stage_{index}_{name}.json"
        with open(path, 'w') as f:
            json.dump(data, f, ensure_ascii=False, indent=2)

TypeScript Orchestrator — skeleton:

import { Agent } from '@anthropic-ai/claude-agent-sdk';
import fs from 'fs/promises';

interface StageConfig {
  name: string;
  model: string;
  promptFile: string;
  maxTurns?: number;
}

async function runPipeline(stages: StageConfig[], initialInput: any) {
  let data = initialInput;
  for (let i = 0; i < stages.length; i++) {
    const stage = stages[i];
    console.log(`[Stage ${i+1}/${stages.length}] ${stage.name}...`);

    const prompt = await fs.readFile(stage.promptFile, 'utf-8');
    const agent = new Agent({ model: stage.model, maxTurns: stage.maxTurns ?? 10 });
    const result = await agent.run(prompt.replace('{INPUT}', JSON.stringify(data)));

    data = JSON.parse(result.text);
    await fs.writeFile(
      `./checkpoints/stage_${i}_${stage.name}.json`,
      JSON.stringify(data, null, 2)
    );
    console.log(`  Done: ${stage.name}`);
  }
  return data;
}
עשו עכשיו 5 דקות

העתיקו את ה-skeleton (Python או TypeScript) והתאימו: שנו רשימת stages, הגדירו model לכל stage, צרו prompt ראשוני לכל stage. הריצו עם 2 stages פשוטים כדי לוודא שהזרימה עובדת.

בינוני 15 דקות הקמה חינם

תקשורת בין שלבים וניהול Data Flow

שלבים ב-pipeline צריכים להעביר data ביניהם. שלוש גישות:

1. File-based (דיסק): Stage A כותב output לקובץ, Stage B קורא. פשוט, debuggable, אבל איטי ל-data גדול.

2. In-memory (זיכרון): Stage A מחזיר dict/object, ה-orchestrator מעביר ל-Stage B. מהיר, אבל אובד ב-crash.

3. Hybrid (שניהם): data עובר in-memory, וכל stage גם כותב checkpoint לדיסק. זו הגישה המומלצת.

ה-Checkpoint Pattern: אחרי כל stage מוצלח, שמרו state לדיסק. Crash ב-stage 6 = resume מ-stage 6, לא מ-1.

טעות נפוצה: לא לעשות checkpoint

מה הטעות: להריץ pipeline של 7 stages בלי שמירת state. Stage 6 נכשל — חוזרים ל-stage 1.

למה זה מפתה: "למה לבזבז זמן על כתיבה לדיסק?" — כי ב-crash אחד אתם מפסידים $5-8 ו-20 דקות.

מה לעשות במקום: תמיד checkpoint. 10 שורות קוד חוסכות שעות ודולרים.

Resume Logic — דוגמה:

def run_with_resume(self, initial_input):
    last_checkpoint = self._find_last_checkpoint()
    if last_checkpoint:
        start_index = last_checkpoint['stage_index'] + 1
        data = last_checkpoint['data']
        print(f"Resuming from stage {start_index + 1}...")
    else:
        start_index = 0
        data = initial_input

    for i in range(start_index, len(self.stages)):
        stage = self.stages[i]
        data = stage.execute(data)
        self._save_checkpoint(i, stage.name, data)
    return data

Data Validation at Boundaries: לפני שמעבירים output מ-stage A ל-stage B, ולדו שהוא בפורמט הנכון. schema mismatch ב-stage 5 קשה לדבג — עדיף לתפוס מיד אחרי stage A.

עשו עכשיו 5 דקות

הוסיפו checkpoint ל-orchestrator: שמירת state לקובץ JSON אחרי כל stage. הוסיפו resume logic שבודק checkpoints. הריצו, עצרו באמצע (Ctrl+C), הריצו שוב — וודאו שממשיך מהנקודה הנכונה.

בינוני 15 דקות אסטרטגיה חינם

טיפול בשגיאות ו-Recovery

ב-pipeline, שגיאות הן עניין של "מתי", לא "האם". API timeouts, rate limits, agent confusion, malformed output — כל אלה יקרו.

5 אסטרטגיות Recovery:

  1. Retry Same: שגיאות חולפות (API timeout, rate limit 429) — נסו שוב עם exponential backoff. 3 ניסיונות מקסימום.
  2. Retry Different: הגישה נכשלה — prompt שונה או model שונה. אם Sonnet נכשל, נסו Opus.
  3. Skip: שלבים אופציונליים (polish, formatting) — pipeline ממשיך עם תוצאה בת-שימוש.
  4. Abort: שלבים קריטיים (validation, testing) — עצרו. אל תמשיכו עם data שלא עבר בדיקה.
  5. Human Escalation: שגיאות לא ברורות — עצרו, שלחו notification, המתינו להחלטה אנושית.

ה-Error Matrix: לפני שמריצים, כתבו טבלה שממפה לכל stage את ה-strategy לכל סוג שגיאה:

StageAPI TimeoutBad OutputMissing Data
Researchretry x3retry different promptabort
Writeretry x3retry with more contextabort
Editretry x2skipskip
Validateretry x3abortabort
מסגרת החלטה: The Recovery Ladder — 5 שלבי טיפול בשגיאות
  1. Retry Same — אותו prompt, אותו model. לשגיאות חולפות.
  2. Retry Different — prompt שונה, model חזק יותר. כשהגישה נכשלה.
  3. Skip Stage — דלגו על שלב אופציונלי. ה-pipeline ממשיך.
  4. Pause for Human — עצרו, notification, המתינו להחלטה.
  5. Abort Pipeline — עצרו הכל. checkpoint. דווחו מה נכשל.

תמיד התחילו מלמעלה ורדו: retry קודם, abort רק כמוצא אחרון.

עשו עכשיו 5 דקות

כתבו Error Matrix ל-pipeline שלכם: לכל stage, מפו 2-3 שגיאות אפשריות ואת ה-strategy לכל אחת. שמרו — היא תנחה את ה-error handling code.

בינוני 10 דקות הקמה חינם

Versioning ו-Rollback

Pipelines משתנים: prompts מתעדכנים, models חדשים יוצאים, stages מתווספים. בלי versioning, אי אפשר לדעת למה התוצאה השתנתה.

3 סוגי versioning:

1. Pipeline Versioning: שינוי ב-orchestrator = commit + tag (v1.0, v1.1). כל output מסומן באיזה version ייצר אותו.

2. Prompt Versioning: Prompts משתנים לעיתים קרובות. שמרו כקבצים נפרדים:

prompts/
  research-v1.md
  research-v2.md
  write-v1.md
  write-v2.md

לעולם אל תמחקו גרסה ישנה. אם v2 לא עובד — חזרו ל-v1.

3. Output Versioning: כל ריצה מייצרת output בתיקייה עם timestamp:

output/
  2026-03-31_14-30_v1.2/
    research.json
    draft.md
    final.html
    pipeline-log.json
טעות נפוצה: עריכת prompts ישירות בלי versioning

מה הטעות: לשנות prompt inline, להריץ, לראות תוצאה גרועה, ולא לזכור מה היה לפני.

למה זה מפתה: מהיר. "רק שינוי קטן."

מה לעשות במקום: קבצים נפרדים עם גרסאות. כל שינוי = קובץ חדש. אל תמחקו ישנים.

A/B Testing: הריצו גרסה ישנה וחדשה על אותו input, השוו quality. ככה תדעו אם שינוי שיפר או הרע.

עשו עכשיו 4 דקות

צרו תיקיית prompts/. העבירו prompt של stage אחד ל-prompts/stage1-v1.md. שנו את ה-orchestrator לקרוא משם. שנו prompt, שמרו כ-v2, הריצו שניהם — השוו.

בינוני 15 דקות הקמה חינם

Logging ו-Monitoring

Pipeline בלי logging הוא כמו מכונית בלי dashboard — רצה, אבל אתם לא יודעים כמה דלק נשאר.

Structured Logging — דוגמה:

{
  "stage": "research",
  "start_time": "2026-03-31T14:30:00Z",
  "end_time": "2026-03-31T14:32:15Z",
  "duration_seconds": 135,
  "model": "claude-opus-4-6",
  "tokens_input": 2500,
  "tokens_output": 8200,
  "cost_usd": 0.45,
  "status": "success",
  "output_summary": "Found 8 sources, 15 key facts"
}

Log Levels:

Pipeline Dashboard: דף HTML פשוט: ריצות אחרונות, timing per stage, total cost, success rate. JSON file + HTML table מספיק להתחלה.

Alerting: thresholds שמפעילים alerts:

Cost Tracking: צברו עלויות per stage, per run, per day. זהו stages יקרים — אולי אפשר להוריד model (Opus → Sonnet) בלי לפגוע באיכות.

עשו עכשיו 5 דקות

הוסיפו structured logging ל-stage אחד: רשמו start_time, end_time, duration, model, tokens, cost, status. הריצו ובדקו שהלוג JSON נכתב.

מתקדם 15 דקות הקמה בתשלום

ביצוע שלבים במקביל

לא כל ה-stages חייבים לרוץ ברצף. אם stage B לא תלוי ב-output של stage A — הם יכולים לרוץ במקביל.

Python:

import asyncio

async def run_parallel(stage_a, stage_b, input_data):
    result_a, result_b = await asyncio.gather(
        stage_a.execute_async(input_data),
        stage_b.execute_async(input_data)
    )
    return {"outline": result_a, "images": result_b}

TypeScript:

const [resultA, resultB] = await Promise.all([
  stageA.execute(inputData),
  stageB.execute(inputData)
]);
const merged = { outline: resultA, images: resultB };
טעות נפוצה: stages מקביליים בלי מודעות ל-rate limits

מה הטעות: 5 stages במקביל = 5 API calls בו-זמנית — ושגיאות 429 כשחוצים rate limit.

למה זה מפתה: "יותר מקבילי = יותר מהיר" — נכון רק עד גבול ה-rate limit.

מה לעשות במקום: בדקו rate limits לפני. Semaphore / concurrency limiter. התחילו 2-3 במקביל.

הכלל: Stage B יכול להתחיל בלי output של A? הריצו במקביל. B חייב A? סדרתי. B צריך חלק מ-A? פצלו.

עשו עכשיו 5 דקות

זהו 2 stages שלא תלויים. הריצו במקביל עם asyncio.gather או Promise.all. מדדו: כמה זמן חסכתם?

מתקדם 20 דקות ניתוח חינם

מקרה מבחן: Pipeline תוכן 7-שלבי

זה pipeline אמיתי שבנה את הקורס שאתם קוראים.

nVision Academy משתמשת ב-7 שלבים ליצירת פרקים חינוכיים:

StageAgentModelInputOutputTime
1. Researchtopic-researcherOpussyllabus entryresearch.json3-5 min
2. Planchapter-plannerOpusresearch + syllabusplan.json2-3 min
3. Writecontent-writerOpusplan + Gold Standardchapter.html + manifest8-15 min
4. Structurestructure-reviewerSonnetmanifest.jsonstructure-review.json1 min
5. Fact Checkfact-checkerSonnetgrep claimsfact-check.json3-5 min
6. Value Auditvalue-auditOpus500-word samplevalue-audit.json2-3 min
7. Publish Gatepublish-gateSonnetall eval JSONspublish-decision.json<1 min

ביצועים: 7,500-10,000 מילים | 15-25 דקות | $3-8 per chapter | 25-30/30 Gold Standard

עקרונות עיצוב מרכזיים:

חיסכון טוקנים metadata-first: ~2,000 tokens per chapter evaluation vs ~15,000-25,000 for full reads. 10% tokens for 95% coverage.

עשו עכשיו 4 דקות

זהו 3 עקרונות מה-pipeline למעלה שתוכלו ליישם אצלכם: (1) metadata-first, (2) parallel evaluation, (3) model specialization. כתבו איך כל עיקרון יתורגם ל-pipeline שלכם.

בינוני 15 דקות אסטרטגיה חינם

דפוסי Pipeline לדומיינים שונים

Pipelines מתאימים לכל דומיין. 5 דפוסים מרכזיים:

1. Code Generation: Requirements → Design → Implementation → Testing → Review → Documentation → Deploy

2. Data Processing: Ingest → Validate → Clean → Transform → Analyze → Report → Archive

3. DevOps: Monitor → Detect → Diagnose → Fix → Test → Deploy → Verify

4. Content Marketing: Ideation → Research → Draft → Edit → SEO → Publish → Promote

5. Customer Support: Receive → Classify → Research → Draft → Review → Send → Follow up

מסגרת החלטה: Universal Pipeline Template

Input → Validate → Process (1-3 stages) → Review → Output → Archive

כל דומיין מתאים את ה-template: ה-Process stages משתנים, ה-Review מותאם, אבל המבנה — Input, Process, Review, Output — אוניברסלי.

טיפ: התחילו עם 3 stages (Process → Review → Output) והוסיפו רק כשאיכות דורשת. Over-engineering של pipelines היא טעות #1.

עשו עכשיו 4 דקות

בחרו דומיין. התאימו Universal Pipeline Template: Input → Validate → Process → Review → Output → Archive. מלאו Stage Specification לכל stage.

תרגיל: בניית Pipeline Orchestrator מלא 30 דקות
  1. הגדירו 4-5 stages עם Stage Specification Template.
  2. כתבו orchestrator ב-Python או TypeScript — skeleton מסעיף 6.3 כבסיס.
  3. הוסיפו checkpoint: שמירת state, resume logic.
  4. הוסיפו error handling: retry x3 ל-API, abort ל-validation, skip לאופציונליים.
  5. הוסיפו structured logging: timing, tokens, cost, status per stage.
  6. הריצו end-to-end על input אמיתי. בדקו checkpoint, error handling, logs.

פלט: Pipeline orchestrator פעיל עם checkpoints, error handling, ו-logging.

תרגיל: Versioning ו-Monitoring 25 דקות
  1. צרו prompts/ עם version files לכל stage.
  2. הוסיפו pipeline version tag ל-output directory.
  3. בנו dashboard HTML פשוט: runs, timing, cost, success rate.
  4. הגדירו alert threshold: cost > $X או time > Y minutes.
  5. הריצו 3 פעמים, בדקו dashboard.

פלט: Pipeline עם prompt versioning, output versioning, monitoring dashboard.

תרגיל: Pipeline Domain-Specific 30 דקות
  1. בחרו domain: code generation, data, content, או DevOps.
  2. התאימו Universal Pipeline Template — Stage Specification לכל stage.
  3. הגדירו agent config per stage: model, tools, max_turns.
  4. כתבו prompt templates ושמרו ב-prompts/ כ-v1.
  5. הריצו end-to-end על input אמיתי.
  6. תעדו: timing, cost, quality. איפה יש שיפור?

פלט: Domain-specific pipeline עם documentation ו-prompt templates.

תרגיל: שלבים מקביליים 20 דקות
  1. זהו 2+ stages עצמאיים.
  2. ממשו parallel execution עם asyncio.gather / Promise.all.
  3. הוסיפו concurrency limiter (max N parallel calls).
  4. מדדו: parallel vs sequential timing ועלות.
  5. תעדו: timing comparison, rate limit behavior.

פלט: Pipeline עם parallel stages, מדידת ביצועים.

שגרת עבודה — Production Pipelines

בנוסף לשגרה מפרקים 1-5:

תדירותמשימה
יומיתבדקו pipeline logs: הצלחות, כישלונות, עלויות. חפשו anomalies.
יומיתבדקו checkpoints: pipelines שנעצרו באמצע ומחכים ל-resume?
שבועיתסקרו cost per stage: stage שעלה פתאום? מודל יקר מדי?
שבועיתעדכנו prompt versions אם נדרש — v(N+1), אל תמחקו ישנים
שבועיתA/B test: השוו output של prompt v(N) מול v(N+1)
חודשיתסקרו Error Matrix: stages חדשים שאין להם error strategy?
חודשיתבדקו SDK version updates — שדרוג יכול לשפר או לשבור
אם אתם עושים רק דבר אחד מהפרק הזה 15 דקות

בנו Pipeline Orchestrator מינימלי: 3 stages, checkpoint after each, retry on failure. skeleton מסעיף 6.3, checkpoint מסעיף 6.4, הריצו end-to-end. ברגע שיש orchestrator פעיל — כל השאר הוא הרחבה.

בדוק את עצמך — 5 שאלות
  1. למה pipeline עדיף על single-prompt לתהליכים רב-שלביים? (רמז: debugging, retry, cost, model selection per stage)
  2. מה ההבדל בין Orchestrator ל-Agent, ולמה ההפרדה חשובה? (רמז: separation of concerns)
  3. למה checkpoint קריטי, ומה קורה בלעדיו? (רמז: crash ב-stage 6 מ-7)
  4. מתי Skip ומתי Abort? (רמז: שלב אופציונלי vs שלב קריטי)
  5. למה Prompt Versioning חשוב יותר מ-Code Versioning ב-pipelines? (רמז: prompts משתנים לעיתים קרובות יותר)

4 מתוך 5 נכונות = עברתם.

סיכום הפרק

Production Pipelines הם הדרך להפוך אוטומציה חד-פעמית למערכת אמינה, חוזרת, ומדידה. ה-Orchestrator שלכם מנהל את הזרימה — stages בסדר, checkpoints, error handling, monitoring. כל stage הוא יחידה עצמאית עם input/output מוגדר, agent config ייעודי, ו-error strategy. ה-key insight: pipelines הם לא "scripts ברצף" — הם מערכת עם recovery, versioning, monitoring, ו-cost control שרצה שוב ושוב באותה איכות. בפרק הבא ניקח את ה-pipelines לproduction אמיתי: Docker, שרתים מרוחקים, enterprise.

צ'קליסט סיום פרק