Το prompt chaining σπάει πολύπλοκες εργασίες σε ακολουθίες απλούστερων prompts, όπου η έξοδος κάθε βήματος τροφοδοτεί το επόμενο. Αυτή η τεχνική βελτιώνει δραματικά την αξιοπιστία και επιτρέπει εξελιγμένες ροές εργασίας που θα ήταν αδύνατες με ένα μόνο prompt.

<Callout type="tip" title="Σκέψου Γραμμές Συναρμολόγησης">
Όπως ακριβώς μια εργοστασιακή γραμμή συναρμολόγησης σπάει την κατασκευή σε εξειδικευμένους σταθμούς, το prompt chaining σπάει τις εργασίες AI σε εξειδικευμένα βήματα. Κάθε βήμα κάνει ένα πράγμα καλά, και το συνδυασμένο αποτέλεσμα είναι πολύ καλύτερο από το να προσπαθείς να κάνεις τα πάντα ταυτόχρονα.
</Callout>

## Γιατί να Αλυσιδώνεις Prompts;

Τα μεμονωμένα prompts δυσκολεύονται με πολύπλοκες εργασίες επειδή προσπαθούν να κάνουν πολλά ταυτόχρονα. Το AI πρέπει να κατανοεί, να αναλύει, να σχεδιάζει, και να δημιουργεί ταυτόχρονα, κάτι που οδηγεί σε σφάλματα και ασυνέπειες.

<div className="my-6 grid md:grid-cols-2 gap-4">
  <div className="border rounded-lg bg-red-50/50 dark:bg-red-950/20 border-red-200 dark:border-red-900">
    <p className="text-sm font-semibold text-red-700 dark:text-red-400 px-4 pt-3 flex items-center gap-2 m-0!"><IconX className="h-4 w-4" /> Δυσκολίες Μεμονωμένου Prompt</p>
    <div className="text-sm p-4 pt-2 space-y-1">
      <p className="m-0!">Η συλλογιστική πολλών βημάτων μπερδεύεται</p>
      <p className="m-0!">Διαφορετικοί "τρόποι" σκέψης συγκρούονται</p>
      <p className="m-0!">Πολύπλοκες έξοδοι στερούνται συνέπειας</p>
      <p className="m-0!">Καμία ευκαιρία για έλεγχο ποιότητας</p>
    </div>
  </div>
  <div className="border rounded-lg bg-green-50/50 dark:bg-green-950/20 border-green-200 dark:border-green-900">
    <p className="text-sm font-semibold text-green-700 dark:text-green-400 px-4 pt-3 flex items-center gap-2 m-0!"><IconCheck className="h-4 w-4" /> Η Αλυσίδωση Λύνει Αυτό</p>
    <div className="text-sm p-4 pt-2 space-y-1">
      <p className="m-0!">Κάθε βήμα εστιάζει σε μία εργασία</p>
      <p className="m-0!">Εξειδικευμένα prompts για κάθε τρόπο</p>
      <p className="m-0!">Επικύρωση μεταξύ βημάτων</p>
      <p className="m-0!">Debug και βελτίωση μεμονωμένων βημάτων</p>
    </div>
  </div>
</div>

## Βασικό Μοτίβο Αλυσίδωσης

Η απλούστερη αλυσίδα περνά την έξοδο από ένα prompt απευθείας στο επόμενο. Κάθε βήμα έχει σαφή, εστιασμένο σκοπό.

<div className="my-6 flex items-center justify-center gap-3 p-6 bg-muted/30 rounded-lg overflow-x-auto">
  <div className="flex flex-col items-center">
    <div className="px-4 py-3 bg-blue-100 dark:bg-blue-900/50 border border-blue-200 dark:border-blue-800 rounded-lg text-center">
      <p className="text-sm font-medium text-blue-700 dark:text-blue-300 m-0!">Prompt 1</p>
      <p className="text-xs text-blue-600 dark:text-blue-400 m-0!">(Εξαγωγή)</p>
    </div>
    <p className="text-xs text-muted-foreground mt-1 m-0!">Είσοδος</p>
  </div>
  <div className="text-blue-400 dark:text-blue-500">→</div>
  <div className="flex flex-col items-center">
    <div className="px-4 py-3 bg-purple-100 dark:bg-purple-900/50 border border-purple-200 dark:border-purple-800 rounded-lg text-center">
      <p className="text-sm font-medium text-purple-700 dark:text-purple-300 m-0!">Prompt 2</p>
      <p className="text-xs text-purple-600 dark:text-purple-400 m-0!">(Ανάλυση)</p>
    </div>
    <p className="text-xs text-muted-foreground mt-1 m-0!">Ενδιάμεσο</p>
  </div>
  <div className="text-purple-400 dark:text-purple-500">→</div>
  <div className="flex flex-col items-center">
    <div className="px-4 py-3 bg-green-100 dark:bg-green-900/50 border border-green-200 dark:border-green-800 rounded-lg text-center">
      <p className="text-sm font-medium text-green-700 dark:text-green-300 m-0!">Prompt 3</p>
      <p className="text-xs text-green-600 dark:text-green-400 m-0!">(Δημιουργία)</p>
    </div>
    <p className="text-xs text-muted-foreground mt-1 m-0!">Έξοδος</p>
  </div>
</div>

<Callout type="info" title="Το Μοτίβο ETG">
Το πιο κοινό μοτίβο αλυσίδας είναι **Εξαγωγή → Μετασχηματισμός → Δημιουργία**. Πρώτα εξάγεις ακατέργαστα δεδομένα, μετά τα αναδιαμορφώνεις για τον σκοπό σου, μετά δημιουργείς την τελική έξοδο. Αυτό το μοτίβο λειτουργεί για σχεδόν κάθε εργασία περιεχομένου.
</Callout>

## Τύποι Αλυσίδων

Διαφορετικές εργασίες απαιτούν διαφορετικές αρχιτεκτονικές αλυσίδων. Επίλεξε το μοτίβο που ταιριάζει στη ροή εργασίας σου.

<ChainFlowDemo />

### Ακολουθιακή Αλυσίδα

Το πιο απλό μοτίβο: κάθε βήμα εξαρτάται από το προηγούμενο. Σκέψου το σαν σκυταλοδρομία όπου κάθε δρομέας περνάει τη σκυτάλη στον επόμενο.

<ChainExample 
  type="sequential"
  steps={[
    { step: "Βήμα 1: Εξαγωγή", prompt: "Εξαγάγε όλες τις ημερομηνίες, ονόματα, και αριθμούς από: [κείμενο]", output: '{ dates: ["2024-01-15", "2024-02-20"], names: ["Γιάννης Παπαδόπουλος", "Acme Corp"], numbers: [15000, 42] }' },
    { step: "Βήμα 2: Ανάλυση", prompt: "Δεδομένων αυτών των εξαγόμενων δεδομένων: [βήμα1_έξοδος], εντόπισε σχέσεις και μοτίβα.", output: '{ patterns: ["Μηνιαίες συναντήσεις προγραμματισμένες"], relationships: ["Ο Γιάννης Παπαδόπουλος εργάζεται στην Acme Corp"] }' },
    { step: "Βήμα 3: Δημιουργία", prompt: "Χρησιμοποιώντας αυτά τα μοτίβα: [βήμα2_έξοδος], γράψε μια συνοπτική αναφορά που αναδεικνύει τα πιο σημαντικά ευρήματα.", output: "Συνοπτική Αναφορά: Η ανάλυση του εγγράφου αποκαλύπτει επιχειρηματική σχέση μεταξύ του Γιάννη Παπαδόπουλου και της Acme Corp, με προγραμματισμένες μηνιαίες συναντήσεις..." }
  ]}
/>

### Παράλληλη Αλυσίδα

Όταν χρειάζεσαι πολλαπλές προοπτικές στην ίδια είσοδο, εκτέλεσε prompts παράλληλα και συγχώνευσε τα αποτελέσματα. Αυτό είναι ταχύτερο από ακολουθιακές αλυσίδες και παρέχει πλουσιότερη ανάλυση.

<ChainExample 
  type="parallel"
  steps={[
    { step: "Είσοδος", prompt: "Κείμενο κριτικής προϊόντος", output: '"Λατρεύω αυτά τα ακουστικά! Η μπαταρία κρατάει για πάντα και η οθόνη στη θήκη είναι τόσο βολική. Τέλεια για την καθημερινή μου μετακίνηση."' },
    { step: "Κλάδος A: Συναίσθημα", prompt: "Ανάλυσε το συναίσθημα: [κείμενο]", output: '{ sentiment: "positive", score: 0.85 }' },
    { step: "Κλάδος B: Χαρακτηριστικά", prompt: "Εξαγάγε τα αναφερόμενα χαρακτηριστικά: [κείμενο]", output: '{ features: ["μπαταρία", "οθόνη"] }' },
    { step: "Κλάδος C: Persona", prompt: "Εντόπισε την persona χρήστη: [κείμενο]", output: '{ persona: "μετακινούμενος" }' },
    { step: "Συγχώνευση", prompt: "Συνδύασε τις αναλύσεις σε ενοποιημένη αναφορά", output: "Ενοποιημένη Αναφορά: Θετική κριτική από μετακινούμενο που επισημαίνει μπαταρία και οθόνη." }
  ]}
/>

### Υπό Συνθήκη Αλυσίδα

Δρομολόγησε εισόδους μέσω διαφορετικών διαδρομών βάσει ταξινόμησης. Αυτό είναι σαν δέντρο αποφάσεων όπου το AI πρώτα κατηγοριοποιεί την είσοδο, μετά χειρίζεται κάθε κατηγορία διαφορετικά.

<ChainExample 
  type="conditional"
  steps={[
    { step: "Ταξινόμησε Είσοδο", prompt: "Ταξινόμησε αυτό το μήνυμα πελάτη ως: παράπονο, ερώτηση, feedback, ή άλλο.\n\nΜήνυμα: [κείμενο]", output: '{ classification: "complaint", confidence: 0.92 }' },
    { step: "Διαδρομή: Ερώτηση (παραλείφθηκε)", prompt: "Εντόπισε ποια πληροφορία χρειάζεται", output: "Παραλείφθηκε - η είσοδος ταξινομήθηκε ως παράπονο" },
    { step: "Διαδρομή: Παράπονο", prompt: "Εντόπισε το ζήτημα και τη σοβαρότητα: [κείμενο]", output: '{ issue: "καθυστερημένη αποστολή", severity: "medium" }' },
    { step: "Δημιούργησε Απάντηση", prompt: "Δημιούργησε ενσυναισθητική απάντηση με επίλυση: [ανάλυση]", output: "Αγαπητέ Πελάτη, Ζητούμε ειλικρινά συγγνώμη για την καθυστέρηση. Η παραγγελία σας έχει επισπευσθεί..." }
  ]}
/>

### Επαναληπτική Αλυσίδα

Συνέχισε να βελτιώνεις την έξοδο μέχρι να πληροί τα πρότυπα ποιότητας. Το AI δημιουργεί, αξιολογεί, και βελτιώνει σε βρόχο μέχρι να ικανοποιηθεί ή να φτάσει το μέγιστο επαναλήψεων.

<Callout type="warning" title="Θέσε Όρια Επαναλήψεων">
Πάντα θέτε μέγιστο αριθμό επαναλήψεων (συνήθως 3-5) για να αποτρέψεις άπειρους βρόχους και να ελέγξεις το κόστος. Ο νόμος των φθινουσών αποδόσεων ισχύει: η περισσότερη βελτίωση συμβαίνει στις πρώτες 2-3 επαναλήψεις.
</Callout>

<ChainExample 
  type="iterative"
  steps={[
    { step: "Δημιούργησε Προσχέδιο", prompt: "Γράψε περιγραφή προϊόντος για: [ασύρματα ακουστικά]", output: "Αυτά τα ασύρματα ακουστικά προσφέρουν καλή ποιότητα ήχου και άνετη εφαρμογή για καθημερινή χρήση." },
    { step: "Αξιολόγησε (Βαθμός: 5)", prompt: "Βαθμολόγησε αυτή την περιγραφή 1-10 σε: σαφήνεια, πειστικότητα, ακρίβεια.\n\nΠεριγραφή: [τρέχον_προσχέδιο]", output: '{ score: 5, improvements: ["Πρόσθεσε συγκεκριμένα χαρακτηριστικά", "Συμπερίλαβε συναισθηματικά οφέλη", "Ανάφερε διάρκεια μπαταρίας", "Πρόσθεσε call-to-action"] }' },
    { step: "Βελτίωσε Προσχέδιο", prompt: "Βελτίωσε αυτή την περιγραφή βάσει αυτού του feedback:\n\nΤρέχον: [τρέχον_προσχέδιο]\nFeedback: [βελτιώσεις]", output: "Ζήσε κρυστάλλινο ήχο με τα premium ασύρματα ακουστικά μας. Με 30 ώρες διάρκεια μπαταρίας, ενεργή ακύρωση θορύβου, και εργονομικό σχεδιασμό που μένει άνετος όλη μέρα. Ιδανικά για λάτρεις της μουσικής και επαγγελματίες. Παράγγειλε τώρα και μετατρέψε την ακουστική σου εμπειρία." },
    { step: "Αξιολόγησε (Βαθμός: 8)", prompt: "Βαθμολόγησε αυτή την περιγραφή 1-10 σε: σαφήνεια, πειστικότητα, ακρίβεια.\n\nΠεριγραφή: [βελτιωμένο_προσχέδιο]", output: '{ score: 8, improvements: ["Ελάσσον: Θα μπορούσε να προσθέσει πληροφορίες εγγύησης"] }\n\n✓ Βαθμός >= 8: ΕΞΟΔΟΣ ΒΡΟΧΟΥ' }
  ]}
/>

## Κοινά Μοτίβα Αλυσίδων

Αυτά τα δοκιμασμένα στη μάχη μοτίβα λύνουν κοινά προβλήματα. Χρησιμοποίησέ τα ως σημεία εκκίνησης και προσάρμοσέ τα στις ανάγκες σου.

### Εξαγωγή → Μετασχηματισμός → Δημιουργία

Το βαρύ πυροβολικό της επεξεργασίας περιεχομένου. Τράβηξε δεδομένα έξω, αναδιαμόρφωσέ τα, μετά δημιούργησε κάτι νέο.

<div className="mb-4 p-3 rounded-lg bg-blue-50/50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800">
  <p className="text-xs font-semibold text-blue-700 dark:text-blue-300 mb-1 m-0!">Καλύτερο Για</p>
  <p className="text-sm text-blue-600 dark:text-blue-400 m-0!">Περίληψη εγγράφων, δημιουργία αναφορών, επαναχρησιμοποίηση περιεχομένου, μετατροπή δεδομένων σε αφήγηση</p>
</div>

<ChainExample 
  type="sequential"
  steps={[
    { step: "Εξαγωγή", prompt: "Από αυτό το έγγραφο, εξαγάγε:\n- Κύριο θέμα\n- Βασικά επιχειρήματα (λίστα)\n- Υποστηρικτικά στοιχεία (λίστα)\n- Συμπεράσματα\nΕπιστρέψε ως JSON.", output: '{ "topic": "Επιπτώσεις κλιματικής αλλαγής", "arguments": ["Αυξανόμενες θερμοκρασίες", "Άνοδος στάθμης θάλασσας"], "evidence": ["Δεδομένα NASA", "Αναφορές IPCC"], "conclusions": ["Απαιτείται επείγουσα δράση"] }' },
    { step: "Μετασχηματισμός", prompt: "Αναδιοργάνωσε αυτές τις πληροφορίες για [επιχειρηματικά στελέχη]:\n[εξαγόμενα_δεδομένα]\nΕστίαση σε: οικονομικές επιπτώσεις\nΑφαίρεσε: τεχνική ορολογία", output: '{ "summary": "Κλιματικοί κίνδυνοι για επιχειρήσεις", "key_points": ["Διαταραχή αλυσίδας εφοδιασμού", "Αυξανόμενο κόστος ασφάλισης"], "action_items": ["Αξιολόγηση ευπαθειών", "Σχεδιασμός προσαρμογών"] }' },
    { step: "Δημιουργία", prompt: "Χρησιμοποιώντας αυτές τις αναδομημένες πληροφορίες, γράψε ένα [εκτελεστικό brief]:\n[μετασχηματισμένα_δεδομένα]\nΤόνος: επαγγελματικός\nΜήκος: 200 λέξεις", output: "Εκτελεστικό Brief: Η κλιματική αλλαγή παρουσιάζει σημαντικούς λειτουργικούς κινδύνους για την επιχείρησή μας. Βασικές ανησυχίες περιλαμβάνουν διαταραχές αλυσίδας εφοδιασμού από ακραία καιρικά φαινόμενα και αυξανόμενα ασφάλιστρα. Συνιστούμε άμεση αξιολόγηση ευπαθειών εγκαταστάσεων και ανάπτυξη στρατηγικών προσαρμογής..." }
  ]}
/>

### Ανάλυση → Σχεδιασμός → Εκτέλεση

Τέλειο για refactoring κώδικα, σχεδιασμό project, ή οποιαδήποτε εργασία όπου χρειάζεται να κατανοήσεις πριν ενεργήσεις.

<div className="mb-4 p-3 rounded-lg bg-purple-50/50 dark:bg-purple-950/20 border border-purple-200 dark:border-purple-800">
  <p className="text-xs font-semibold text-purple-700 dark:text-purple-300 mb-1 m-0!">Καλύτερο Για</p>
  <p className="text-sm text-purple-600 dark:text-purple-400 m-0!">Refactoring κώδικα, σχεδιασμός project, αντιμετώπιση προβλημάτων, στρατηγική λήψη αποφάσεων, επίλυση σύνθετων προβλημάτων</p>
</div>

<ChainExample 
  type="sequential"
  steps={[
    { step: "Ανάλυση", prompt: "Ανάλυσε αυτή τη δομή codebase και εντόπισε:\n- Αρχιτεκτονικό μοτίβο\n- Κύρια components\n- Dependencies\n- Πιθανά ζητήματα\n[κώδικας]", output: '{ "pattern": "MVC", "components": ["UserController", "AuthService", "Database"], "dependencies": ["express", "mongoose"], "issues": ["Χωρίς input validation", "Hardcoded secrets"] }' },
    { step: "Σχεδιασμός", prompt: "Βάσει αυτής της ανάλυσης, δημιούργησε σχέδιο refactoring:\n[έξοδος_ανάλυσης]\nΣτόχος: βελτίωση ασφάλειας\nΠεριορισμοί: χωρίς breaking changes", output: '{ "steps": ["1. Πρόσθεσε input validation middleware", "2. Μετακίνησε secrets σε env vars", "3. Πρόσθεσε rate limiting"], "priority": "high", "estimated_time": "4 ώρες" }' },
    { step: "Εκτέλεση", prompt: "Υλοποίησε το βήμα 1 αυτού του σχεδίου:\n[έξοδος_σχεδίου]\nΔείξε τον refactored κώδικα με εξηγήσεις.", output: "// Προστέθηκε validation middleware\nconst validateInput = (req, res, next) => {\n  const { email, password } = req.body;\n  if (!email || !isValidEmail(email)) {\n    return res.status(400).json({ error: 'Invalid email' });\n  }\n  next();\n};" }
  ]}
/>

### Δημιουργία → Κριτική → Βελτίωση

Ο βρόχος αυτο-βελτίωσης. Δημιούργησε περιεχόμενο, βάλε το AI να το αξιολογήσει κριτικά, μετά βελτίωσε βάσει αυτού του feedback. Αυτό μιμείται πώς επαγγελματίες συγγραφείς και επιμελητές δουλεύουν μαζί.

<div className="mb-4 p-3 rounded-lg bg-green-50/50 dark:bg-green-950/20 border border-green-200 dark:border-green-800">
  <p className="text-xs font-semibold text-green-700 dark:text-green-300 mb-1 m-0!">Καλύτερο Για</p>
  <p className="text-sm text-green-600 dark:text-green-400 m-0!">Marketing copy, δημιουργική γραφή, προσχέδια email, παρουσιάσεις, οποιοδήποτε περιεχόμενο που ωφελείται από αναθεώρηση</p>
</div>

<ChainExample 
  type="iterative"
  steps={[
    { step: "Δημιουργία", prompt: "Γράψε ένα marketing email για [fitness app] στοχεύοντας [πολυάσχολους επαγγελματίες].", output: "Θέμα: Γίνε Fit Γρήγορα!\n\nΓεια σου! Η εφαρμογή μας βοηθά στην άσκηση. Κατέβασέ την σήμερα και ξεκίνα το fitness ταξίδι σου. Ευχαριστούμε!" },
    { step: "Κριτική", prompt: "Ως ειδικός marketing, κριτικάρε αυτό το email:\n[δημιουργημένο_email]\nΑξιολόγησε: γραμμή θέματος, hook, value proposition, CTA, τόνο\nΒαθμολόγησε κάθε ένα 1-10.", output: '{ "subject_line": 4, "hook": 3, "value_proposition": 2, "cta": 5, "tone": 4, "feedback": "Πολύ γενικό, χωρίς συγκεκριμένα οφέλη, αδύναμη επείγουσα ανάγκη" }' },
    { step: "Βελτίωση", prompt: "Ξαναγράψε το email αντιμετωπίζοντας αυτό το feedback:\nΑρχικό: [δημιουργημένο_email]\nΚριτική: [έξοδος_κριτικής]\nΕστίασε στα στοιχεία με τη χαμηλότερη βαθμολογία.", output: "Θέμα: 15-λεπτα Workouts για το Διάλειμμά σου\n\nΠολυάσχολο πρόγραμμα; Το καταλαβαίνουμε. Η εφαρμογή μας παρέχει επιστημονικά τεκμηριωμένα workouts σχεδιασμένα για επαγγελματίες που δεν έχουν χρόνο για χάσιμο. Συμμετέχε σε 50.000+ στελέχη που μετατρέψαν την υγεία τους σε μόλις 15 λεπτά την ημέρα. Ξεκίνα τη δωρεάν δοκιμή τώρα—ο μελλοντικός σου εαυτός θα σε ευχαριστήσει." },
    { step: "Τελικός Βαθμός", prompt: "Επαναξιολόγησε το βελτιωμένο email.", output: '{ "subject_line": 8, "hook": 8, "value_proposition": 9, "cta": 8, "tone": 9, "improvement": "+23 πόντοι συνολικά" }' }
  ]}
/>

## Υλοποίηση Αλυσίδων

Μπορείς να υλοποιήσεις αλυσίδες χειροκίνητα για πειραματισμό, ή προγραμματιστικά για συστήματα παραγωγής. Ξεκίνα απλά και πρόσθεσε πολυπλοκότητα όπως χρειάζεται.

### Χειροκίνητη Αλυσίδωση

Η προσέγγιση copy-paste είναι τέλεια για prototyping και πειραματισμό. Εκτέλεσε κάθε prompt χειροκίνητα, εξέτασε την έξοδο, και επικόλλησέ την στο επόμενο prompt.

<CodeEditor 
  language="python"
  filename="manual_chain.py"
  code={`# Ψευδοκώδικας για χειροκίνητη αλυσίδωση
step1_output = call_ai("Εξαγάγε οντότητες από: " + input_text)
step2_output = call_ai("Ανάλυσε σχέσεις: " + step1_output)
final_output = call_ai("Δημιούργησε αναφορά: " + step2_output)`}
/>

### Προγραμματιστική Αλυσίδωση

Για συστήματα παραγωγής, αυτοματοποίησε την αλυσίδα με κώδικα. Αυτό επιτρέπει χειρισμό σφαλμάτων, logging, και ενσωμάτωση με την εφαρμογή σου.

<CodeEditor 
  language="python"
  filename="chain.py"
  code={`def analysis_chain(document):
    # Βήμα 1: Σύνοψη
    summary = call_ai(f"""
        Συνόψισε τα βασικά σημεία αυτού του εγγράφου σε 5 bullets:
        {document}
    """)
    
    # Βήμα 2: Εξαγωγή οντοτήτων
    entities = call_ai(f"""
        Εξαγάγε ονομασμένες οντότητες (άτομα, οργανισμούς, τοποθεσίες) 
        από αυτή τη σύνοψη. Επέστρεψε ως JSON.
        {summary}
    """)
    
    # Βήμα 3: Δημιουργία insights
    insights = call_ai(f"""
        Βάσει αυτής της σύνοψης και οντοτήτων, δημιούργησε 3 εφαρμόσιμα 
        insights για επιχειρηματικό αναλυτή.
        Σύνοψη: {summary}
        Οντότητες: {entities}
    """)
    
    return {
        "summary": summary,
        "entities": json.loads(entities),
        "insights": insights
    }`}
/>

### Χρήση Templates Αλυσίδων

Όρισε αλυσίδες ως αρχεία configuration για επαναχρησιμοποίηση και εύκολη τροποποίηση. Αυτό διαχωρίζει τη λογική prompt από τον κώδικα εφαρμογής.

<CodeEditor 
  language="yaml"
  filename="chain_template.yaml"
  code={`name: "Αλυσίδα Ανάλυσης Εγγράφου"
steps:
  - name: "extract"
    prompt: |
      Εξαγάγε βασικές πληροφορίες από αυτό το έγγραφο:
      {input}
      Επέστρεψε JSON με: θέματα, οντότητες, ημερομηνίες, αριθμούς
    
  - name: "analyze"
    prompt: |
      Ανάλυσε αυτά τα εξαγόμενα δεδομένα για μοτίβα:
      {extract.output}
      Εντόπισε: τάσεις, ανωμαλίες, σχέσεις
    
  - name: "report"
    prompt: |
      Δημιούργησε εκτελεστική σύνοψη βάσει:
      Δεδομένα: {extract.output}
      Ανάλυση: {analyze.output}
      Μορφή: 3 παράγραφοι, επαγγελματικός τόνος`}
/>

## Χειρισμός Σφαλμάτων σε Αλυσίδες

Οι αλυσίδες μπορούν να αποτύχουν σε οποιοδήποτε βήμα. Ενσωμάτωσε επικύρωση, επαναπροσπάθειες, και εναλλακτικά για να κάνεις τις αλυσίδες σου ισχυρές.

<ChainErrorDemo />

<Callout type="warning" title="Σκουπίδια Μέσα, Σκουπίδια Έξω">
Αν ένα βήμα παράγει κακή έξοδο, κάθε επόμενο βήμα θα επηρεαστεί. Πάντα επικύρωνε κρίσιμα ενδιάμεσα αποτελέσματα πριν τα περάσεις μπροστά.
</Callout>

### Επικύρωση Μεταξύ Βημάτων

Πρόσθεσε βήμα επικύρωσης μετά από οποιοδήποτε βήμα που παράγει δομημένα δεδομένα. Αυτό πιάνει σφάλματα νωρίς πριν διαδοθούν.

<ValidationDemo />

### Εναλλακτικές Αλυσίδες

Όταν η κύρια προσέγγισή σου αποτύχει, έχε ένα απλούστερο backup έτοιμο. Ανταλλάξε ικανότητα για αξιοπιστία.

<FallbackDemo />

## Βελτιστοποίηση Αλυσίδων

Μόλις η αλυσίδα σου λειτουργεί, βελτιστοποίησε για ταχύτητα, κόστος, και αξιοπιστία. Αυτά συχνά αντισταθμίζονται μεταξύ τους.

<div className="my-6 grid md:grid-cols-3 gap-4">
  <div className="border rounded-lg bg-blue-50/50 dark:bg-blue-950/20 border-blue-200 dark:border-blue-900 p-4">
    <p className="text-sm font-semibold text-blue-700 dark:text-blue-400 mb-2 m-0!">Μείωση Καθυστέρησης</p>
    <div className="text-sm space-y-1">
      <p className="m-0!">Παραλληλοποίησε ανεξάρτητα βήματα</p>
      <p className="m-0!">Αποθήκευσε ενδιάμεσα αποτελέσματα σε cache</p>
      <p className="m-0!">Χρησιμοποίησε μικρότερα μοντέλα για απλά βήματα</p>
      <p className="m-0!">Ομαδοποίησε παρόμοιες λειτουργίες</p>
    </div>
  </div>
  <div className="border rounded-lg bg-green-50/50 dark:bg-green-950/20 border-green-200 dark:border-green-900 p-4">
    <p className="text-sm font-semibold text-green-700 dark:text-green-400 mb-2 m-0!">Μείωση Κόστους</p>
    <div className="text-sm space-y-1">
      <p className="m-0!">Χρησιμοποίησε φθηνότερα μοντέλα για ταξινόμηση</p>
      <p className="m-0!">Περιόρισε επαναλήψεις σε βρόχους</p>
      <p className="m-0!">Short-circuit όπου είναι δυνατόν</p>
      <p className="m-0!">Αποθήκευσε επαναλαμβανόμενα queries σε cache</p>
    </div>
  </div>
  <div className="border rounded-lg bg-purple-50/50 dark:bg-purple-950/20 border-purple-200 dark:border-purple-900 p-4">
    <p className="text-sm font-semibold text-purple-700 dark:text-purple-400 mb-2 m-0!">Βελτίωση Αξιοπιστίας</p>
    <div className="text-sm space-y-1">
      <p className="m-0!">Πρόσθεσε επικύρωση μεταξύ βημάτων</p>
      <p className="m-0!">Συμπερίλαβε λογική επαναπροσπάθειας</p>
      <p className="m-0!">Καταγράφε ενδιάμεσα αποτελέσματα</p>
      <p className="m-0!">Υλοποίησε εναλλακτικές διαδρομές</p>
    </div>
  </div>
</div>

## Παράδειγμα Αλυσίδας Πραγματικού Κόσμου

Ας δούμε μια πλήρη αλυσίδα παραγωγής. Αυτή η pipeline περιεχομένου μετατρέπει μια ακατέργαστη ιδέα σε πολωμένο πακέτο άρθρου.

### Αλυσίδα Pipeline Περιεχομένου

<ContentPipelineDemo />

## Σύνοψη

Το prompt chaining μετασχηματίζει τι μπορεί να επιτύχει το AI σπάζοντας αδύνατες εργασίες σε επιτεύξιμα βήματα.

<div className="my-6 grid md:grid-cols-2 gap-4">
  <div className="border rounded-lg bg-amber-50/50 dark:bg-amber-950/20 border-amber-200 dark:border-amber-900 p-4">
    <p className="text-sm font-semibold text-amber-700 dark:text-amber-400 mb-2 m-0!">Η Αλυσίδωση Επιτρέπει</p>
    <div className="text-sm space-y-1">
      <p className="m-0!">Πολύπλοκες ροές εργασίας πολλών βημάτων</p>
      <p className="m-0!">Υψηλότερη ποιότητα μέσω εξειδίκευσης</p>
      <p className="m-0!">Καλύτερο χειρισμό σφαλμάτων και επικύρωση</p>
      <p className="m-0!">Αρθρωτά, επαναχρησιμοποιήσιμα components prompt</p>
    </div>
  </div>
  <div className="border rounded-lg bg-cyan-50/50 dark:bg-cyan-950/20 border-cyan-200 dark:border-cyan-900 p-4">
    <p className="text-sm font-semibold text-cyan-700 dark:text-cyan-400 mb-2 m-0!">Βασικές Αρχές</p>
    <div className="text-sm space-y-1">
      <p className="m-0!">Χώρισε πολύπλοκες εργασίες σε απλά βήματα</p>
      <p className="m-0!">Σχεδίασε σαφείς διεπαφές μεταξύ βημάτων</p>
      <p className="m-0!">Επικύρωνε ενδιάμεσες εξόδους</p>
      <p className="m-0!">Ενσωμάτωσε χειρισμό σφαλμάτων και εναλλακτικά</p>
      <p className="m-0!">Βελτιστοποίησε για τους περιορισμούς σου</p>
    </div>
  </div>
</div>

<Callout type="tip" title="Ξεκίνα Απλά">
Ξεκίνα με μια ακολουθιακή αλυσίδα 2-3 βημάτων. Κάνε την να λειτουργεί αξιόπιστα πριν προσθέσεις πολυπλοκότητα. Οι περισσότερες εργασίες δεν χρειάζονται περίπλοκες αρχιτεκτονικές αλυσίδων.
</Callout>

<Quiz 
  question="Ποιο είναι το κύριο πλεονέκτημα του prompt chaining έναντι ενός μόνο πολύπλοκου prompt;"
  options={[
    "Χρησιμοποιεί λιγότερα tokens συνολικά",
    "Εκτελείται πιο γρήγορα",
    "Κάθε βήμα μπορεί να εξειδικευτεί, βελτιώνοντας την ποιότητα και επιτρέποντας χειρισμό σφαλμάτων",
    "Απαιτεί λιγότερο σχεδιασμό"
  ]}
  correctIndex={2}
  explanation="Το prompt chaining σπάει πολύπλοκες εργασίες σε εξειδικευμένα βήματα. Κάθε βήμα μπορεί να εστιάσει σε ένα πράγμα καλά, ενδιάμεσα αποτελέσματα μπορούν να επικυρωθούν, σφάλματα μπορούν να πιαστούν και να επαναπροσπαθηθούν, και η συνολική ποιότητα βελτιώνεται μέσω εξειδίκευσης."
/>

Στο επόμενο κεφάλαιο, θα εξερευνήσουμε το multimodal prompting: δουλεύοντας με εικόνες, ήχο, και άλλο μη-κειμενικό περιεχόμενο.
