Το Chain of Thought (CoT) prompting είναι μια τεχνική που βελτιώνει δραματικά την απόδοση της AI σε πολύπλοκες εργασίες συλλογισμού ζητώντας από το μοντέλο να δείξει τη δουλειά του βήμα-βήμα.

<Callout type="info" title="Δείξε τη Δουλειά Σου">
Ακριβώς όπως ένας καθηγητής μαθηματικών ζητά από τους μαθητές να δείξουν τη δουλειά τους, το CoT prompting ζητά από την AI να κάνει τον συλλογισμό της ορατό.
</Callout>

## Το Πρόβλημα που Λύνει το CoT

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

<Compare 
  before={{ label: "Άμεση Απάντηση (Συχνά Λάθος)", content: "Ερώτηση: Ένα κατάστημα πουλάει μήλα για 2€ το καθένα. Αν αγοράσεις 5 ή περισσότερα, παίρνεις 20% έκπτωση. Πόσο κοστίζουν 7 μήλα;\n\nΑπάντηση: 14€ ❌" }}
  after={{ label: "Chain of Thought (Σωστό)", content: "Ερώτηση: Ένα κατάστημα πουλάει μήλα για 2€ το καθένα. Αν αγοράσεις 5 ή περισσότερα, παίρνεις 20% έκπτωση. Πόσο κοστίζουν 7 μήλα;\n\nΑς το δουλέψουμε βήμα-βήμα:\n1. Κανονική τιμή ανά μήλο: 2€\n2. Αριθμός μήλων: 7\n3. Επειδή 7 ≥ 5, ισχύει η έκπτωση\n4. Κανονικό σύνολο: 7 × 2€ = 14€\n5. Έκπτωση: 20% των 14€ = 2,80€\n6. Τελική τιμή: 14€ - 2,80€ = 11,20€\n\nΑπάντηση: 11,20€ ✓" }}
/>

## Βασικά CoT Prompts

### Απλές Φράσεις-Κλειδιά

Προσθέστε μία από αυτές στα prompts σας:

<div className="my-4 grid gap-2">
  <div className="p-3 bg-muted/50 rounded-lg font-mono text-sm">"Ας σκεφτούμε βήμα-βήμα."</div>
  <div className="p-3 bg-muted/50 rounded-lg font-mono text-sm">"Σκέψου αυτό προσεκτικά."</div>
  <div className="p-3 bg-muted/50 rounded-lg font-mono text-sm">"Δούλεψε αυτό το πρόβλημα μεθοδικά."</div>
  <div className="p-3 bg-muted/50 rounded-lg font-mono text-sm">"Δείξε τον συλλογισμό σου σε κάθε βήμα."</div>
  <div className="p-3 bg-muted/50 rounded-lg font-mono text-sm">"Εξήγησε τη διαδικασία σκέψης σου."</div>
</div>

### Ρητό Αίτημα Βημάτων

<TryIt 
  title="Δοκίμασε Chain of Thought"
  description="Ζήτα από την AI να λύσει ένα πρόβλημα βήμα-βήμα."
  prompt={`Λύσε αυτό το πρόβλημα:

Μια ενοικίαση αυτοκινήτου κοστίζει 40€ την ημέρα συν 0,25€ ανά χιλιόμετρο. Αν κάποιος νοικιάσει αυτοκίνητο για 3 ημέρες και οδηγήσει 200 χιλιόμετρα, ποιο είναι το συνολικό κόστος;

Πριν δώσεις την τελική σου απάντηση:
1. Προσδιόρισε ποιες πληροφορίες δίνονται
2. Καθόρισε τι πρέπει να βρούμε
3. Σχεδίασε την προσέγγισή σου
4. Εκτέλεσε κάθε βήμα, δείχνοντας τη δουλειά
5. Επαλήθευσε την απάντησή σου`}
/>

## Zero-Shot vs Few-Shot CoT

Υπάρχουν δύο κύριες προσεγγίσεις στο Chain of Thought prompting, κάθε μία με διαφορετικές ανταλλαγές μεταξύ απλότητας και ελέγχου.

### Zero-Shot CoT

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

<TryIt 
  compact
  title="Zero-Shot CoT"
  prompt={`Αν ο Γιάννης έχει 3 μήλα και δίνει τα μισά στη Μαρία, μετά αγοράζει 4 ακόμα, πόσα έχει;

Ας σκεφτούμε βήμα-βήμα.`}
/>

**Παράδειγμα Εξόδου:**
```
Ας σκεφτούμε βήμα-βήμα.
- Ο Γιάννης ξεκινά με 3 μήλα
- Τα μισά του 3 είναι 1,5, αλλά δεν μπορούμε να χωρίσουμε μήλα
- Αν στρογγυλοποιήσουμε προς τα κάτω: Ο Γιάννης δίνει 1 μήλο, κρατά 2
- Μετά την αγορά 4 ακόμα: 2 + 4 = 6 μήλα

Απάντηση: 6 μήλα
```

### Few-Shot CoT

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

<TryIt 
  compact
  title="Few-Shot CoT"
  prompt={`Παράδειγμα 1:
Ε: Μια ζαχαροπλάστης έχει 24 cupcakes. Τα βάζει εξίσου σε 4 κουτιά. Μετά τρώει 2 cupcakes από ένα κουτί. Πόσα cupcakes απομένουν συνολικά;

Α: Ας το δουλέψουμε:
- Σύνολο cupcakes: 24
- Cupcakes ανά κουτί: 24 ÷ 4 = 6
- Μετά το φαγητό 2 από ένα κουτί: 6 - 2 = 4 cupcakes σε εκείνο το κουτί
- Σύνολο που απομένει: (3 κουτιά × 6) + 4 = 18 + 4 = 22 cupcakes

Παράδειγμα 2:
Ε: Ένα τρένο ταξιδεύει με 60 χλμ/ώρα για 2 ώρες, μετά 40 χλμ/ώρα για 3 ώρες. Ποια είναι η μέση ταχύτητά του;

Α: Ας το δουλέψουμε:
- Απόσταση με 60 χλμ/ώρα: 60 × 2 = 120 χλμ
- Απόσταση με 40 χλμ/ώρα: 40 × 3 = 120 χλμ
- Συνολική απόσταση: 120 + 120 = 240 χλμ
- Συνολικός χρόνος: 2 + 3 = 5 ώρες
- Μέση ταχύτητα: 240 ÷ 5 = 48 χλμ/ώρα

Τώρα λύσε:
Ε: Ένα κατάστημα πουλάει τετράδια για 3€ το καθένα. Αν αγοράσεις 10 ή περισσότερα, παίρνεις 25% έκπτωση. Πόσο κοστίζουν 12 τετράδια;`}
/>

**Παράδειγμα Εξόδου:**
```
Α: Ας το δουλέψουμε:
- Κανονική τιμή: 3€, Ποσότητα: 12
- Επειδή 12 ≥ 10, ισχύει η έκπτωση 25%
- Κανονικό σύνολο: 12 × 3€ = 36€
- Έκπτωση: 25% των 36€ = 9€
- Τελική τιμή: 36€ - 9€ = 27€
```

## Δομημένες Μορφές CoT

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

### Η Μορφή BREAK

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

<BREAKFramework />

### Το Template Συλλογισμού

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

<TryIt 
  compact
  title="Template Συλλογισμού"
  prompt={`Χρησιμοποίησε αυτό το template για να λύσεις το πρόβλημα:

ΔΕΔΟΜΕΝΑ: [Λίστα γνωστών πληροφοριών]
ΣΤΟΧΟΣ: [Τι πρέπει να βρούμε]
ΠΡΟΣΕΓΓΙΣΗ: [Στρατηγική που θα χρησιμοποιήσουμε]
ΒΗΜΑΤΑ:
  1. [Πρώτο βήμα με συλλογισμό]
  2. [Δεύτερο βήμα με συλλογισμό]
  ...
ΕΠΑΛΗΘΕΥΣΗ: [Έλεγχος της απάντησης]
ΑΠΑΝΤΗΣΗ: [Τελική απάντηση]

Πρόβλημα: Ένα αυτοκίνητο καταναλώνει 8 λίτρα καυσίμου ανά 100 χλμ. Αν το ρεζερβουάρ χωράει 45 λίτρα και το καύσιμο κοστίζει 1,50€ ανά λίτρο, πόσο κοστίζει να οδηγήσεις 300 χλμ;`}
/>

**Παράδειγμα Εξόδου:**
```
ΔΕΔΟΜΕΝΑ: 8L/100km, ρεζερβουάρ 45L, 1,50€/L, οδήγηση 300km
ΣΤΟΧΟΣ: Υπολογισμός κόστους καυσίμου
ΠΡΟΣΕΓΓΙΣΗ: Καύσιμο που χρειάζεται × κόστος ανά λίτρο
ΒΗΜΑΤΑ:
1. Καύσιμο = (300 ÷ 100) × 8 = 24 λίτρα
2. Κόστος = 24 × 1,50€ = 36€
ΕΠΑΛΗΘΕΥΣΗ: 24L < 45L ρεζερβουάρ ✓
ΑΠΑΝΤΗΣΗ: 36€
```

## CoT για Διαφορετικούς Τύπους Προβλημάτων

Διαφορετικοί τύποι προβλημάτων ωφελούνται από διαφορετικές προσεγγίσεις CoT. Εδώ είναι μοτίβα βελτιστοποιημένα για κοινά σενάρια.

### Μαθηματικός Συλλογισμός

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

<TryIt 
  compact
  title="Μαθηματικά με CoT"
  prompt={`Τα έσοδα μιας εταιρείας ήταν 1,2 εκατ.€ στο Q1. Αυξήθηκαν 15% στο Q2, μειώθηκαν 10% στο Q3, και αυξήθηκαν 25% στο Q4. Ποια ήταν τα συνολικά ετήσια έσοδα;

Σκέψου κάθε τρίμηνο, δείχνοντας τους υπολογισμούς σου ξεκάθαρα.`}
/>

**Παράδειγμα Εξόδου:**
```
Q1: 1.200.000€ (δοσμένο)
Q2: 1.200.000€ × 1,15 = 1.380.000€
Q3: 1.380.000€ × 0,90 = 1.242.000€
Q4: 1.242.000€ × 1,25 = 1.552.500€

Σύνολο: 5.374.500€
```

### Λογικός Συλλογισμός

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

<TryIt 
  compact
  title="Λογικό Παζλ"
  prompt={`Τρεις φίλοι—Αλίκη, Μπομπ, και Κάρολ—έχουν ο καθένας διαφορετικά κατοικίδια (γάτα, σκύλος, ψάρι) και διαφορετικές δουλειές (δάσκαλος, μηχανικός, γιατρός).

Στοιχεία:
1. Η Αλίκη δεν έχει γάτα
2. Ο μηχανικός έχει σκύλο
3. Ο Μπομπ είναι δάσκαλος
4. Η Κάρολ δεν έχει ψάρι

Ποιος έχει ποιο κατοικίδιο και δουλειά; Συλλογίσου συστηματικά, δοκιμάζοντας υποθέσεις και επαληθεύοντας έναντι όλων των στοιχείων.`}
/>

**Παράδειγμα Εξόδου:**
```
Από το στοιχείο 3: Μπομπ = δάσκαλος
→ Αλίκη και Κάρολ είναι μηχανικός/γιατρός

Αν Κάρολ = μηχανικός:
- Κάρολ έχει σκύλο (στοιχείο 2)
- Αλίκη = γιατρός, έχει ψάρι (στοιχείο 1)
- Μπομπ έχει γάτα

Επαλήθευση: Όλα τα 4 στοιχεία ικανοποιούνται ✓
Απάντηση: Αλίκη (γιατρός, ψάρι), Μπομπ (δάσκαλος, γάτα), Κάρολ (μηχανικός, σκύλος)
```

### Αποσφαλμάτωση Κώδικα

Η αποσφαλμάτωση ωφελείται από το CoT επειδή αναγκάζει το μοντέλο να ιχνηλατήσει την εκτέλεση αντί να μαντεύει bugs. Περπατώντας μέσα από τον κώδικα με συγκεκριμένες τιμές, η πραγματική συμπεριφορά γίνεται ορατή και οι αποκλίσεις από την αναμενόμενη συμπεριφορά εκτίθενται.

<TryIt 
  compact
  title="Αποσφαλμάτωση με CoT"
  prompt={`Αυτή η συνάρτηση πρέπει να επιστρέφει το άθροισμα των ζυγών αριθμών σε μια λίστα, αλλά επιστρέφει λάθος τιμές. Αποσφαλμάτωσε βήμα-βήμα ιχνηλατώντας με την είσοδο [2, 3, 4, 6]:

def sum_evens(numbers):
    total = 0
    for n in numbers:
        if n % 2 == 0:
            total += 1
    return total

Ιχνηλάτησε κάθε βήμα, βρες το bug, και δώσε τη διόρθωση.`}
/>

**Παράδειγμα Εξόδου:**
```
Ιχνηλάτηση [2, 3, 4, 6]:
n=2: total += 1 → 1 (περίμενε, προσθέτει 1 όχι n!)
n=3: παράβλεψη (μονός)
n=4: total = 2
n=6: total = 3

BUG: "total += 1" πρέπει να είναι "total += n"
Αναμενόμενο: 12, Πήρε: 3
Διόρθωση: Άλλαξε σε "total += n"
```

## Αυτο-συνέπεια με CoT

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

<TryIt 
  compact
  title="Αυτο-συνέπεια"
  prompt={`Λύσε αυτό το πρόβλημα με 3 διαφορετικούς τρόπους, μετά δώσε την τελική σου απάντηση βάσει ποια λύση φαίνεται πιο σωστή:

Πρόβλημα: Ένας αγρότης έχει κότες και αγελάδες. Μαζί έχουν 30 κεφάλια και 74 πόδια. Πόσες κότες και πόσες αγελάδες έχει ο αγρότης;

Προσέγγιση 1: Άλγεβρα
Προσέγγιση 2: Δοκιμή και έλεγχος
Προσέγγιση 3: Λογικός συλλογισμός

Μετά σύγκρινε και δώσε την τελική σου απάντηση.`}
/>

**Παράδειγμα Εξόδου:**
```
Προσέγγιση 1 (Άλγεβρα): κ + α = 30, 2κ + 4α = 74 → κ=23, α=7
Προσέγγιση 2 (Δοκιμή): Δοκίμασε 23/7 → 46 + 28 = 74 ✓
Προσέγγιση 3 (Λογική): 30 κότες = 60 πόδια, χρειάζονται 14 ακόμα → 7 αγελάδες

Όλες συμφωνούν: 23 κότες, 7 αγελάδες
```

## CoT για Λήψη Αποφάσεων

Οι αποφάσεις περιλαμβάνουν στάθμιση ανταλλαγών σε πολλαπλές διαστάσεις. Το CoT διασφαλίζει ότι όλοι οι σχετικοί παράγοντες εξετάζονται συστηματικά αντί να πηδάμε σε συμπεράσματα. Αυτή η δομημένη προσέγγιση επίσης τεκμηριώνει τον συλλογισμό για μελλοντική αναφορά.

<TryIt 
  compact
  title="Ανάλυση Απόφασης"
  prompt={`Πρέπει να υιοθετήσουμε αρχιτεκτονική microservices για την εφαρμογή μας;

Πλαίσιο:
- Μονολιθική εφαρμογή με 50.000 γραμμές κώδικα
- Ομάδα 5 developers
- 100 ημερήσιοι ενεργοί χρήστες
- Σχεδιάζουμε 10x ανάπτυξη σε 2 χρόνια

Σκέψου αυτό συστηματικά:
1. Κατονόμασε την τρέχουσα κατάσταση
2. Προσδιόρισε παράγοντες προς εξέταση (μέγεθος ομάδας, κλίμακα, ταχύτητα, μελλοντική ανάπτυξη)
3. Στάθμισε κάθε παράγοντα ως υπέρ/κατά
4. Δώσε σύσταση με συλλογισμό`}
/>

**Παράδειγμα Εξόδου:**
```
ΠΑΡΑΓΟΝΤΕΣ:
- Μέγεθος ομάδας (5): Πολύ μικρό για microservices ❌
- Κλίμακα (100 DAU): Καμία ανάγκη κλιμάκωσης ❌  
- Ταχύτητα: Monolith = γρηγορότερη επανάληψη ❌
- Μελλοντική ανάπτυξη: Αβέβαιο χρονοδιάγραμμα ⚠️

ΣΤΑΘΜΙΣΗ: 3 ισχυρά κατά, 1 αδύναμο υπέρ

ΣΥΣΤΑΣΗ: Μείνε monolith, χρησιμοποίησε σαφή όρια 
modules για να διευκολύνεις μελλοντική μετάβαση.
```

## Πότε να Χρησιμοποιήσεις CoT

<div className="my-6 grid md:grid-cols-2 gap-4">
  <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" /> Χρησιμοποίησε CoT Για</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>
      <p className="m-0!">**Λήψη αποφάσεων** — Σταθμίζει ανταλλαγές</p>
    </div>
  </div>
  <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" /> Παράλειψε CoT Για</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>
      <p className="m-0!">**Σύνοψη** — Συνήθως απλή</p>
    </div>
  </div>
</div>

## Περιορισμοί CoT

Αν και ισχυρό, το Chain of Thought δεν είναι πανάκεια. Η κατανόηση των περιορισμών του βοηθά να το εφαρμόσεις κατάλληλα.

1. **Αυξημένη χρήση tokens** — Περισσότερη έξοδος σημαίνει υψηλότερο κόστος
2. **Δεν χρειάζεται πάντα** — Απλές εργασίες δεν ωφελούνται
3. **Μπορεί να είναι φλύαρο** — Μπορεί να χρειαστεί να ζητήσεις συνοπτικότητα
4. **Ο συλλογισμός μπορεί να είναι λάθος** — Το CoT δεν εγγυάται ορθότητα

## Σύνοψη

<Callout type="tip" title="Βασικά Συμπεράσματα">
Το CoT βελτιώνει δραματικά τον πολύπλοκο συλλογισμό κάνοντας τα σιωπηρά βήματα ρητά. Χρησιμοποίησέ το για μαθηματικά, λογική, ανάλυση, και αποσφαλμάτωση. Ανταλλαγή: καλύτερη ακρίβεια για περισσότερα tokens.
</Callout>

<Quiz 
  question="Πότε ΔΕΝ πρέπει να χρησιμοποιήσεις Chain of Thought prompting;"
  options={[
    "Μαθηματικά προβλήματα που απαιτούν πολλαπλά βήματα",
    "Απλές πραγματολογικές ερωτήσεις όπως 'Ποια είναι η πρωτεύουσα της Γαλλίας;'",
    "Αποσφαλμάτωση κώδικα με πολύπλοκη λογική",
    "Ανάλυση επιχειρηματικής απόφασης"
  ]}
  correctIndex={1}
  explanation="Το Chain of Thought προσθέτει περιττή επιβάρυνση για απλές ερωτοαπαντήσεις. Είναι καλύτερα κρατημένο για πολύπλοκες εργασίες συλλογισμού όπως μαθηματικά, λογικά παζλ, αποσφαλμάτωση κώδικα, και ανάλυση όπου η επίδειξη δουλειάς βελτιώνει την ακρίβεια."
/>

Στο επόμενο κεφάλαιο, θα εξερευνήσουμε το few-shot learning—διδάσκοντας το μοντέλο μέσω παραδειγμάτων.
