Zod mit JavaScript
Auf dieser Seite
Strukturierte Ausgaben in JavaScript
Wenn Sie in JavaScript oder TypeScript entwickeln, ist Zod das Äquivalent zu Pydantic. Diese Schema-Validierungsbibliothek integriert sich nahtlos mit der Grok-API, um typisierte strukturierte Ausgaben zu erzeugen.
Installation
npm install zod openai
Das OpenAI-SDK für JavaScript funktioniert direkt mit der Grok-API; Sie müssen lediglich auf den korrekten Endpunkt verweisen.
Client-Konfiguration
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "your-xai-key",
baseURL: "https://api.x.ai/v1"
});
Schema-Definition mit Zod
Zod verwendet eine flüssige API zur Definition von Schemata. Jede Methode entspricht einem JSON-Typ:
import { z } from "zod";
const MovieReview = z.object({
title: z.string(),
rating: z.number(),
summary: z.string(),
recommend: z.boolean()
});
Typabbildung
| Zod | JSON Schema | Pydantic (Python) |
|---|---|---|
z.string() | "type": "string" | str |
z.number() | "type": "number" | float |
z.boolean() | "type": "boolean" | bool |
z.array(z.string()) | array von Strings | list[str] |
z.object({...}) | "type": "object" | BaseModel |
z.enum([...]) | enum | Literal[...] |
z.union([...]) | anyOf | Union-Typen |
z.nullable() | anyOf mit null | str | None |
Vollständiges Beispiel
import OpenAI from "openai";
import { z } from "zod";
const client = new OpenAI({
apiKey: "your-xai-key",
baseURL: "https://api.x.ai/v1"
});
const Analyse = z.object({
titre: z.string(),
resume: z.string(),
sentiment: z.enum(["positif", "negatif", "neutre"]),
score: z.number(),
mots_cles: z.array(z.string()),
recommandation: z.boolean()
});
const response = await client.chat.completions.create({
model: "grok-4.20-0309-reasoning",
messages: [{
role: "user",
content: "Analysieren Sie den folgenden Text: Der Umsatz stieg dieses Quartal um 25%."
}],
response_format: {
type: "json_schema",
json_schema: {
name: "analyse",
schema: Analyse
}
}
});
const data = JSON.parse(response.choices[0].message.content);
console.log(data.sentiment); // "positif"
console.log(data.score); // 0.92
Verschachtelte Schemata
Wie Pydantic verarbeitet Zod Verschachtelungen natürlich:
const Adresse = z.object({
rue: z.string(),
ville: z.string(),
code_postal: z.string(),
pays: z.string()
});
const Contact = z.object({
nom: z.string(),
email: z.string(),
telephone: z.string().nullable(),
adresse: Adresse,
tags: z.array(z.string())
});
Optionale Felder mit nullable
Um ein Feld optional zu machen (d. h. null zulassen), verwenden Sie .nullable():
const Produit = z.object({
nom: z.string(),
prix: z.number(),
description: z.string().nullable(),
promotion: z.number().nullable()
});
Clientseitige Validierung
Ein Vorteil von Zod besteht darin, dass Sie Daten clientseitig mit demselben Schema validieren können:
const rawData = JSON.parse(response.choices[0].message.content);
// Validierung mit Zod
const result = Analyse.safeParse(rawData);
if (result.success) {
console.log(result.data.titre);
} else {
console.error("Validierungsfehler:", result.error);
}
In der Praxis wird die Validierung immer erfolgreich sein, da die API die Schema-Konformität garantiert. Diese zusätzliche Ebene ist jedoch für die Robustheit in der Produktion nützlich.
Kernaussagen
- Zod ist das JavaScript/TypeScript-Äquivalent zu Pydantic.
- Die Syntax ist flüssig:
z.string(),z.number(),z.object({...}). .nullable()macht ein Feld optional (kannnullsein).- Geben Sie Zod-Schemata in
response_format.json_schema.schemaan. safeParse()ermöglicht eine defensive clientseitige Validierung.- Das OpenAI-SDK für JavaScript funktioniert direkt mit der Grok-API.