Οι μορφές δομημένων δεδομένων όπως JSON και YAML είναι απαραίτητες για τη δημιουργία εφαρμογών που καταναλώνουν εξόδους AI προγραμματιστικά. Αυτό το κεφάλαιο καλύπτει τεχνικές για αξιόπιστη δημιουργία δομημένης εξόδου.

<Callout type="info" title="Από Κείμενο σε Δεδομένα">
Τα JSON και YAML μετατρέπουν τις εξόδους AI από ελεύθερο κείμενο σε δομημένα, ασφαλή ως προς τους τύπους δεδομένα που ο κώδικας μπορεί να καταναλώσει απευθείας.
</Callout>

## Γιατί Δομημένες Μορφές;

<JsonYamlDemo />

## Βασικά JSON Prompting

Το JSON (JavaScript Object Notation) είναι η πιο κοινή μορφή για προγραμματιστικές εξόδους AI. Η αυστηρή σύνταξή του το κάνει εύκολο στην ανάλυση, αλλά σημαίνει επίσης ότι μικρά σφάλματα μπορούν να σπάσουν ολόκληρη τη ροή εργασίας σου.

### Τι Κάνεις και Τι Δεν Κάνεις: Ζητώντας JSON

<Compare 
  before={{ label: "❌ Μην: Ασαφές αίτημα", content: "Δώσε μου τα στοιχεία χρήστη ως JSON." }}
  after={{ label: "✓ Κάνε: Δείξε το σχήμα", content: "Εξαγάγε στοιχεία χρήστη ως JSON που ταιριάζει με αυτό το σχήμα:\n\n{\n  \"name\": \"string\",\n  \"age\": number,\n  \"email\": \"string\"\n}\n\nΕπιστρέψε ΜΟΝΟ έγκυρο JSON, χωρίς markdown." }}
/>

### Απλή Έξοδος JSON

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

```
Εξαγάγε τις ακόλουθες πληροφορίες ως JSON:

{
  "name": "string",
  "age": number,
  "email": "string"
}

Κείμενο: "Επικοινώνησε με τον Γιάννη Παπαδόπουλο, 34 ετών, στο john@example.com"
```

Έξοδος:
```json
{
  "name": "Γιάννης Παπαδόπουλος",
  "age": 34,
  "email": "john@example.com"
}
```

### Ένθετες Δομές JSON

Τα δεδομένα πραγματικού κόσμου συχνά έχουν ένθετες σχέσεις. Όρισε κάθε επίπεδο του σχήματός σου καθαρά, ειδικά για πίνακες αντικειμένων.

```
Ανάλυσε αυτή την παραγγελία σε JSON:

{
  "order_id": "string",
  "customer": {
    "name": "string",
    "email": "string"
  },
  "items": [
    {
      "product": "string",
      "quantity": number,
      "price": number
    }
  ],
  "total": number
}

Παραγγελία: "Παραγγελία #12345 για την Μαρία Γεωργίου (maria@email.com): 2x Widget (10€ το καθένα), 
1x Gadget (25€). Σύνολο: 45€"
```

### Εξασφάλιση Έγκυρου JSON

<Callout type="warning" title="Κοινό Σημείο Αποτυχίας">
Τα μοντέλα συχνά τυλίγουν το JSON σε markdown code blocks ή προσθέτουν επεξηγηματικό κείμενο. Να είσαι ρητός ότι θέλεις μόνο ακατέργαστο JSON.
</Callout>

Πρόσθεσε ρητές οδηγίες:

```
ΚΡΙΣΙΜΟ: Επιστρέψε ΜΟΝΟ έγκυρο JSON. Χωρίς markdown, χωρίς εξήγηση, 
χωρίς επιπλέον κείμενο πριν ή μετά το αντικείμενο JSON.

Αν ένα πεδίο δεν μπορεί να προσδιοριστεί, χρησιμοποίησε null.
Βεβαιώσου ότι όλα τα strings είναι σωστά σε εισαγωγικά και escaped.
Οι αριθμοί δεν πρέπει να είναι σε εισαγωγικά.
```

## Βασικά YAML Prompting

Το YAML είναι πιο ευανάγνωστο από ανθρώπους από το JSON και υποστηρίζει σχόλια. Είναι το πρότυπο για αρχεία διαμόρφωσης, ειδικά στο DevOps (Docker, Kubernetes, GitHub Actions).

### Απλή Έξοδος YAML

Το YAML χρησιμοποιεί εσοχή αντί για αγκύλες. Παρέχε ένα template που δείχνει την αναμενόμενη δομή.

```
Δημιούργησε ένα αρχείο διαμόρφωσης σε μορφή YAML:

server:
  host: string
  port: number
  ssl: boolean
database:
  type: string
  connection_string: string

Απαιτήσεις: Παραγωγικός server στη θύρα 443 με SSL, PostgreSQL βάση δεδομένων
```

Έξοδος:
```yaml
server:
  host: "0.0.0.0"
  port: 443
  ssl: true
database:
  type: "postgresql"
  connection_string: "postgresql://user:pass@localhost:5432/prod"
```

### Πολύπλοκες Δομές YAML

Για πολύπλοκες διαμορφώσεις, να είσαι συγκεκριμένος σχετικά με τις απαιτήσεις. Το μοντέλο γνωρίζει κοινά μοτίβα για εργαλεία όπως GitHub Actions, Docker Compose, και Kubernetes.

```
Δημιούργησε ένα GitHub Actions workflow σε YAML:

Απαιτήσεις:
- Ενεργοποίηση σε push στο main και pull requests
- Εκτέλεση σε Ubuntu latest
- Βήματα: checkout, setup Node 18, εγκατάσταση dependencies, εκτέλεση tests
- Cache npm dependencies
```

## Ορισμοί Τύπων σε Prompts

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

### Χρήση Τύπων τύπου TypeScript

Τα TypeScript interfaces είναι οικεία στους προγραμματιστές και περιγράφουν ακριβώς προαιρετικά πεδία, τύπους ένωσης, και πίνακες. Η πλατφόρμα prompts.chat χρησιμοποιεί αυτή την προσέγγιση για δομημένα prompts.

<TryIt 
  title="Εξαγωγή με TypeScript Interface"
  description="Χρησιμοποίησε ένα TypeScript interface για εξαγωγή δομημένων δεδομένων."
  prompt={`Εξαγάγε δεδομένα σύμφωνα με αυτόν τον ορισμό τύπου:

interface ChatPersona {
    name?: string;
    role?: string;
    tone?: "professional" | "casual" | "friendly" | "technical";
    expertise?: string[];
    personality?: string[];
    background?: string;
}

Επιστρέψε ως JSON που ταιριάζει με αυτό το interface.

Περιγραφή: "Ένας senior μηχανικός λογισμικού ονόματι Αλέξης που κάνει code review. Είναι αναλυτικός και διεξοδικός, με εξειδίκευση σε backend συστήματα και βάσεις δεδομένων. Επαγγελματικός αλλά προσιτός τόνος."`}
/>

### Ορισμός JSON Schema

<Callout type="info" title="Βιομηχανικό Πρότυπο">
Το JSON Schema είναι μια επίσημη προδιαγραφή για περιγραφή δομής JSON. Υποστηρίζεται από πολλές βιβλιοθήκες επικύρωσης και εργαλεία API.
</Callout>

Το JSON Schema παρέχει περιορισμούς όπως min/max τιμές, απαιτούμενα πεδία, και regex patterns:

```
Εξαγάγε δεδομένα σύμφωνα με αυτό το JSON Schema:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "required": ["title", "author", "year"],
  "properties": {
    "title": { "type": "string" },
    "author": { "type": "string" },
    "year": { "type": "integer", "minimum": 1000, "maximum": 2100 },
    "genres": { 
      "type": "array", 
      "items": { "type": "string" }
    },
    "rating": { 
      "type": "number", 
      "minimum": 0, 
      "maximum": 5 
    }
  }
}

Βιβλίο: "1984 του George Orwell (1949) - Ένα δυστοπικό αριστούργημα. 
Είδη: Επιστημονική Φαντασία, Πολιτική Μυθοπλασία. Βαθμολογία 4.8/5"
```

## Χειρισμός Πινάκων

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

### Πίνακες Σταθερού Μήκους

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

```
Εξαγάγε ακριβώς 3 βασικά σημεία ως JSON:

{
  "key_points": [
    "string (πρώτο σημείο)",
    "string (δεύτερο σημείο)", 
    "string (τρίτο σημείο)"
  ]
}

Άρθρο: [κείμενο άρθρου]
```

### Πίνακες Μεταβλητού Μήκους

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

```
Εξαγάγε όλα τα αναφερόμενα άτομα ως JSON:

{
  "people": [
    {
      "name": "string",
      "role": "string ή null αν δεν αναφέρεται"
    }
  ],
  "count": number
}

Αν δεν αναφέρονται άτομα, επιστρέψε κενό πίνακα.

Κείμενο: [κείμενο]
```

## Τιμές Enum και Περιορισμοί

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

### Τι Κάνεις και Τι Δεν Κάνεις: Τιμές Enum

<Compare 
  before={{ label: "❌ Μην: Ανοιχτές κατηγορίες", content: "Ταξινόμησε αυτό το κείμενο σε κατηγορία.\n\n{\n  \"category\": \"string\"\n}" }}
  after={{ label: "✓ Κάνε: Περιόρισε σε έγκυρες τιμές", content: "Ταξινόμησε αυτό το κείμενο. Η Κατηγορία ΠΡΕΠΕΙ να είναι ακριβώς μία από:\n- \"technical\"\n- \"business\"\n- \"creative\"\n- \"personal\"\n\n{\n  \"category\": \"μία από τις παραπάνω τιμές\"\n}" }}
/>

### String Enums

Κατέγραψε τις επιτρεπόμενες τιμές ρητά. Χρησιμοποίησε γλώσσα "ΠΡΕΠΕΙ να είναι μία από" για να επιβάλεις αυστηρή αντιστοίχιση.

```
Ταξινόμησε αυτό το κείμενο. Η κατηγορία ΠΡΕΠΕΙ να είναι μία από αυτές τις ακριβείς τιμές:
- "technical"
- "business" 
- "creative"
- "personal"

Επιστρέψε JSON:
{
  "text": "αρχικό κείμενο (κομμένο στους 50 χαρακτήρες)",
  "category": "μία από τις παραπάνω τιμές enum",
  "confidence": αριθμός μεταξύ 0 και 1
}

Κείμενο: [κείμενο προς ταξινόμηση]
```

### Επικυρωμένοι Αριθμοί

Οι αριθμητικοί περιορισμοί αποτρέπουν τιμές εκτός εύρους. Καθόρισε τον τύπο (ακέραιος vs δεκαδικός) και το έγκυρο εύρος.

```
Βαθμολόγησε αυτές τις πτυχές. Κάθε βαθμολογία ΠΡΕΠΕΙ να είναι ακέραιος από 1 έως 5.

{
  "quality": 1-5,
  "value": 1-5,
  "service": 1-5,
  "overall": 1-5
}

Κριτική: [κείμενο κριτικής]
```

## Χειρισμός Ελλειπόντων Δεδομένων

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

### Τι Κάνεις και Τι Δεν Κάνεις: Ελλείπουσα Πληροφορία

<Compare 
  before={{ label: "❌ Μην: Άφησε το AI να μαντέψει", content: "Εξαγάγε όλες τις λεπτομέρειες εταιρείας ως JSON:\n{\n  \"revenue\": number,\n  \"employees\": number\n}" }}
  after={{ label: "✓ Κάνε: Επίτρεψε ρητά null", content: "Εξαγάγε λεπτομέρειες εταιρείας. Χρησιμοποίησε null για οποιοδήποτε πεδίο ΔΕΝ αναφέρεται ρητά. ΜΗΝ εφευρίσκεις ή εκτιμάς τιμές.\n\n{\n  \"revenue\": \"number ή null\",\n  \"employees\": \"number ή null\"\n}" }}
/>

### Τιμές Null

Επίτρεψε ρητά null και δώσε οδηγία στο μοντέλο να μην εφευρίσκει πληροφορία. Αυτό είναι ασφαλέστερο από το να μαντεύει το μοντέλο.

```
Εξαγάγε πληροφορίες. Χρησιμοποίησε null για οποιοδήποτε πεδίο δεν μπορεί 
να προσδιοριστεί από το κείμενο. ΜΗΝ εφευρίσκεις πληροφορία.

{
  "company": "string ή null",
  "revenue": "number ή null",
  "employees": "number ή null",
  "founded": "number (έτος) ή null",
  "headquarters": "string ή null"
}

Κείμενο: "Η Apple, με έδρα το Cupertino, ιδρύθηκε το 1976."
```

Έξοδος:
```json
{
  "company": "Apple",
  "revenue": null,
  "employees": null,
  "founded": 1976,
  "headquarters": "Cupertino"
}
```

### Προεπιλεγμένες Τιμές

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

```
Εξαγάγε ρυθμίσεις με αυτές τις προεπιλογές αν δεν καθορίζονται:

{
  "theme": "light" (προεπιλογή) | "dark",
  "language": "el" (προεπιλογή) | άλλος κωδικός ISO,
  "notifications": true (προεπιλογή) | false,
  "fontSize": 14 (προεπιλογή) | number
}

Προτιμήσεις χρήστη: "Θέλω σκοτεινή λειτουργία και μεγαλύτερο κείμενο (18px)"
```

## Απαντήσεις Πολλαπλών Αντικειμένων

Συχνά χρειάζεται να εξαγάγεις πολλαπλά στοιχεία από μία μόνο είσοδο. Όρισε τη δομή πίνακα και τυχόν απαιτήσεις ταξινόμησης/ομαδοποίησης.

### Πίνακας Αντικειμένων

Για λίστες παρόμοιων στοιχείων, όρισε το σχήμα αντικειμένου μία φορά και καθόρισε ότι είναι πίνακας.

```
Ανάλυσε αυτή τη λίστα σε JSON array:

[
  {
    "task": "string",
    "priority": "high" | "medium" | "low",
    "due": "ISO date string ή null"
  }
]

Λίστα εργασιών:
- Τελείωσε την αναφορά (επείγον, προθεσμία αύριο)
- Κάλεσε τον οδοντίατρο (χαμηλή προτεραιότητα)
- Ανασκόπησε PR #123 (μέση, προθεσμία Παρασκευή)
```

### Ομαδοποιημένα Αντικείμενα

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

```
Κατηγοριοποίησε αυτά τα στοιχεία σε JSON:

{
  "fruits": ["πίνακας strings"],
  "vegetables": ["πίνακας strings"],
  "other": ["πίνακας strings"]
}

Στοιχεία: μήλο, καρότο, ψωμί, μπανάνα, μπρόκολο, γάλα, πορτοκάλι, σπανάκι
```

## YAML για Δημιουργία Διαμορφώσεων

Το YAML λάμπει για διαμορφώσεις DevOps. Το μοντέλο γνωρίζει τυπικά μοτίβα για κοινά εργαλεία και μπορεί να δημιουργήσει configs έτοιμα για παραγωγή.

### Τι Κάνεις και Τι Δεν Κάνεις: YAML Configs

<Compare 
  before={{ label: "❌ Μην: Ασαφείς απαιτήσεις", content: "Δημιούργησε ένα docker-compose αρχείο για την εφαρμογή μου." }}
  after={{ label: "✓ Κάνε: Καθόρισε components και ανάγκες", content: "Δημιούργησε docker-compose.yml για:\n- Node.js app (θύρα 3000)\n- PostgreSQL βάση δεδομένων\n- Redis cache\n\nΣυμπερίλαβε: health checks, volume persistence, περιβάλλον από .env αρχείο" }}
/>

### Docker Compose

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

```
Δημιούργησε docker-compose.yml για:
- Node.js app στη θύρα 3000
- PostgreSQL βάση δεδομένων
- Redis cache
- Nginx reverse proxy

Συμπερίλαβε:
- Health checks
- Volume persistence
- Μεταβλητές περιβάλλοντος από .env αρχείο
- Απομόνωση δικτύου
```

### Kubernetes Manifests

Τα Kubernetes manifests είναι εκτενή αλλά ακολουθούν προβλέψιμα μοτίβα. Παρέχε τις βασικές παραμέτρους και το μοντέλο θα δημιουργήσει συμμορφούμενο YAML.

```
Δημιούργησε Kubernetes deployment YAML:

Deployment:
- Όνομα: api-server
- Image: myapp:v1.2.3
- Replicas: 3
- Resources: 256Mi μνήμη, 250m CPU (requests)
- Health checks: /health endpoint
- Environment από ConfigMap: api-config

Επίσης δημιούργησε αντίστοιχο Service (ClusterIP, θύρα 8080)
```

## Επικύρωση και Χειρισμός Σφαλμάτων

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

### Prompt Αυτο-Επικύρωσης

Ζήτησε από το μοντέλο να επικυρώσει τη δική του έξοδο σύμφωνα με κανόνες που καθορίζεις. Αυτό πιάνει σφάλματα μορφής και άκυρες τιμές.

```
Εξαγάγε δεδομένα ως JSON, μετά επικύρωσε την έξοδό σου.

Σχήμα:
{
  "email": "έγκυρη μορφή email",
  "phone": "μορφή E.164 (+301234567890)",
  "date": "μορφή ISO 8601 (YYYY-MM-DD)"
}

Μετά τη δημιουργία JSON, έλεγξε:
1. Το email περιέχει @ και έγκυρο domain
2. Το τηλέφωνο ξεκινά με + και περιέχει μόνο ψηφία
3. Η ημερομηνία είναι έγκυρη και αναλύσιμη

Αν η επικύρωση αποτύχει, διόρθωσε τα ζητήματα πριν απαντήσεις.

Κείμενο: [πληροφορίες επικοινωνίας]
```

### Μορφή Απάντησης Σφάλματος

Όρισε ξεχωριστές μορφές επιτυχίας και σφάλματος. Αυτό κάνει τον προγραμματιστικό χειρισμό πολύ ευκολότερο.

```
Προσπάθησε να εξαγάγεις δεδομένα. Αν η εξαγωγή αποτύχει, επιστρέψε μορφή σφάλματος:

Μορφή επιτυχίας:
{
  "success": true,
  "data": { ... εξαγόμενα δεδομένα ... }
}

Μορφή σφάλματος:
{
  "success": false,
  "error": "περιγραφή του τι πήγε στραβά",
  "partial_data": { ... όποια δεδομένα μπόρεσαν να εξαχθούν ... }
}
```

## JSON εναντίον YAML: Πότε να Χρησιμοποιήσεις Ποιο

<div className="my-4 grid md:grid-cols-2 gap-4">
  <div className="p-4 bg-amber-50 dark:bg-amber-950/30 rounded-lg border border-amber-200 dark:border-amber-800">
    <div className="font-semibold text-amber-700 dark:text-amber-300 mb-2">Χρησιμοποίησε JSON Όταν</div>
    <div className="text-sm space-y-1">
      <p className="m-0!">Χρειάζεται προγραμματιστική ανάλυση</p>
      <p className="m-0!">Απαντήσεις API</p>
      <p className="m-0!">Αυστηρές απαιτήσεις τύπων</p>
      <p className="m-0!">Ενσωμάτωση JavaScript/Web</p>
      <p className="m-0!">Συμπαγής αναπαράσταση</p>
    </div>
  </div>
  <div className="p-4 bg-purple-50 dark:bg-purple-950/30 rounded-lg border border-purple-200 dark:border-purple-800">
    <div className="font-semibold text-purple-700 dark:text-purple-300 mb-2">Χρησιμοποίησε YAML Όταν</div>
    <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!">DevOps/Infrastructure</p>
      <p className="m-0!">Βαθιά ένθετες δομές</p>
    </div>
  </div>
</div>

## Δομημένα Prompts στο Prompts.chat

Στο prompts.chat, μπορείς να δημιουργήσεις prompts με δομημένες μορφές εξόδου:

```
Όταν δημιουργείς ένα prompt στο prompts.chat, μπορείς να καθορίσεις:

Type: STRUCTURED
Format: JSON ή YAML

Η πλατφόρμα θα:
- Επικυρώνει τις εξόδους σύμφωνα με το σχήμα σου
- Παρέχει syntax highlighting
- Επιτρέπει εύκολη αντιγραφή δομημένης εξόδου
- Υποστηρίζει template μεταβλητές στο σχήμα σου
```

## Κοινές Παγίδες

<Callout type="warning" title="Αποσφαλμάτωσε Αυτά Πρώτα">
Αυτά τα τρία ζητήματα προκαλούν τις περισσότερες αποτυχίες ανάλυσης JSON. Έλεγξέ τα όταν ο κώδικάς σου δεν μπορεί να αναλύσει έξοδο AI.
</Callout>

### 1. Markdown Code Blocks

**Πρόβλημα:** Το μοντέλο τυλίγει το JSON σε ```json blocks

**Λύση:** 
```
Επιστρέψε ΜΟΝΟ το JSON αντικείμενο. Μην τυλίγεις σε markdown code blocks.
Μην συμπεριλαμβάνεις ```json ή ``` markers.
```

### 2. Trailing Commas

**Πρόβλημα:** Άκυρο JSON λόγω trailing commas

**Λύση:**
```
Εξασφάλισε έγκυρη σύνταξη JSON. Χωρίς trailing commas μετά το τελευταίο 
στοιχείο σε πίνακες ή αντικείμενα.
```

### 3. Unescaped Strings

**Πρόβλημα:** Εισαγωγικά ή ειδικοί χαρακτήρες σπάνε το JSON

**Λύση:**
```
Κάνε σωστά escape τους ειδικούς χαρακτήρες σε strings:
- \" για εισαγωγικά
- \\ για backslashes
- \n για νέες γραμμές
```

## Σύνοψη

<Callout type="tip" title="Βασικές Τεχνικές">
Όρισε σχήματα ρητά χρησιμοποιώντας TypeScript interfaces ή JSON Schema. Καθόρισε τύπους και περιορισμούς, χειρίσου nulls και προεπιλογές, ζήτησε αυτο-επικύρωση, και επίλεξε τη σωστή μορφή για την περίπτωση χρήσης σου.
</Callout>

<Quiz 
  question="Πότε πρέπει να προτιμήσεις YAML έναντι JSON για εξόδους AI;"
  options={[
    "Όταν χτίζεις REST APIs",
    "Όταν η έξοδος πρέπει να είναι αναγνώσιμη από ανθρώπους και μπορεί να περιλαμβάνει σχόλια",
    "Όταν εργάζεσαι με εφαρμογές JavaScript",
    "Όταν χρειάζεσαι την πιο συμπαγή αναπαράσταση"
  ]}
  correctIndex={1}
  explanation="Το YAML προτιμάται όταν η αναγνωσιμότητα από ανθρώπους έχει σημασία, όπως αρχεία διαμόρφωσης, DevOps manifests, και τεκμηρίωση. Επίσης υποστηρίζει σχόλια, σε αντίθεση με το JSON."
/>

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