Κάθε σπουδαίο prompt μοιράζεται κοινά δομικά στοιχεία. Η κατανόηση αυτών των συστατικών σας επιτρέπει να κατασκευάζετε prompts συστηματικά αντί μέσω δοκιμής και λάθους.

<Callout type="tip" title="Τα Δομικά Στοιχεία">
Σκεφτείτε αυτά τα συστατικά σαν τουβλάκια LEGO. Δεν χρειάζεστε όλα για κάθε prompt, αλλά ξέροντας τι είναι διαθέσιμο σας βοηθά να χτίσετε ακριβώς αυτό που χρειάζεστε.
</Callout>

## Τα Βασικά Συστατικά

Ένα αποτελεσματικό prompt τυπικά περιλαμβάνει μερικά ή όλα αυτά τα στοιχεία:

<PromptBreakdown parts={[
  { label: "Ρόλος", text: "Είσαι senior software engineer" },
  { label: "Πλαίσιο", text: "που δουλεύει σε μια εφαρμογή React." },
  { label: "Εργασία", text: "Αξιολόγησε αυτόν τον κώδικα για bugs" },
  { label: "Περιορισμοί", text: "και εστίασε μόνο σε θέματα ασφάλειας." },
  { label: "Μορφή", text: "Επέστρεψε τα ευρήματα ως αριθμημένη λίστα." },
  { label: "Παράδειγμα", text: "Όπως: 1. Κίνδυνος SQL injection στη γραμμή 42" }
]} />

Ας εξετάσουμε κάθε συστατικό λεπτομερώς.

## 1. Ρόλος / Persona

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

<Compare 
  before={{ label: "Χωρίς Ρόλο", content: "Εξήγησε την κβαντική υπολογιστική." }}
  after={{ label: "Με Ρόλο", content: "Είσαι καθηγητής φυσικής που ειδικεύεται στο να κάνει πολύπλοκα θέματα προσβάσιμα σε αρχάριους. Εξήγησε την κβαντική υπολογιστική." }}
/>

Ο ρόλος προετοιμάζει το μοντέλο να:
- Χρησιμοποιεί κατάλληλο λεξιλόγιο
- Εφαρμόζει σχετική τεχνογνωσία
- Διατηρεί συνεπή προοπτική
- Λαμβάνει υπόψη το κοινό κατάλληλα

### Αποτελεσματικά Μοτίβα Ρόλων

```
"Είσαι [επάγγελμα] με [X χρόνια] εμπειρία σε [ειδικότητα]"
"Ενέργησε ως [ρόλος] που είναι [χαρακτηριστικό]"
"Είσαι ειδικός [πεδίο] που βοηθά [τύπος κοινού]"
```

## 2. Πλαίσιο / Υπόβαθρο

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

<Compare 
  before={{ label: "Αδύναμο Πλαίσιο", content: "Διόρθωσε αυτό το bug στον κώδικά μου." }}
  after={{ label: "Ισχυρό Πλαίσιο", content: "Χτίζω ένα Node.js REST API χρησιμοποιώντας Express.js. Το API χειρίζεται αυθεντικοποίηση χρήστη με JWT tokens. Όταν ένας χρήστης προσπαθεί να προσπελάσει μια προστατευμένη διαδρομή, παίρνει σφάλμα 403 ακόμα και με έγκυρο token. Εδώ είναι ο σχετικός κώδικας: [code]" }}
/>

### Τι να Συμπεριλάβετε στο Πλαίσιο

- **Λεπτομέρειες project** — Τεχνολογικό stack, αρχιτεκτονική, περιορισμοί
- **Τρέχουσα κατάσταση** — Τι έχετε δοκιμάσει, τι λειτουργεί, τι όχι
- **Στόχοι** — Τι προσπαθείτε τελικά να πετύχετε
- **Περιορισμοί** — Χρονικά όρια, τεχνικές απαιτήσεις, οδηγοί στυλ

## 3. Εργασία / Οδηγία

Η εργασία είναι η καρδιά του prompt σας—τι θέλετε να κάνει το μοντέλο. Να είστε συγκεκριμένοι και αδιαμφισβήτητοι.

### Το Φάσμα της Εξειδίκευσης

<SpecificitySpectrum levels={[
  { level: "Αόριστο", text: "Βοήθησέ με με αυτό το δοκίμιο" },
  { level: "Καλύτερο", text: "Επεξεργάσου αυτό το δοκίμιο" },
  { level: "Καλό", text: "Επεξεργάσου αυτό το δοκίμιο για γραμματική και σαφήνεια" },
  { level: "Καλύτερο", text: "Επεξεργάσου αυτό το δοκίμιο για γραμματική και σαφήνεια, διατηρώντας τον αρχικό τόνο αλλά μειώνοντας την πολυλογία κατά 20%" }
]} />

### Ρήματα Δράσης που Λειτουργούν Καλά

<div className="my-4 grid gap-2">
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Δημιουργία</span>
    <span className="text-muted-foreground">Γράψε, Δημιούργησε, Παράγαγε, Συνέθεσε, Σχεδίασε</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Ανάλυση</span>
    <span className="text-muted-foreground">Ανάλυσε, Αξιολόγησε, Σύγκρινε, Εκτίμησε, Αναθεώρησε</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Μετασχηματισμός</span>
    <span className="text-muted-foreground">Μετάτρεψε, Μετάφρασε, Επαναμορφοποίησε, Συνόψισε, Επέκτεινε</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Επεξήγηση</span>
    <span className="text-muted-foreground">Εξήγησε, Περίγραψε, Διασάφησε, Όρισε, Απεικόνισε</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Επίλυση Προβλημάτων</span>
    <span className="text-muted-foreground">Λύσε, Debug, Διόρθωσε, Βελτιστοποίησε, Βελτίωσε</span>
  </div>
</div>

## 4. Περιορισμοί / Κανόνες

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

### Τύποι Περιορισμών

**Περιορισμοί μήκους:**
```
"Κράτησε την απάντησή σου κάτω από 200 λέξεις"
"Δώσε ακριβώς 5 προτάσεις"
"Γράψε 3-4 παραγράφους"
```

**Περιορισμοί περιεχομένου:**
```
"Μην συμπεριλάβεις παραδείγματα κώδικα"
"Εστίασε μόνο στις τεχνικές πτυχές"
"Απόφυγε γλώσσα μάρκετινγκ"
```

**Περιορισμοί στυλ:**
```
"Χρησιμοποίησε επίσημο, ακαδημαϊκό τόνο"
"Γράψε σαν να μιλάς σε παιδί 10 ετών"
"Να είσαι άμεσος και απόφυγε διστακτική γλώσσα"
```

**Περιορισμοί εύρους:**
```
"Λάβε υπόψη μόνο επιλογές διαθέσιμες σε Python 3.10+"
"Περιόρισε τις προτάσεις σε δωρεάν εργαλεία"
"Εστίασε σε λύσεις που δεν απαιτούν επιπλέον dependencies"
```

## 5. Μορφή Εξόδου

Ο καθορισμός της μορφής εξόδου διασφαλίζει ότι παίρνετε απαντήσεις σε χρήσιμη δομή.

### Κοινές Μορφές

**Λίστες:**
```
"Επέστρεψε ως λίστα με κουκκίδες"
"Δώσε αριθμημένη λίστα βημάτων"
```

**Δομημένα δεδομένα:**
```
"Επέστρεψε ως JSON με κλειδιά: title, description, priority"
"Μορφοποίησε ως πίνακα markdown με στήλες: Χαρακτηριστικό, Πλεονεκτήματα, Μειονεκτήματα"
```

**Συγκεκριμένες δομές:**
```
"Δόμησε την απάντησή σου ως:
 ## Σύνοψη
 ## Βασικά Σημεία
 ## Συστάσεις"
```

### Παράδειγμα Εξόδου JSON

```
Ανάλυσε αυτή την κριτική πελάτη και επέστρεψε JSON:
{
  "sentiment": "positive" | "negative" | "neutral",
  "topics": ["array of main topics"],
  "rating_prediction": 1-5,
  "key_phrases": ["notable phrases"]
}

Κριτική: "Το προϊόν έφτασε γρήγορα και λειτουργεί τέλεια, αλλά 
οι οδηγίες ήταν μπερδεμένες."
```

## 6. Παραδείγματα (Few-Shot Learning)

Τα παραδείγματα είναι ο πιο ισχυρός τρόπος να δείξετε στο μοντέλο ακριβώς τι θέλετε.

### Παράδειγμα One-Shot

```
Μετάτρεψε αυτές τις προτάσεις σε παρελθοντικό χρόνο.

Παράδειγμα:
Είσοδος: "Περπατάει στο μαγαζί"
Έξοδος: "Περπάτησε στο μαγαζί"

Τώρα μετάτρεψε:
Είσοδος: "Τρέχουν κάθε πρωί"
```

### Παράδειγμα Few-Shot

```
Κατηγοριοποίησε αυτά τα tickets υποστήριξης κατά επείγον.

Παραδείγματα:
"Ο λογαριασμός μου χακαρίστηκε" → Κρίσιμο
"Πώς αλλάζω τον κωδικό μου;" → Χαμηλό
"Η πληρωμή απέτυχε αλλά χρεώθηκα" → Υψηλό

Κατηγοριοποίησε: "Η εφαρμογή κρασάρει όταν ανοίγω ρυθμίσεις"
```

## Συνδυάζοντας τα Όλα Μαζί

Εδώ είναι ένα πλήρες prompt χρησιμοποιώντας όλα τα συστατικά:

<TryIt 
  title="Παράδειγμα Πλήρους Prompt"
  description="Αυτό το prompt επιδεικνύει και τα έξι συστατικά να δουλεύουν μαζί. Δοκιμάστε το για να δείτε πώς τα δομημένα prompts παράγουν επαγγελματικά αποτελέσματα."
  prompt={`# Ρόλος
Είσαι senior technical writer με 10 χρόνια εμπειρία στη δημιουργία τεκμηρίωσης για developers.

# Πλαίσιο
Τεκμηριώνω ένα REST API για υπηρεσία επεξεργασίας πληρωμών. Το κοινό είναι developers που ενσωματώνουν το API μας στις εφαρμογές τους. Έχουν ενδιάμεση γνώση προγραμματισμού αλλά μπορεί να είναι νέοι σε έννοιες επεξεργασίας πληρωμών.

# Εργασία
Γράψε τεκμηρίωση για το παρακάτω API endpoint που δημιουργεί νέο payment intent.

# Περιορισμοί
- Χρησιμοποίησε σαφή, συνοπτική γλώσσα
- Συμπερίλαβε κοινά σενάρια σφαλμάτων
- Μην συμπεριλάβεις λεπτομέρειες υλοποίησης του backend μας
- Υπόθεσε ότι οι αναγνώστες κατανοούν βασικά HTTP και JSON

# Μορφή Εξόδου
Δόμησε την τεκμηρίωση ως:
1. Επισκόπηση Endpoint (2-3 προτάσεις)
2. Request (method, URL, headers, body με παράδειγμα)
3. Response (παραδείγματα επιτυχίας και σφάλματος)
4. Παράδειγμα Κώδικα (σε JavaScript/Node.js)

# Λεπτομέρειες Endpoint
POST /v1/payments/intents
Body: { "amount": 1000, "currency": "eur", "description": "Order #1234" }`}
/>

## Το Ελάχιστο Αποτελεσματικό Prompt

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

```
Μετάφρασε "Γεια, τι κάνεις;" στα Ισπανικά.
```

Χρησιμοποιήστε επιπλέον συστατικά όταν:
- Η εργασία είναι πολύπλοκη ή διφορούμενη
- Χρειάζεστε συγκεκριμένη μορφοποίηση
- Τα αποτελέσματα δεν ταιριάζουν με τις προσδοκίες
- Η συνέπεια σε πολλαπλά ερωτήματα έχει σημασία

## Κοινά Μοτίβα Prompts

Αυτά τα πλαίσια σας δίνουν μια απλή λίστα ελέγχου να ακολουθήσετε όταν γράφετε prompts. Κάντε κλικ σε κάθε βήμα για να δείτε παράδειγμα.

<CRISPEFramework />

<RTFFramework />

## Σύνοψη

Τα αποτελεσματικά prompts κατασκευάζονται, δεν ανακαλύπτονται. Κατανοώντας και εφαρμόζοντας αυτά τα δομικά συστατικά, μπορείτε να:

- Πάρετε καλύτερα αποτελέσματα από την πρώτη προσπάθεια
- Εντοπίσετε προβλήματα σε prompts που δεν λειτουργούν
- Δημιουργήσετε επαναχρησιμοποιήσιμα πρότυπα prompts
- Επικοινωνήσετε τις προθέσεις σας ξεκάθαρα

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

<TryIt 
  prompt={`Είσαι senior product manager με 10 χρόνια εμπειρία σε προϊόντα SaaS.

Πλαίσιο: Χτίζω μια εφαρμογή διαχείρισης εργασιών για απομακρυσμένες ομάδες. Είμαστε μικρή startup με περιορισμένους πόρους engineering.

Εργασία: Πρότεινε 3 χαρακτηριστικά που πρέπει να δώσουμε προτεραιότητα για το MVP μας.

Περιορισμοί:
- Τα χαρακτηριστικά πρέπει να μπορούν να υλοποιηθούν από ομάδα 2 developers σε 4 εβδομάδες
- Εστίασε σε αυτό που μας διαφοροποιεί από Trello και Asana

Μορφή: Για κάθε χαρακτηριστικό, δώσε:
1. Όνομα χαρακτηριστικού
2. Περιγραφή μιας πρότασης
3. Γιατί έχει σημασία για απομακρυσμένες ομάδες`}
  description="Αυτό το prompt χρησιμοποιεί και τα έξι συστατικά. Δοκιμάστε το και δείτε πώς η δομημένη προσέγγιση παράγει εστιασμένα, πρακτικά αποτελέσματα."
/>

## Χτίστε το Δικό σας Prompt

Τώρα είναι η σειρά σας! Χρησιμοποιήστε αυτό το διαδραστικό εργαλείο δημιουργίας prompts για να κατασκευάσετε το δικό σας prompt χρησιμοποιώντας τα συστατικά που μάθατε:

<PromptBuilder 
  title="Διαδραστικός Δημιουργός Prompts"
  description="Συμπληρώστε κάθε ενότητα για να χτίσετε ένα πλήρες, καλά δομημένο prompt"
/>

<PromptChallenge
  title="Πρόκληση Κεφαλαίου: Χτίστε ένα Prompt Αναθεώρησης Κώδικα"
  task="Γράψτε ένα prompt που ζητά από μια AI να αναθεωρήσει κώδικα για ευπάθειες ασφαλείας. Το prompt σας πρέπει να είναι αρκετά συγκεκριμένο ώστε να πάρετε πρακτική ανατροφοδότηση."
  criteria={[
    "Συμπεριλαμβάνει σαφή ρόλο ή επίπεδο τεχνογνωσίας",
    "Καθορίζει τον τύπο αναθεώρησης κώδικα (εστίαση στην ασφάλεια)",
    "Ορίζει την αναμενόμενη μορφή εξόδου",
    "Θέτει κατάλληλους περιορισμούς ή εύρος"
  ]}
  hints={[
    "Σκεφτείτε τι τεχνογνωσία πρέπει να έχει ένας αναθεωρητής κώδικα",
    "Να είστε συγκεκριμένοι για τα θέματα ασφαλείας που πρέπει να αναζητήσει",
    "Σκεφτείτε να ζητήσετε δομημένη μορφή απάντησης"
  ]}
  exampleSolution={`Είσαι senior security engineer με τεχνογνωσία στην ασφάλεια web εφαρμογών και τις ευπάθειες OWASP Top 10.

Εργασία: Αναθεώρησε τον παρακάτω κώδικα για ευπάθειες ασφαλείας.

Εστίασε σε:
- Κινδύνους SQL injection
- Ευπάθειες XSS
- Θέματα αυθεντικοποίησης/εξουσιοδότησης
- Κενά επικύρωσης εισόδου

Μορφή εξόδου:
Για κάθε πρόβλημα που βρέθηκε:
1. Αριθμός γραμμής(ών)
2. Τύπος ευπάθειας
3. Επίπεδο κινδύνου (Υψηλό/Μέσο/Χαμηλό)
4. Συνιστώμενη διόρθωση

[ΚΩΔΙΚΑΣ ΓΙΑ ΑΝΑΘΕΩΡΗΣΗ]`}
  difficulty="intermediate"
/>

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