Lompat ke konten
Aback Tools Logo

Guardrails AI: Validasi Output Terstruktur dengan JSON Schema

Cara Guardrails AI memvalidasi output terstruktur LLM: lima mode kegagalan respons tanpa validasi, kontrak JSON Schema, integrasi Pydantic, percobaan ulang reask, aksi on_fail, dan rangkaian alat skema gratis.

DH
Tutorials & How-Tos13 menit baca2,800 kata

Model bahasa bersifat probabilistik - mereka tidak menjamin outputnya berupa JSON yang terformat baik, memuat semua field yang wajib, atau menghormati batasan nilai yang diandalkan aplikasi Anda. Guardrails AI menyelesaikan ini dengan membungkus panggilan LLM dalam lapisan validasi berbasis JSON Schema dan validator Python, mencoba ulang secara otomatis saat model menghasilkan output yang tidak sesuai. Panduan ini menjelaskan persis cara kerjanya dan cara membangun pipeline output terstruktur yang andal dari nol.

JSON SchemaFormat kontrak intiDraft-07 dan 2020-12
reaskMekanisme percobaan ulang otomatisJumlah percobaan dapat dikonfigurasi
0 unggahanPerangkat skemaAlat skema lokal di browser

Apa itu Guardrails AI?

Guardrails AI adalah pustaka Python open source yang dirancang untuk membuat output LLM andal dan dapat diprediksi. Ia membungkus panggilan API LLM apa pun - OpenAI, Anthropic, Cohere, model lokal - dengan pipeline validasi yang memeriksa respons model terhadap skema yang ditentukan pengguna dan kumpulan validator tingkat field sebelum mengembalikan hasilnya ke kode aplikasi Anda.

Abstraksi intinya adalah objek `Guard`. Anda membangun Guard dari model Pydantic atau definisi JSON Schema, secara opsional melampirkan validator ke field tertentu, lalu memanggil Guard alih-alih memanggil LLM secara langsung. Guard menangani konstruksi prompt, parsing respons, validasi, dan permintaan ulang otomatis saat validasi gagal - semuanya dalam satu pipeline yang dapat diaudit.

Posisi Guardrails AI dalam stack LLM

Guardrails berada di antara kode aplikasi Anda dan penyedia LLM. Ia tidak menggantikan model dan tidak mengubah cara model dipanggil - ia menambahkan lapisan penegakan kontrak di sekitar panggilan. Bayangkan sebagai validator skema untuk respons API, kecuali "API"-nya adalah model bahasa yang menghasilkan bahasa natural, dan "respons"-nya perlu diurai menjadi data terstruktur sebelum bisa divalidasi.

  • Guard: antarmuka utama - membungkus panggilan LLM dan menerapkan skema + validator.
  • ValidationOutcome: objek hasil yang dikembalikan panggilan Guard - memuat output tervalidasi, status lulus/gagal, dan error field.
  • Validator: callable yang dilampirkan ke field skema dan menegakkan aturan tertentu (tipe, rentang, regex, pemeriksaan eksternal).
  • reask: mekanisme percobaan ulang - saat validasi gagal, Guardrails meminta ulang model dengan konteks galat.
  • Hub: registri validator Guardrails - kumpulan kurasi validator komunitas yang dapat dipasang via `guardrails hub install`.

Note

Guardrails AI berbeda dari mode output terstruktur bawaan OpenAI (`response_format: json_object`) dan API tool-use Anthropic. Fitur khusus penyedia tersebut menegakkan sintaks JSON dasar tetapi tidak memvalidasi nilai field, tidak menjalankan validator kustom, dan tidak mengimplementasikan logika percobaan ulang. Guardrails menambahkan semua itu di atasnya dan bekerja dengan penyedia mana pun.

Mengapa output LLM perlu validasi

Masalah fundamentalnya adalah model bahasa dilatih menghasilkan teks yang masuk akal - bukan menghormati kontrak programatik. Bahkan saat Anda meminta model mengembalikan JSON, ia bisa menghasilkan output dengan field hilang, tipe nilai salah, field tambahan yang tidak diharapkan kode hilir Anda, nilai halusinasi di luar rentang yang diizinkan, atau fragmen teks di sekitar blok JSON yang merusak parsing sepenuhnya.

Lima mode kegagalan output LLM tanpa validasi

  • Gagal parse: model membungkus JSON dengan pagar kode markdown, menambahkan komentar sebelum atau sesudah, atau menghasilkan JSON cacat yang tidak bisa diurai.
  • Field wajib hilang: model mengabaikan field yang diminta diisi, menyebabkan KeyError atau error referensi nol pada kode hilir.
  • Pelanggaran tipe: field yang diharapkan berupa angka datang sebagai string, atau boolean datang sebagai string "true" alih-alih literal `true`.
  • Pelanggaran batasan nilai: field rating mengembalikan 11 padahal rentang yang diizinkan 1-10, atau field enum mengembalikan nilai di luar daftar yang ditentukan.
  • Struktur halusinasi: model mengarang field tambahan atau menyarang objek secara berbeda dari yang dispesifikasikan skema.

Kegagalan mana pun dari daftar ini dapat merusak data hilir secara diam-diam, menyebabkan pengecualian runtime, atau membiarkan nilai buruk merambat ke logika bisnis. Untuk prototipe berisiko rendah, parsing optimis masih bisa diterima. Untuk pipeline produksi - ekstraksi faktur, parsing data klinis, sinyal deteksi fraud, pengayaan catatan pelanggan - setiap pelanggaran field adalah masalah kualitas data yang harus ditangkap dan ditangani.

Kontrak antara aplikasi Anda dan LLM hanya sekuat validasi yang Anda tegakkan pada setiap respons. Berharap bukanlah strategi validasi.

- Filosofi dokumentasi Guardrails AI

Warning

Bahkan model dengan mode output terstruktur bawaan (seperti `response_format: json_schema` milik OpenAI) hanya menjamin JSON yang valid secara sintaksis sesuai bentuk skema tingkat atas. Mereka tidak memvalidasi bahwa field `rating` berada antara 1 dan 5, bahwa field `email` memuat alamat email sungguhan, atau bahwa field `status` adalah salah satu nilai enum yang Anda tentukan. Validasi semantik tingkat field selalu memerlukan lapisan tambahan.

JSON Schema sebagai kontrak validasi

JSON Schema adalah bahasa yang dipakai Guardrails AI untuk menggambarkan wujud respons LLM yang valid. Definisi JSON Schema menetapkan struktur objek yang diharapkan - field mana yang ada, tipe mereka, mana yang wajib, dan batasan apa yang berlaku pada nilainya. Skema ini menjalankan dua peran: memberi tahu Guardrails cara memvalidasi respons yang diurai, dan dipakai Guardrails untuk membangun instruksi prompt yang memberi tahu model bentuk apa yang harus dihasilkan.

Yang dicakup JSON Schema untuk validasi LLM

Untuk kasus output terstruktur, kata kunci JSON Schema yang paling berguna adalah penegakan tipe, daftar field wajib, nilai enum, format string, dan rentang numerik. Secara bersamaan keduanya mencakup mayoritas aturan tingkat field yang perlu ditegakkan oleh tugas ekstraksi atau generasi.

product_review_schema.json
json
{
  "$schema": "https://json-schema.org/draft-07/schema",
  "type": "object",
  "required": ["product_name", "rating", "sentiment", "summary"],
  "additionalProperties": false,
  "properties": {
    "product_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "rating": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5
    },
    "sentiment": {
      "type": "string",
      "enum": ["positive", "neutral", "negative"]
    },
    "summary": {
      "type": "string",
      "minLength": 20,
      "maxLength": 500
    },
    "pros": {
      "type": "array",
      "items": { "type": "string" },
      "maxItems": 5
    },
    "cons": {
      "type": "array",
      "items": { "type": "string" },
      "maxItems": 5
    }
  }
}

Skema ini memerintahkan Guardrails menolak respons apa pun di mana `rating` di luar 1-5, `sentiment` bukan salah satu dari tiga nilai yang diizinkan, atau `summary` kurang dari 20 karakter. Field yang tercantum dalam `required` harus ada. `additionalProperties: false` menolak field tambahan apa pun yang ditambahkan model atas inisiatifnya sendiri.

Membuat skema dari contoh respons

Saat merancang tugas ekstraksi baru, mendapatkan skema awal yang tepat butuh waktu. Jalan pintas yang praktis: jalankan prompt Anda sekali tanpa validasi, periksa JSON mentah yang dikembalikan model, lalu gunakan Generator JSON Schema untuk menyimpulkan skema Draft-07 secara otomatis dari contoh itu. Skema yang dihasilkan menangkap tipe, field wajib, dan struktur tersarang. Selanjutnya Anda menyempurnakannya - mengetatkan panjang string, menambah batasan enum, menetapkan batas numerik - alih-alih menulis setiap kata kunci dari nol.

Generator JSON Schema

Tempelkan payload JSON apa pun dan dapatkan secara otomatis skema lengkap Draft-07 atau Draft 2020-12 - lokal di browser, tanpa unggahan, tanpa pendaftaran.

Open tool

Tip

Gunakan `additionalProperties: false` di setiap skema Guardrails. Tanpa itu, model dapat menambahkan field seperti `"confidence": 0.9` atau `"notes": "..."` yang lolos validasi diam-diam tetapi mencemari model data Anda. Skema yang ketat menghasilkan hasil ekstraksi lebih bersih karena model tidak bisa melemparkan ketidakpastiannya ke field karangan.

Cara Guardrails AI memvalidasi output

Memahami pipeline validasi membantu Anda men-debug kegagalan dan mengonfigurasi strategi respons yang tepat untuk setiap field. Pipeline berjalan dengan urutan tetap pada setiap panggilan Guard: injeksi prompt, parsing respons, validasi JSON Schema, eksekusi validator tingkat field, dan perakitan hasil.

1

Injeksi prompt

Sebelum prompt dikirim ke LLM, Guardrails menambahkan blok instruksi terstruktur yang diturunkan dari skema Anda. Blok ini menjelaskan format output yang diharapkan, mendaftar field wajib dengan tipe dan batasannya, dan (saat reask aktif) menyertakan galat validasi dari percobaan sebelumnya. Injeksi ini transparan - Anda menulis prompt tugas seperti biasa dan Guardrails yang mengurus instruksi format.

2

Parsing respons

Setelah model merespons, Guardrails mengekstrak JSON dari output. Ia menangani kebiasaan pemformatan model yang umum: membuang pagar kode markdown, memangkas prosa sebelum atau sesudah blok JSON, dan memperbaiki masalah sintaks kecil. Jika output tidak bisa diurai menjadi dict Python, Guard langsung memicu reask dengan pesan galat parse alih-alih melempar pengecualian.

3

Validasi JSON Schema

Dict hasil parse divalidasi terhadap JSON Schema Anda memakai validator yang sesuai standar. Pelanggaran tipe, field wajib yang hilang, ketidakcocokan enum, dan pelanggaran rentang semuanya menghasilkan objek galat terstruktur pada tahap ini. Anda bisa menguji skema Anda terhadap payload kandidat secara mandiri memakai Validator JSON Schema sebelum menghubungkannya ke Guard.

4

Eksekusi validator tingkat field

Setelah pemeriksaan JSON Schema lolos, validator yang terdaftar pada setiap field berjalan secara berurutan. Validator bawaan mencakup `ValidChoices`, `ValidRange`, `ValidURL`, `NoRefusal`, `ToxicLanguage`, `PIIFilter`, dan puluhan lainnya dari Hub. Validator kustom adalah fungsi Python biasa yang didekorasi `@register_validator`. Setiap validator mengembalikan `PassResult` atau `FailResult` dengan pesan galat yang mudah dibaca.

5

Perakitan hasil dan reask

Guardrails merakit `ValidationOutcome` yang memuat dict output tervalidasi, boolean `validation_passed`, dan daftar galat field. Jika validasi gagal dan `num_reasks` lebih besar dari nol, pipeline berputar kembali ke Langkah 1 dengan galat validasi disuntikkan ke prompt, memberi model kesempatan mengoreksi outputnya. Setiap putaran reask mengurangi penghitung percobaan ulang.

Aksi on_failApa yang dilakukanPaling cocok untuk
exceptionMelempar ValidationError seketikaPersyaratan keras - gagal cepat
reaskMeminta ulang model dengan konteks galatMayoritas kasus output terstruktur
fixMenerapkan fungsi koreksi secara otomatisNormalisasi (trim, huruf kecil, konversi)
filterMenghapus field yang gagal dari outputField pengayaan opsional
refrainMengembalikan None untuk seluruh panggilan GuardAlur fallback yang konservatif
noopMencatat kegagalan tetapi melanjutkanPipeline logging dan observabilitas

Spesifikasi Rail dan integrasi Pydantic

Guardrails AI mendukung dua gaya definisi skema: format Rail spec yang lama dan pendekatan model Pydantic yang modern. Memahami keduanya berguna karena Anda akan menemukan Rail spec di basis kode lama dan contoh komunitas, sementara Pydantic adalah jalur yang direkomendasikan untuk semua proyek baru sejak Guardrails v0.4+.

Model Pydantic sebagai skema Guard

Cara paling bersih mendefinisikan skema output Guardrails di Python adalah subclass `BaseModel` Pydantic. Model Pydantic punya ekspor JSON Schema bawaan, pemeriksaan tipe di IDE, dan sintaks Python yang familiar. Validator Guardrails dilampirkan dengan `Field()` milik Pydantic beserta metadata kustom, atau dengan mengimpor kelas validator langsung dari `guardrails`.

review_guard.py
python
from pydantic import BaseModel, Field
from guardrails import Guard
from guardrails.hub import ValidRange, ValidChoices

class ProductReview(BaseModel):
    product_name: str = Field(description="Name of the product reviewed")
    rating: int = Field(
        description="Rating from 1 to 5",
        validators=[ValidRange(min=1, max=5, on_fail="reask")]
    )
    sentiment: str = Field(
        description="Overall sentiment of the review",
        validators=[ValidChoices(
            choices=["positive", "neutral", "negative"],
            on_fail="reask"
        )]
    )
    summary: str = Field(description="One paragraph summary of the review")

# Build the Guard from the Pydantic model
guard = Guard.from_pydantic(ProductReview)

# Call the LLM through the Guard
outcome = guard(
    openai.chat.completions.create,
    model="gpt-4o",
    messages=[{"role": "user", "content": f"Extract a review from: {raw_text}"}],
    num_reasks=2,
)

if outcome.validation_passed:
    review: ProductReview = outcome.validated_output
else:
    print(outcome.error)

Pipeline Pydantic ke JSON Schema

Di balik layar, Guardrails memanggil `model.model_json_schema()` untuk mengekspor model Pydantic Anda sebagai JSON Schema, lalu memakai skema itu baik untuk injeksi prompt maupun validasi respons. Artinya, setiap model Pydantic yang bisa Anda tulis otomatis menjadi kontrak Guardrails yang valid. Anda dapat menginspeksi skema yang dihasilkan sendiri - tempelkan contoh respons ke Generator JSON Schema untuk melihat skema setaranya, lalu bandingkan dengan output model Pydantic Anda.

Jika aplikasi Anda berbasis TypeScript tetapi memanggil layanan Guardrails Python, Konverter JSON ke Zod Schema menghasilkan skema Zod yang sesuai dari contoh JSON yang sama - berguna untuk memvalidasi kontrak yang sama di sisi klien tanpa menduplikasi definisi skema secara manual.

Rail spec - format warisan

Rail spec adalah berkas XML di mana setiap elemen `<output>` menjelaskan sebuah field dengan atribut `type` dan satu atau lebih elemen anak `<validator>`. Format ini mendahului integrasi Pydantic dan kurang ergonomis bagi pengembang Python, tetapi masih didukung sepenuhnya. Jika Anda mewarisi basis kode Guardrails yang memakai berkas `.rail`, Anda dapat memigrasikan tiap spesifikasi ke model Pydantic secara bertahap - perilaku validasinya setara.

Note

Anda bisa mengonversi Rail spec yang ada menjadi padanan JSON Schema-nya dengan memanggil `guard.json_function_calling_schema` pada Guard yang dibangun dari berkas `.rail`. Ini berguna untuk migrasi ke Pydantic atau untuk men-debug skema apa yang sebenarnya disuntikkan Guard ke prompt.

Alur kerja praktis dan rangkaian alat

Alur kerja Guardrails yang andal menggabungkan perancangan skema offline, pengujian lokal, dan pemantauan produksi. Fase perancangan skema - saat Anda mendefinisikan wujud output yang valid - adalah langkah terpenting dan paling diuntungkan oleh alat khusus.

Langkah 1: Rancang skema secara offline

Sebelum menulis kode Guardrails apa pun, tetapkan skema output Anda sebagai dokumen JSON Schema mandiri. Bekerja dulu di JSON Schema memungkinkan Anda mengiterasi kontrak secara independen dari panggilan LLM - Anda bisa memvalidasi payload contoh, menyesuaikan batasan, dan memastikan skema benar sebelum menghabiskan kredit API untuk pengujian.

Validator JSON Schema di Aback Tools memungkinkan Anda menempelkan JSON Schema dan payload kandidat, lalu langsung melihat galat validasi tingkat field. Gunakan untuk memastikan array `required`, daftar enum, dan rentang numerik Anda berperilaku sesuai harapan sebelum menerjemahkan skema menjadi model Pydantic. Pemformat & Validator JSON berguna untuk memeriksa bahwa berkas skema Anda sendiri adalah JSON yang valid secara sintaksis sebelum dirujuk.

Langkah 2: Hasilkan Pydantic dari JSON

Jika Anda mengumpulkan contoh respons LLM selama prototyping, Konverter JSON ke Dataclass / Pydantic Python menghasilkan model Pydantic dari payload JSON contoh dalam satu langkah. Alat ini menyimpulkan tipe field, menangani objek tersarang, dan menerapkan `Optional` di mana field bisa absen. Gunakan outputnya sebagai titik awal lalu tambahkan validator Guardrails ke setiap field sesuai batasan dalam JSON Schema Anda.

Langkah 3: Uji secara lokal dengan respons tiruan

Guard di Guardrails bisa dipanggil dengan callable Python apa pun, bukan hanya API LLM sungguhan. Selama pengembangan, berikan fungsi tiruan yang mengembalikan respons string tetap untuk menguji pipeline validasi tanpa panggilan API. Ini membuat iterasi atas perubahan skema, konfigurasi validator, dan prompt reask cepat dan gratis sebelum tersambung ke endpoint model berbayar.


Alur skema yang direkomendasikan dengan Aback Tools

Validator JSON Schema

Validasi payload JSON apa pun terhadap skema dengan pelaporan galat tingkat field - lokal di browser, tanpa unggahan, hasil instan.

Open tool

Kasus tepi dan keterbatasan

Guardrails AI meningkatkan keandalan output terstruktur secara signifikan, tetapi bukan jaminan kebenaran. Memahami keterbatasannya membantu Anda merancang pipeline dengan fallback yang tepat alih-alih memercayai Guard tanpa syarat.

Lingkaran reask tidak selalu konvergen

Ketika model konsisten gagal pada validator tertentu, menambah lebih banyak percobaan reask tidak menolong - itu hanya menghabiskan lebih banyak kredit API untuk hasil yang sama. Beberapa mode kegagalan bersifat sistematis: model sungguhan tidak memahami sebuah batasan, atau batasan itu terlalu ketat untuk dipenuhi model secara andal dengan input yang diberikan. Audit tingkat kegagalan validator Anda dan perlakukan validator dengan tingkat kegagalan tinggi sebagai sinyal untuk meninjau definisi batasan atau prompt.

JSON Schema tidak menangkap galat semantik

Skema dapat memastikan `sentiment` salah satu dari `["positive", "neutral", "negative"]`, tetapi tidak dapat memverifikasi bahwa sentimen yang ditetapkan benar-benar tepat untuk teks input. JSON Schema dan validator menegakkan kontrak struktural dan sintaksis - keduanya tidak bisa menggantikan tinjauan manusia atau pemeriksaan kualitas hilir untuk akurasi konten. Gunakan Guardrails untuk menegakkan format dan struktur output, dan terapkan metrik evaluasi terpisah untuk kebenaran konten.

Overhead latensi dan biaya

Setiap percobaan reask adalah panggilan API LLM tambahan dengan biaya token penuh. Untuk Guard yang dikonfigurasi dengan `num_reasks=3`, ekstraksi dalam skenario terburuk dapat memicu empat panggilan LLM sebelum gagal. Pada pipeline throughput tinggi, overhead ini signifikan. Profilkan laju reask Guard Anda di staging sebelum dideploy ke produksi, dan tetapkan `num_reasks=0` untuk field yang tidak kritis di mana aksi on_fail `filter` atau `noop` adalah alternatif yang dapat diterima daripada mencoba ulang.

KeterbatasanDampakMitigasi
Lingkaran reask tidak konvergenKredit API terbuang pada kegagalan yang sudah diketahuiAudit tingkat kegagalan validator; sederhanakan batasan
Galat semantik tak tertangkapNilai salah lolos pemeriksaan strukturalTerapkan metrik evaluasi konten terpisah
Latensi akibat reaskHingga 4× biaya per panggilan gagalProfilkan laju reask; gunakan filter/noop untuk field non-kritis
Tanpa validasi antar-fieldTidak bisa menegakkan field A > field BGunakan fungsi Python pasca-validasi untuk aturan antar-field
Sensitivitas prompt penyediaFormat injeksi memengaruhi kepatuhan modelUji beberapa format prompt; gunakan mode output terstruktur bawaan

Warning

Jangan pernah memakai Guardrails sebagai satu-satunya pengaman untuk keputusan berisiko tinggi. Output terstruktur yang lolos semua pemeriksaan skema dan validator tetap berdasar pada inferensi model yang bisa saja salah. Guardrails menegakkan **format** output - bukan **akurasi faktualnya**. Terapkan tinjauan manusia atau verifikasi hilir untuk output apa pun yang memicu tindakan tak dapat dibatalkan.

Tip

Untuk aturan validasi antar-field yang tak dapat diekspresikan JSON Schema - misalnya memastikan `end_date` selalu setelah `start_date` - tambahkan validator model Pydantic pasca-Guard dengan `@model_validator(mode='after')`. Ini berjalan setelah Guardrails mengembalikan dict tervalidasi dan memberi Anda logika Python penuh untuk pemeriksaan antar-field tanpa perlu validator Guardrails kustom.

Key takeaways

  • Guardrails AI membungkus panggilan LLM dengan lapisan validasi JSON Schema dan validator tingkat field, otomatis meminta ulang model saat output gagal validasi.
  • JSON Schema mendefinisikan kontrak struktural - tipe field, field wajib, nilai enum, dan rentang numerik. Hasilkan skema awal dari payload contoh dengan Generator JSON Schema.
  • Mekanisme reask meminta ulang LLM dengan konteks galat terstruktur - dapat dikonfigurasi per panggilan Guard lewat `num_reasks`. Laju reask yang tinggi menandakan batasan terlalu ketat atau prompt yang tidak selaras.
  • Model Pydantic adalah format skema yang direkomendasikan di Guardrails v0.4+: mereka mengekspor ke JSON Schema secara otomatis dan terintegrasi dengan pemeriksaan tipe Python serta perangkat IDE.
  • Gunakan `additionalProperties: false` di setiap skema untuk mencegah model menambahkan field karangan yang lolos validasi diam-diam tetapi mencemari model data Anda.
  • JSON Schema menegakkan struktur, bukan kebenaran semantik - terapkan metrik evaluasi terpisah untuk akurasi konten di samping validasi skema Guardrails.
  • Validasi JSON Schema dan payload kandidat Anda secara offline dengan Validator JSON Schema sebelum menghubungkan Guard apa pun ke pipeline LLM aktif.

Pertanyaan yang sering diajukan

Guardrails AI is a Python library that wraps LLM API calls and validates the model's output against a user-defined schema and set of validators. It is used to enforce structured output from language models - ensuring that responses conform to expected field types, value ranges, formats, and custom business rules. It supports OpenAI, Anthropic, Cohere, and any other LLM provider accessible via a Python callable.

Guardrails AI accepts a Pydantic model or a JSON Schema definition as the output contract for a Guard. It prompts the LLM to return a response matching that schema, then validates the parsed JSON response against the schema's type and constraint rules. Field-level validators are layered on top of the JSON Schema checks to enforce rules that JSON Schema cannot express, such as checking whether a URL resolves or whether a value appears in a live database.

A Rail spec (short for Reliable AI Language) is an XML-based format used in earlier versions of Guardrails AI to define output schemas and attach validators to fields. Modern Guardrails (v0.4+) has largely moved to Pydantic models as the primary way to define the output schema, as Pydantic integrates more naturally with Python type systems and IDE tooling. Rail specs are still supported for backwards compatibility.

Pydantic validates Python objects at parse time - if the data does not match the model, it raises a ValidationError immediately. Guardrails AI goes further by orchestrating the LLM call itself, injecting schema requirements into the prompt, re-prompting the model if the output fails validation, and running validators that check runtime conditions beyond pure type checks. Guardrails uses Pydantic models as the schema definition layer but adds a correction loop on top.

Yes, via two mechanisms. The `fix` on_fail action instructs Guardrails to apply a correction function automatically - for example, converting a string to lowercase or truncating it to a maximum length. The `reask` mechanism re-prompts the LLM with the original prompt plus a structured description of which fields failed validation and why, giving the model a second chance to produce a conforming response. The number of reask retries is configurable.

Guardrails AI supports any Python callable that takes a prompt and returns a string, which means it works with OpenAI (including the Responses API), Anthropic Claude, Cohere, Mistral, local models via Ollama or vLLM, and any LangChain-wrapped provider. For providers with native structured output modes (OpenAI's `response_format`, Anthropic's tool-use API), Guardrails can use those modes to improve first-pass validation rates.

For simple use cases - extracting a fixed set of fields from a single LLM call - writing JSON Schema validation manually with AJV or Pydantic is faster and has no additional dependency. Guardrails AI adds the most value when you need reask retry logic, a library of pre-built validators, hub-distributed community validators, or a consistent validation pipeline across many LLM calls in a larger application. If your validation needs grow beyond basic type checking, Guardrails becomes worth the setup cost.

The primary Guardrails AI library is Python-only. There is no official JavaScript or Go port. For TypeScript LLM applications needing structured output, the common alternatives are Zod with Vercel AI SDK's structured output mode, or instructor-js for OpenAI function calling. If your application runs in Python even partially, you can run Guardrails in a Python service and expose the validated output over an internal API.

ShareXLinkedIn