Ένα καλό prompt ολοκληρώνει τη δουλειά. Ένα βελτιστοποιημένο prompt ολοκληρώνει τη δουλειά αποτελεσματικά—πιο γρήγορα, φθηνότερα, πιο συνεπή. Αυτό το κεφάλαιο σε διδάσκει πώς να βελτιώνεις συστηματικά prompts σε πολλαπλές διαστάσεις.

<Callout type="tip" title="Δοκίμασε τον Βελτιωτή Prompts">
Θέλεις να βελτιστοποιήσεις τα prompts σου αυτόματα; Χρησιμοποίησε το εργαλείο [Βελτιωτής Prompts](/developers#enhancer). Αναλύει το prompt σου, εφαρμόζει τεχνικές βελτιστοποίησης, και σου δείχνει παρόμοια prompts κοινότητας για έμπνευση.
</Callout>

## Οι Ανταλλαγές της Βελτιστοποίησης

Κάθε βελτιστοποίηση περιλαμβάνει ανταλλαγές. Η κατανόησή τους σε βοηθά να κάνεις σκόπιμες επιλογές:

<InfoGrid items={[
  { label: "Ποιότητα vs. Κόστος", description: "Υψηλότερη ποιότητα συχνά απαιτεί περισσότερα tokens ή καλύτερα μοντέλα", example: "Η προσθήκη παραδειγμάτων βελτιώνει την ακρίβεια αλλά αυξάνει τον αριθμό tokens", exampleType: "text", color: "blue" },
  { label: "Ταχύτητα vs. Ποιότητα", description: "Ταχύτερα μοντέλα μπορεί να θυσιάζουν κάποια ικανότητα", example: "Το GPT-4 είναι πιο έξυπνο αλλά πιο αργό από το GPT-4o-mini", exampleType: "text", color: "purple" },
  { label: "Συνέπεια vs. Δημιουργικότητα", description: "Χαμηλότερο temperature = πιο προβλέψιμο αλλά λιγότερο δημιουργικό", example: "Temperature 0.2 για γεγονότα, 0.8 για καταιγισμό ιδεών", exampleType: "text", color: "green" },
  { label: "Απλότητα vs. Ευρωστία", description: "Ο χειρισμός ακραίων περιπτώσεων προσθέτει πολυπλοκότητα", example: "Απλά prompts αποτυγχάνουν σε ασυνήθιστες εισόδους", exampleType: "text", color: "amber" }
]} />

## Μέτρηση Αυτού που Έχει Σημασία

Πριν βελτιστοποιήσεις, όρισε την επιτυχία. Τι σημαίνει "καλύτερο" για την περίπτωση χρήσης σου;

<InfoGrid items={[
  { label: "Ακρίβεια", description: "Πόσο συχνά είναι σωστή η έξοδος;", example: "90% των προτάσεων κώδικα μεταγλωττίζονται χωρίς σφάλματα", exampleType: "text", color: "blue" },
  { label: "Συνάφεια", description: "Απαντά σε αυτό που πραγματικά ρωτήθηκε;", example: "Η απάντηση απαντά άμεσα στην ερώτηση vs. παρεκκλίσεις", exampleType: "text", color: "blue" },
  { label: "Πληρότητα", description: "Καλύπτονται όλες οι απαιτήσεις;", example: "Όλες οι 5 ζητούμενες ενότητες περιλαμβάνονται στην έξοδο", exampleType: "text", color: "blue" },
  { label: "Καθυστέρηση", description: "Πόσος χρόνος μέχρι να φτάσει η απάντηση;", example: "p50 < 2s, p95 < 5s για εφαρμογές chat", exampleType: "text", color: "purple" },
  { label: "Αποδοτικότητα Token", description: "Πόσα tokens για το ίδιο αποτέλεσμα;", example: "500 tokens vs. 1500 tokens για ισοδύναμη έξοδο", exampleType: "text", color: "purple" },
  { label: "Συνέπεια", description: "Πόσο παρόμοιες είναι οι έξοδοι για παρόμοιες εισόδους;", example: "Η ίδια ερώτηση παίρνει δομικά παρόμοιες απαντήσεις", exampleType: "text", color: "green" }
]} />

<Callout type="info" title="Τι Σημαίνουν τα p50 και p95;">
Οι μετρικές εκατοστημορίων δείχνουν την κατανομή χρόνου απόκρισης. **p50** (διάμεσος) σημαίνει ότι 50% των αιτημάτων είναι ταχύτερα από αυτή την τιμή. **p95** σημαίνει ότι 95% είναι ταχύτερα—πιάνει αργές ακραίες τιμές. Αν το p50 σου είναι 1s αλλά το p95 είναι 10s, οι περισσότεροι χρήστες είναι ικανοποιημένοι αλλά 5% βιώνουν απογοητευτικές καθυστερήσεις.
</Callout>

<TryIt 
  title="Όρισε τις Μετρικές Επιτυχίας σου"
  description="Χρησιμοποίησε αυτό το πρότυπο για να διευκρινίσεις για τι βελτιστοποιείς πριν κάνεις αλλαγές."
  prompt={`Βοήθησέ με να ορίσω μετρικές επιτυχίας για τη βελτιστοποίηση prompt μου.

**Η περίπτωση χρήσης μου**: \${useCase}
**Τρέχοντα προβλήματα**: \${painPoints}

Για αυτή την περίπτωση χρήσης, βοήθησέ με να ορίσω:

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

## Βελτιστοποίηση Tokens

Τα tokens κοστίζουν χρήματα και προσθέτουν καθυστέρηση. Δες πώς να πεις το ίδιο πράγμα με λιγότερα tokens.

### Η Αρχή της Συμπίεσης

<Compare 
  before={{ label: "Αναλυτικό (67 tokens)", content: "Θα ήθελα παρακαλώ να με βοηθήσεις με την ακόλουθη εργασία. Χρειάζομαι να πάρεις το κείμενο που θα σου δώσω παρακάτω και να δημιουργήσεις μια περίληψη του. Η περίληψη πρέπει να καταγράφει τα βασικά σημεία και να είναι συνοπτική. Παρακαλώ βεβαιώσου να συμπεριλάβεις όλες τις σημαντικές πληροφορίες. Εδώ είναι το κείμενο:\n\n[κείμενο]" }}
  after={{ label: "Συνοπτικό (12 tokens)", content: "Συνόψισε αυτό το κείμενο, καταγράφοντας βασικά σημεία συνοπτικά:\n\n[κείμενο]" }}
/>

**Ίδιο αποτέλεσμα, 82% λιγότερα tokens.**

### Τεχνικές Εξοικονόμησης Tokens

<InfoGrid items={[
  { label: "Κόψε Ευγένειες", description: "\"Παρακαλώ\" και \"Ευχαριστώ\" προσθέτουν tokens χωρίς να βελτιώνουν την έξοδο", example: "\"Παρακαλώ συνόψισε\" → \"Συνόψισε\"", color: "green" },
  { label: "Εξάλειψε Επανάληψη", description: "Μην επαναλαμβάνεσαι ή δηλώνεις το προφανές", example: "\"Γράψε μια περίληψη που συνοψίζει\" → \"Συνόψισε\"", color: "green" },
  { label: "Χρησιμοποίησε Συντομογραφίες", description: "Όπου το νόημα είναι σαφές, συντόμευσε", example: "\"για παράδειγμα\" → \"π.χ.\"", color: "green" },
  { label: "Αναφορά με Θέση", description: "Δείξε περιεχόμενο αντί να το επαναλαμβάνεις", example: "\"το κείμενο παραπάνω\" αντί να ξανα-αναφέρεις", color: "green" }
]} />

<TryIt 
  title="Συμπιεστής Prompts"
  description="Επικόλλησε ένα αναλυτικό prompt για να πάρεις μια token-βελτιστοποιημένη έκδοση."
  prompt={`Συμπίεσε αυτό το prompt διατηρώντας το νόημα και την αποτελεσματικότητά του:

Αρχικό prompt:
"\${verbosePrompt}"

Οδηγίες:
1. Αφαίρεσε περιττές ευγένειες και λέξεις γεμίσματος
2. Εξάλειψε επανάληψη
3. Χρησιμοποίησε συνοπτική διατύπωση
4. Κράτησε όλες τις βασικές οδηγίες και περιορισμούς
5. Διατήρησε σαφήνεια—μην θυσιάσεις κατανόηση για συντομία

Παρέχε:
- **Συμπιεσμένη έκδοση**: Το βελτιστοποιημένο prompt
- **Μείωση tokens**: Εκτιμώμενο ποσοστό εξοικονόμησης
- **Τι αφαιρέθηκε**: Σύντομη εξήγηση τι αφαιρέθηκε και γιατί ήταν ασφαλές να αφαιρεθεί`}
/>

## Βελτιστοποίηση Ποιότητας

Μερικές φορές χρειάζεσαι καλύτερες εξόδους, όχι φθηνότερες. Δες πώς να βελτιώσεις την ποιότητα.

### Ενισχυτές Ακρίβειας

<InfoGrid items={[
  { label: "Πρόσθεσε Επαλήθευση", description: "Ζήτα από το μοντέλο να ελέγξει τη δουλειά του", example: "\"...μετά επαλήθευσε ότι η απάντησή σου είναι σωστή\"", color: "blue" },
  { label: "Ζήτα Εμπιστοσύνη", description: "Κάνε την αβεβαιότητα ρητή", example: "\"Βαθμολόγησε την εμπιστοσύνη σου 1-10 και εξήγησε τυχόν αβεβαιότητα\"", color: "blue" },
  { label: "Πολλαπλές Προσεγγίσεις", description: "Πάρε διαφορετικές οπτικές, μετά διάλεξε", example: "\"Παρέχε 3 προσεγγίσεις και σύστησε την καλύτερη\"", color: "blue" },
  { label: "Ρητή Αιτιολόγηση", description: "Επίβαλε σκέψη βήμα-βήμα", example: "\"Σκέψου βήμα-βήμα και δείξε τη λογική σου\"", color: "blue" }
]} />

### Ενισχυτές Συνέπειας

<InfoGrid items={[
  { label: "Λεπτομερείς Προδιαγραφές Μορφής", description: "Δείξε ακριβώς πώς πρέπει να φαίνεται η έξοδος", example: "Συμπεριέλαβε πρότυπο ή σχήμα", exampleType: "text", color: "purple" },
  { label: "Παραδείγματα Few-Shot", description: "Παρέχε 2-3 παραδείγματα ιδανικής εξόδου", example: "\"Δες πώς φαίνεται καλό: [παραδείγματα]\"", color: "purple" },
  { label: "Χαμηλότερο Temperature", description: "Μείωσε την τυχαιότητα για πιο προβλέψιμη έξοδο", example: "Temperature 0.3-0.5 για συνεπή αποτελέσματα", exampleType: "text", color: "purple" },
  { label: "Επικύρωση Εξόδου", description: "Πρόσθεσε βήμα επικύρωσης για κρίσιμα πεδία", example: "\"Επαλήθευσε ότι όλα τα απαιτούμενα πεδία υπάρχουν\"", color: "purple" }
]} />

<TryIt 
  title="Ενισχυτής Ποιότητας"
  description="Πρόσθεσε στοιχεία βελτίωσης ποιότητας στο prompt σου."
  prompt={`Ενίσχυσε αυτό το prompt για υψηλότερης ποιότητας εξόδους:

Αρχικό prompt:
"\${originalPrompt}"

**Ποιο πρόβλημα ποιότητας βλέπω**: \${qualityIssue}

Πρόσθεσε κατάλληλους ενισχυτές ποιότητας:
1. Αν η ακρίβεια είναι το ζήτημα → πρόσθεσε βήματα επαλήθευσης
2. Αν η συνέπεια είναι το ζήτημα → πρόσθεσε προδιαγραφές μορφής ή παραδείγματα
3. Αν η συνάφεια είναι το ζήτημα → πρόσθεσε context και περιορισμούς
4. Αν η πληρότητα είναι το ζήτημα → πρόσθεσε ρητές απαιτήσεις

Παρέχε το ενισχυμένο prompt με εξηγήσεις για κάθε προσθήκη.`}
/>

## Βελτιστοποίηση Καθυστέρησης

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

### Επιλογή Μοντέλου ανά Ανάγκη Ταχύτητας

<InfoGrid items={[
  { label: "Πραγματικού χρόνου (< 500ms)", description: "Χρησιμοποίησε το μικρότερο αποτελεσματικό μοντέλο + επιθετικό caching", example: "GPT-4o-mini, Claude Haiku, cached απαντήσεις", exampleType: "text", color: "red" },
  { label: "Διαδραστικό (< 2s)", description: "Γρήγορα μοντέλα, streaming ενεργοποιημένο", example: "GPT-4o-mini με streaming", exampleType: "text", color: "amber" },
  { label: "Ανεκτικό (< 10s)", description: "Μεσαίου επιπέδου μοντέλα, ισορροπία ποιότητας/ταχύτητας", example: "GPT-4o, Claude Sonnet", exampleType: "text", color: "green" },
  { label: "Async/Batch", description: "Χρησιμοποίησε καλύτερο μοντέλο, επεξεργασία στο παρασκήνιο", example: "GPT-4, Claude Opus για offline επεξεργασία", exampleType: "text", color: "blue" }
]} />

### Τεχνικές Ταχύτητας

<InfoGrid items={[
  { label: "Συντομότερα Prompts", description: "Λιγότερα input tokens = ταχύτερη επεξεργασία", example: "Συμπίεσε prompts, αφαίρεσε περιττό context", exampleType: "text", color: "cyan" },
  { label: "Περιόρισε την Έξοδο", description: "Θέσε max_tokens για αποτροπή ατελείωτων απαντήσεων", example: "max_tokens: 500 για περιλήψεις", exampleType: "text", color: "cyan" },
  { label: "Χρησιμοποίησε Streaming", description: "Πάρε πρώτα tokens πιο γρήγορα, καλύτερη UX", example: "Stream για οποιαδήποτε απάντηση > 100 tokens", exampleType: "text", color: "cyan" },
  { label: "Cache Επιθετικά", description: "Μην ξαναυπολογίζεις πανομοιότυπα ερωτήματα", example: "Cache κοινές ερωτήσεις, πρότυπα εξόδων", exampleType: "text", color: "cyan" }
]} />

## Βελτιστοποίηση Κόστους

Σε κλίμακα, μικρές εξοικονομήσεις πολλαπλασιάζονται σε σημαντικό αντίκτυπο προϋπολογισμού.

### Κατανόηση Κόστους

Χρησιμοποίησε αυτόν τον υπολογιστή για εκτίμηση του κόστους API σου σε διαφορετικά μοντέλα:

<CostCalculatorDemo />

### Στρατηγικές Μείωσης Κόστους

<InfoGrid items={[
  { label: "Δρομολόγηση Μοντέλων", description: "Χρησιμοποίησε ακριβά μοντέλα μόνο όταν χρειάζεται", example: "Απλές ερωτήσεις → GPT-4o-mini, Σύνθετες → GPT-4", exampleType: "text", color: "green" },
  { label: "Αποδοτικότητα Prompt", description: "Συντομότερα prompts = χαμηλότερο κόστος ανά αίτημα", example: "Κόψε 50% tokens = 50% εξοικονόμηση κόστους εισόδου", exampleType: "text", color: "green" },
  { label: "Έλεγχος Εξόδου", description: "Περιόρισε μήκος απάντησης όταν δεν χρειάζεται πλήρης λεπτομέρεια", example: "\"Απάντησε σε 2-3 προτάσεις\" vs. απεριόριστο", color: "green" },
  { label: "Batching", description: "Συνδύασε σχετικά ερωτήματα σε μονές αιτήσεις", example: "Ανάλυσε 10 στοιχεία σε ένα prompt vs. 10 ξεχωριστές κλήσεις", exampleType: "text", color: "green" },
  { label: "Προ-φιλτράρισμα", description: "Μην στέλνεις αιτήματα που δεν χρειάζονται AI", example: "Αντιστοίχιση λέξεων-κλειδιών πριν ακριβή ταξινόμηση", exampleType: "text", color: "green" }
]} />

## Ο Βρόχος Βελτιστοποίησης

Η βελτιστοποίηση είναι επαναληπτική. Δες μια συστηματική διαδικασία:

### Βήμα 1: Καθιέρωσε Βάση Αναφοράς

Δεν μπορείς να βελτιώσεις αυτό που δεν μετράς. Πριν αλλάξεις οτιδήποτε, τεκμηρίωσε αυστηρά το σημείο εκκίνησης.

<InfoGrid items={[
  { label: "Τεκμηρίωση Prompt", description: "Αποθήκευσε το ακριβές κείμενο prompt, συμπεριλαμβανομένων system prompts και προτύπων", example: "Κάνε version control τα prompts σαν κώδικα", exampleType: "text", color: "blue" },
  { label: "Σύνολο Δοκιμών", description: "Δημιούργησε 20-50 αντιπροσωπευτικές εισόδους που καλύπτουν κοινές και ακραίες περιπτώσεις", example: "Συμπεριέλαβε εύκολα, μέτρια, και δύσκολα παραδείγματα", exampleType: "text", color: "blue" },
  { label: "Μετρικές Ποιότητας", description: "Βαθμολόγησε κάθε έξοδο έναντι των κριτηρίων επιτυχίας", example: "Ακρίβεια %, βαθμός συνάφειας, συμμόρφωση μορφής", exampleType: "text", color: "purple" },
  { label: "Μετρικές Απόδοσης", description: "Μέτρησε tokens και χρονισμό για κάθε περίπτωση δοκιμής", example: "Μ.Ο. εισόδου: 450 tokens, Μ.Ο. εξόδου: 200 tokens, p50 καθυστέρηση: 1.2s", exampleType: "text", color: "purple" }
]} />

<TryIt 
  title="Πρότυπο Τεκμηρίωσης Βάσης Αναφοράς"
  description="Χρησιμοποίησέ το για δημιουργία ολοκληρωμένης βάσης αναφοράς πριν τη βελτιστοποίηση."
  prompt={`Δημιούργησε τεκμηρίωση βάσης αναφοράς για το έργο βελτιστοποίησης prompt μου.

**Τρέχον prompt**:
"\${currentPrompt}"

**Τι κάνει το prompt**: \${promptPurpose}

**Τρέχοντα ζητήματα που βλέπω**: \${currentIssues}

Δημιούργησε πρότυπο τεκμηρίωσης βάσης αναφοράς με:

1. **Στιγμιότυπο Prompt**: Το ακριβές κείμενο prompt (για version control)

2. **Περιπτώσεις Δοκιμής**: Πρότεινε 10 αντιπροσωπευτικές εισόδους δοκιμής που πρέπει να χρησιμοποιήσω, καλύπτοντας:
   - 3 τυπικές/εύκολες περιπτώσεις
   - 4 περιπτώσεις μέτριας πολυπλοκότητας
   - 3 ακραίες ή δύσκολες εισόδους

3. **Μετρικές για Παρακολούθηση**:
   - Μετρικές ποιότητας συγκεκριμένες για αυτή την περίπτωση χρήσης
   - Μετρικές αποδοτικότητας (tokens, καθυστέρηση)
   - Πώς να βαθμολογήσω κάθε μετρική

4. **Υπόθεση Βάσης Αναφοράς**: Τι περιμένω να είναι η τρέχουσα απόδοση;

5. **Κριτήρια Επιτυχίας**: Ποιοι αριθμοί θα με ικανοποιούσαν με τη βελτιστοποίηση;`}
/>

### Βήμα 2: Διαμόρφωσε Υπόθεση

<Compare 
  before={{ label: "Ασαφής στόχος", content: "Θέλω να κάνω το prompt μου καλύτερο." }}
  after={{ label: "Ελέγξιμη υπόθεση", content: "Αν προσθέσω 2 few-shot παραδείγματα, η ακρίβεια θα βελτιωθεί από 75% σε 85% γιατί το μοντέλο θα μάθει το αναμενόμενο μοτίβο." }}
/>

### Βήμα 3: Δοκίμασε Μία Αλλαγή

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

### Βήμα 4: Ανάλυσε και Αποφάσισε

Λειτούργησε; Κράτησε την αλλαγή. Έβλαψε; Επαναφορά. Ήταν ουδέτερη; Επαναφορά (το απλούστερο είναι καλύτερο).

### Βήμα 5: Επανάλαβε

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

## Λίστα Ελέγχου Βελτιστοποίησης

<Checklist 
  title="Πριν την Ανάπτυξη Βελτιστοποιημένου Prompt"
  items={[
    { text: "Ορίστηκαν σαφείς μετρικές επιτυχίας" },
    { text: "Μετρήθηκε η απόδοση βάσης αναφοράς" },
    { text: "Δοκιμάστηκαν αλλαγές σε αντιπροσωπευτικές εισόδους" },
    { text: "Επαληθεύτηκε ότι η ποιότητα δεν υποβαθμίστηκε" },
    { text: "Ελέγχθηκε ο χειρισμός ακραίων περιπτώσεων" },
    { text: "Υπολογίστηκε το κόστος στην αναμενόμενη κλίμακα" },
    { text: "Δοκιμάστηκε η καθυστέρηση υπό φορτίο" },
    { text: "Τεκμηριώθηκε τι άλλαξε και γιατί" }
  ]}
/>

<Quiz 
  question="Έχεις ένα prompt που λειτουργεί καλά αλλά κοστίζει πολύ σε κλίμακα. Ποιο είναι το ΠΡΩΤΟ πράγμα που πρέπει να κάνεις;"
  options={[
    "Άλλαξε σε φθηνότερο μοντέλο αμέσως",
    "Αφαίρεσε λέξεις από το prompt για μείωση tokens",
    "Μέτρησε ποιο μέρος του prompt χρησιμοποιεί τα περισσότερα tokens",
    "Πρόσθεσε caching για όλα τα αιτήματα"
  ]}
  correctIndex={2}
  explanation="Πριν βελτιστοποιήσεις, μέτρησε. Πρέπει να καταλάβεις πού πηγαίνουν τα tokens πριν μπορέσεις να τα μειώσεις αποτελεσματικά. Το prompt μπορεί να έχει περιττό context, αναλυτικές οδηγίες, ή να παράγει μακρύτερες εξόδους από ό,τι χρειάζεται. Η μέτρηση σου λέει πού να εστιάσεις τις προσπάθειες βελτιστοποίησής σου."
/>
