Membedah Genkit Middleware: Membuat Aplikasi Agentik Lebih Kuat dan Fleksibel

Membedah Genkit Middleware: Membuat Aplikasi Agentik Lebih Kuat dan Fleksibel

By Reggi, 16 May 2026

Membangun aplikasi agentik atau fitur AI yang siap produksi itu tidak mudah. Hanya mengandalkan model canggih atau prompt yang bagus saja tidak cukup. Anda pasti membutuhkan keandalan maksimal, persetujuan manusia sebelum eksekusi berbahaya, serta kemampuan observasi di setiap lapisan. Di sinilah Genkit Middleware: Intercept, Extend, and Harden Your Agentic Apps hadir sebagai solusi kunci.

Genkit adalah sebuah framework open-source yang dirancang untuk membantu Anda menciptakan aplikasi agentik yang tangguh. Framework ini mendukung banyak bahasa pemrograman, seperti TypeScript, Go, Dart, dan Python. Sistem middleware-nya sendiri sudah tersedia di TypeScript, Go, dan Dart, sementara dukungan untuk Python akan segera menyusul.

Apa Itu Genkit dan Kenapa Kita Butuh Middleware?

Pada dasarnya, setiap panggilan generate di Genkit menjalankan sebuah generation loop. Dalam loop ini, model menghasilkan output, alat-alat yang diminta akan dieksekusi, hasilnya kembali masuk ke panggilan model baru, dan siklus ini berulang sampai model selesai.

Untuk membuat aplikasi agentik yang andal di dunia nyata, kita perlu menambahkan beberapa "lapisan pelindung" ekstra. Misalnya, apa yang terjadi jika panggilan API model Anda gagal? Bagaimana jika model mencoba melakukan tindakan yang bisa merusak? Middleware hadir untuk menjawab tantangan-tantangan ini.

Middleware Genkit adalah hook yang dapat disusun. Hook ini akan mencegat panggilan generate, termasuk loop eksekusi tool, lalu menyuntikkan perilaku kustom ke dalamnya. Anda bisa melampirkan hook middleware pada tiga lapisan loop ini:

  • Pre-call: Sebelum panggilan model utama.
  • Post-call: Setelah panggilan model selesai.
  • Tool-call: Saat alat-alat dieksekusi.

Middleware Bawaan: Solusi Siap Pakai

Genkit menyediakan beberapa middleware bawaan yang bisa langsung Anda pakai untuk skenario umum. Ini sangat menghemat waktu pengembangan:

Nama MiddlewareFungsi UtamaDetail
RetryMengulang panggilan API model yang gagal.Secara otomatis mencoba kembali panggilan API model yang gagal karena kesalahan transien (misalnya, HTTP 429 atau 500) dengan exponential backoff dan jitter. Hanya panggilan model yang diulang.
FallbackBeralih ke model alternatif.Mengganti ke model lain jika model utama gagal pada kode kesalahan tertentu. Berguna untuk beralih penyedia jika model utama Anda melebihi kuota.
Human-in-the-loop (Allow-list)Membatasi eksekusi tool.Membatasi eksekusi tool pada daftar yang diizinkan saja. Tool yang tidak ada dalam daftar akan memicu interupsi, sehingga perlu konfirmasi manual sebelum tindakan dilanjutkan.
SkillsMemuat "skill" atau kemampuan model.Memindai direktori untuk file .skill dan menyuntikkan kontennya ke system prompt. Juga menyediakan tool loadSkill agar model bisa memuat skill tertentu sesuai kebutuhan.
Filesystem (LocalFS)Memberi model akses terbatas ke filesystem.Memberi model akses terbatas ke sistem file lokal melalui tool yang disuntikkan (misalnya, read dan write jika diaktifkan). Keamanan path diterapkan sehingga model tidak bisa keluar dari direktori root yang ditentukan.

Membangun Middleware Kustom Anda Sendiri

Meskipun middleware bawaan sangat berguna, kekuatan Genkit yang sebenarnya ada pada kemampuan Anda untuk menulis middleware kustom. Bayangkan Anda sedang membuat aplikasi dukungan pelanggan agentik dan perlu memastikan model tidak pernah menyebutkan produk pesaing atau data harga internal. Daripada menulis aturan ini di setiap prompt, Anda bisa menerapkannya secara deterministik dengan middleware.

Middleware kustom mengikuti kontrak sederhana di semua bahasa yang didukung: Anda memberikan nama dan sebuah factory function yang mengembalikan hook yang Anda inginkan. Factory function ini dipanggil sekali per pemanggilan generate, dan Anda hanya perlu mengimplementasikan hook yang Anda butuhkan.

Berikut contoh sederhana kode content filter kustom yang mungkin Anda buat:

jsx
import { Middleware, preCall } from '@genkit-ai/core'; export const myContentFilter: Middleware = { name: 'my-content-filter', factory: () => ({ preCall: async ({ config, context, input }) => { // Logic untuk memeriksa konten input if (input.text && input.text.includes('competitor-product')) { throw new Error('Mentioning competitor products is not allowed.'); } // Tambahkan logic lain untuk memeriksa data internal, dll. return { config, context, input }; }, // Anda bisa menambahkan postCall atau toolCall hooks di sini }), };

Kekuatan Komposisi dan Debugging

Anda bahkan dapat menggabungkan dan menumpuk berbagai solusi middleware. Middleware ditumpuk dari kiri ke kanan. Middleware yang pertama kali disebut menjadi pembungkus terluar. Misalnya, myCustomMiddleware membungkus pre-call yang membungkus panggilan model. Urutan ini penting, dan Genkit membuatnya sangat jelas.

Jika Anda merasa telah membangun middleware yang akan bermanfaat bagi pengembang lain, Anda bisa mempublikasikannya sebagai package agar bisa digunakan secara luas.

Genkit juga menyediakan Dev UI yang bisa Anda gunakan untuk memeriksa, menguji, dan melakukan debug pada aplikasi Anda, termasuk eksekusi middleware. Saat Anda mendaftarkan middleware, ia akan terlihat di Dev UI. Anda bisa memeriksa konfigurasinya, menelusuri eksekusi melalui setiap lapisan hook, dan menguji berbagai kombinasi.

Kami menantikan kemampuan baru yang Genkit middleware hadirkan untuk aplikasi Anda. Kami juga ingin melihat middleware kustom apa yang akan Anda bangun untuk memecahkan masalah spesifik Anda. Jika Anda baru mengenal framework ini, silakan kunjungi dokumentasi Genkit. Jika Anda punya ide untuk middleware bawaan baru, sampaikan ide Anda kepada kami.

Referensi

https://developers.googleblog.com/announcing-genkit-middleware-intercept-extend-and-harden-your-agentic-apps/


🔥 Sedang Ramai Dibaca