Salah satu masalah paling menyebalkan saat membangun AI agents adalah inconsistency output yang tidak terduga. Model bisa menghasilkan jawaban sempurna hari ini, tapi besok malah salah total pada task yang identik. Forge, sebuah guardrails framework yang lightweight, berhasil meningkatkan akurasi agentic tasks dari 53% menjadi 99% pada model berukuran 8B parameter saja. Artikel ini akan menjelaskan cara integrasi Forge ke dalam project AI kamu dengan pendekatan step-by-step yang praktis dan bisa langsung dicoba.
LLM secara fundamental bersifat non-deterministik karena nature sampling-nya. Tanpa constraint yang eksplisit dan terstruktur, model bisa menghasilkan format JSON yang invalid, memanggil tool dengan argument yang salah tipe data, atau terjebak dalam reasoning loop yang tidak produktif. Masalahnya bukan karena modelnya tidak pintar, tapi karena kita seringkali tidak memberikan structure yang cukup ketat pada output-nya. Guardrails adalah layer validasi yang ditempatkan di antara LLM output dan business logic aplikasi kamu, bertindak sebagai safety net sebelum data diproses lebih lanjut oleh sistem downstream. Bayangkan guardrails sebagai type system untuk natural language output.
Forge tersedia sebagai package Python yang bisa diinstall melalui pip dengan mudah. Jalankan perintah berikut di terminal kamu:
pip install forge-guardrails
Buat file konfigurasi forge.yaml di root project kamu. Di dalam file tersebut, definisikan model yang akan digunakan dan API key untuk provider seperti OpenAI, Anthropic, atau local model via vLLM dan Ollama. Forge mendukung multiple providers secara native, sehingga kamu bisa melakukan mix-and-match model berdasarkan task complexity dan budget. Untuk starter, gunakan model murah seperti GPT-4o-mini untuk validasi cepat dan Claude Sonnet untuk reasoning yang lebih kompleks. Konfigurasi yang baik akan membantu kamu mengontrol cost tanpa mengorbankan reliability.
Guardrails di Forge ditulis dalam bentuk schema validasi yang konsepnya mirip Pydantic atau JSON Schema. Berikut contoh definisi guardrails untuk tool call validation yang bisa langsung kamu adaptasi:
from forge import guard, ToolSchema
@guard(schema=ToolSchema(
name="search_database",
args={"query": "string", "limit": "integer", "sort": "string"},
required=["query"]
))
def search_database(query, limit=10, sort="asc"):
# implementation here
pass
Schema di atas memastikan LLM selalu mengirimkan argument dengan tipe data yang sesuai. Jika output LLM tidak valid, Forge akan otomatis memicu retry mechanism dengan menyertakan feedback error sebagai additional context untuk self-correction. Hal ini mengurangi boilerplate code untuk manual parsing dan validation secara drastis, sehingga kamu bisa fokus pada business logic utama.
Setelah schema didefinisikan, wrap LLM call dengan Forge client agar setiap output tervalidasi secara otomatis:
from forge import ForgeClient
client = ForgeClient(model="gpt-4o-mini")
response = client.chat.completions.create(
messages=[{"role": "user", "content": "Cari user dengan email john@example.com"}],
tools=[search_database],
temperature=0.2
)
Forge akan secara transparan intercept output raw dari LLM, melakukan validasi terhadap schema yang telah didefinisikan, dan baru mengembalikan hasil ke aplikasi jika lolos semua pemeriksaan. Jika terdeteksi invalid output, Forge akan mengirimkan error message sebagai bagian dari conversation history untuk LLM retry. Self-correction loop ini terjadi secara otomatis tanpa kamu perlu menulis retry logic manual di codebase. Hasilnya adalah reliability yang jauh lebih tinggi dengan code yang lebih bersih.
Untuk membuktikan improvement yang signifikan, buat evals dataset dari 50 hingga 100 contoh conversation yang merepresentasikan use case production kamu secara akurat. Hitung baseline akurasi tanpa guardrails, lalu bandingkan hasilnya setelah Forge diaktifkan. Metrik yang paling penting untuk diukur adalah task completion rate, valid output rate, dan average retry count. Dalam benchmark publik yang dirilis oleh tim Forge, improvement dari 53% ke 99% dicapai dengan kombinasi tiga teknik: schema validation yang ketat, self-correction loop otomatis, dan penyertaan few-shot examples di dalam guardrails prompt itu sendiri. Dataset evals kamu harus mencakup edge cases dan malformed inputs untuk verifikasi yang komprehensif.
Selain tipe data dasar, Forge juga mendukung custom validator menggunakan Python function yang fleksibel. Kamu bisa menambahkan business logic spesifik seperti validasi range tanggal, cek keberadaan record di database, atau ensure compliance terhadap company policy tertentu. Contoh custom validator sederhana:
from forge import validator
@validator
def check_email_domain(args):
if not args.get("email", "").endswith("@company.com"):
return False, "Email harus menggunakan domain company.com"
return True, None
Custom validator memberikan fleksibilitas tinggi tanpa mengorbankan safety yang ditawarkan oleh guardrails framework. Kamu bisa menulis unit test untuk validator ini secara terpisah, menjaga maintainability codebase tetap tinggi seiring bertambahnya complexity agent.
Implementasi guardrails bukan lagi optional luxury untuk production AI. Dengan Forge, kamu mendapatkan structure, reliability, dan self-healing capability tanpa mengorbankan fleksibilitas natural language yang menjadi kekuatan utama LLM. Framework ini relatif lightweight dan bisa diintegrasikan ke dalam codebase existing dalam hitungan jam saja. Dokumentasi lengkap, contoh kode, dan update komunitas bisa diakses di github.com/antoinezambelli/forge. Selamat membangun agent yang lebih reliable.
Reliability adalah competitive advantage dalam era AI saat ini. User akan lebih mempercayai agent yang konsisten meskipun sedikit lebih lambat, dibanding agent yang cepat tapi sering menghasilkan error.
Dapatkan feedback, users, dan eksposur dari komunitas kreator, developer, dan entrepreneur digital Indonesia.
Submit Produk → Pelajari Dulu