Skip to content

Catatan open source

Semua tulisan
31 Okt 20269 menit bacaopen source · Go · AI SDK · LLM · developer tools · MCPBaca dalam:ENID

GoAI: SDK AI Terpadu yang Membawa Gaya Vercel AI SDK ke Go

GoAI memberi developer Go satu API terpadu untuk lebih dari 25 provider, dengan streaming type-safe, structured output generik, dan dukungan MCP, terinspirasi Vercel AI SDK.

Developer bekerja di ruangan redup dengan dua monitor berkode, diterangi lampu putih.

Kalau kamu membangun fitur AI di Go, kamu mungkin pernah merasakan kesenjangan ini. Python punya LangChain dan LiteLLM. TypeScript punya Vercel AI SDK. Go punya client satu provider yang bagus, tapi berpindah provider biasanya berarti menulis ulang kode yang memanggil model, menangani streaming, dan mem-parsing structured output. GoAI adalah SDK Go open source yang menutup kesenjangan itu dengan satu API terpadu untuk lebih dari 25 provider, terinspirasi langsung oleh Vercel AI SDK, tapi ditulis dengan cara Go, memakai generics, interface, dan functional options.

Poin Penting*

>

GoAI adalah SDK Go open source untuk membangun aplikasi AI, dengan satu API terpadu untuk lebih dari 25 provider, menurut README dan situs dokumentasi resminya.

8 fungsi intinya mencakup teks, streaming, structured output, embedding, pembuatan gambar, dan pembuatan video.

Structured output memakai generics Go: GenerateObject[T] membangun JSON Schema dari tipe Go lewat reflection, sehingga model mengembalikan nilai bertipe, bukan string yang harus kamu parsing manual.

Client MCP-nya terhubung ke server MCP lokal dan remote lewat stdio, Streamable HTTP, dan SSE lama, lalu mengubah tool MCP menjadi tool GoAI.

Proyek ini mengklaim cold start 24x lebih cepat dibanding Vercel AI SDK dalam benchmark-nya sendiri, tapi benchmark itu memakai mock HTTP server di Apple M2, jadi perlakukan sebagai klaim proyek, bukan hasil independen.

Saat artikel ini ditulis, proyek ini punya 233 stars, 37 forks, dan 350 commits di GitHub, berlisensi MIT, dan membutuhkan Go 1.25 atau lebih baru.

Tonton sinyal repo 30 detik

Sebenarnya GoAI Itu Apa

GoAI, oleh zendev-sh, menggambarkan dirinya sebagai "AI SDK, the Go way" dan "One SDK, 25 plus providers, MCP support". Sederhananya, ini adalah library yang kamu import ke program Go, bukan layanan hosted dan bukan framework agen. Kamu memilih model provider, misalnya openai.Chat("gpt-4o"), lalu memanggil fungsi yang sama apa pun provider di baliknya. Provider hosted otomatis membaca API key dari environment variable, jadi quick start-nya adalah program pendek yang memanggil goai.GenerateText dengan sebuah prompt lalu mencetak result.Text.

Pilihan desain itu adalah inti tawarannya. Vercel AI SDK memberi developer TypeScript satu set fungsi yang konsisten untuk memanggil model, melakukan streaming output, dan membiarkan model menjalankan tool. GoAI menyalin bentuk itu, lalu menyesuaikannya dengan idiom Go. Penulisnya, menulis di DEV pada April 2026, menyampaikannya dengan jelas: Python punya LangChain, LlamaIndex, dan LiteLLM, TypeScript punya Vercel AI SDK, dan Go punya pilihan, tapi tidak ada yang mencakup semua kebutuhan. GoAI adalah jawabannya atas kesenjangan itu.

Repositori ini dibuat pada 2026-03-17, dan saat artikel ini ditulis ia punya 233 stars, 37 forks, 350 commits, dan 64 releases, dengan v0.9.0 sebagai rilis terbaru yang disorot. Rilis itu menambahkan file upload yang netral terhadap provider dan referensi file remote untuk OpenAI, Anthropic, dan Google Gemini. Angka-angka itu menggambarkan proyek kecil tapi aktif dirawat, bukan standar mainstream, dan itulah kerangka yang tepat untuk menilainya.

Kenapa Go Butuh SDK Terpadu

Lanskap library AI Go, seperti dipetakan penulisnya pada April 2026, terfragmentasi dengan cara yang spesifik. Client satu provider memang kuat tapi sempit: go-openai punya sekitar 10.600 stars tapi hanya mencakup satu provider, dan client resmi openai-go dan anthropic-sdk-go memang dirancang satu provider. Library yang lebih luas ada, tapi dengan tradeoff: LangChainGo punya sekitar 9.000 stars dan sekitar 14 provider, tapi 170 plus dependensi dan tanpa dukungan MCP atau generics schema saat itu; Google Genkit Go punya sekitar 5.700 stars dan sekitar 6 provider, tapi 129 dependensi dan desain yang berat ke Google Cloud; Eino dari ByteDance punya sekitar 10.500 stars dan 10 provider, tapi ia adalah framework graph dengan cakupan berbeda.

GoAI menempatkan diri di tengah peta itu: cakupan provider luas, permukaan API kecil, dan dependensi yang sengaja dibuat kecil. Apakah tradeoff itu tepat untukmu tergantung pada apa yang kamu hargai. Kalau kamu hanya butuh satu provider, client khusus lebih sederhana. Kalau kamu butuh framework orkestrasi agen, Eino atau proyek pendamping zenflow, mesin workflow YAML deklaratif yang dibangun di atas GoAI, mungkin lebih cocok. GoAI cocok untuk kasus di antaranya: layanan Go yang memanggil model, mungkin dari lebih dari satu provider, dan ingin jalur kode yang sama untuk semuanya.

8 Fungsi Inti

GoAI menjaga permukaan API-nya tetap kecil. Semuanya bertumpu pada 8 fungsi inti, yang didokumentasikan di pkg.go.dev dan di README.

Fungsi

Kegunaan

GenerateText

Pembuatan teks tanpa streaming, satu panggilan, satu hasil

StreamText

Pembuatan teks streaming lewat channel Go

GenerateObject[T]

Structured output, dengan JSON Schema yang dibuat otomatis dari tipe Go

StreamObject[T]

Structured output streaming, dengan objek parsial saat token tiba

Embed

Satu embedding teks

EmbedMany

Embedding batch, otomatis di-chunk dan paralel

GenerateImage

Pembuatan gambar dari prompt teks

GenerateVideo

Pembuatan video dari prompt teks dan media, misalnya Google Veo

Fungsi generiknya patut dilihat lebih dekat, karena di sinilah sistem tipe Go bekerja nyata. Dengan GenerateObject[T], kamu mendefinisikan struct Go, misalnya Recipe dengan nama, bahan, langkah, dan tingkat kesulitan yang dibatasi ke easy, medium, atau hard, dan GoAI membuat JSON Schema dari struct itu lewat reflection. Model mengembalikan nilai Recipe yang bertipe, bukan teks JSON mentah. Streaming bekerja dengan cara yang sama: StreamObject[T] mengeluarkan objek parsial saat token tiba, sehingga antarmuka pengguna bisa menampilkan resep yang terisi sedikit demi sedikit, bahan demi bahan, tanpa menunggu seluruh respons.

Di sinilah batasnya juga terlihat. README mencatat bahwa pembuatan JSON Schema otomatis bekerja dengan OpenAI, Anthropic, dan Google, dan rilis v0.8.5 menambahkan structured output native Anthropic serta perbaikan sanitasi schema Gemini. Kalau provider-mu tidak termasuk kelompok itu, cek dulu cara structured output ditangani sebelum kamu mengandalkannya.

Berpindah Provider Tanpa Menulis Ulang Panggilan

Daftar provider adalah separuh tawaran lainnya. README mencantumkan lebih dari 25 provider: OpenAI, Anthropic, Google, Bedrock, Azure, Vertex, Mistral, xAI, Groq, Cohere, DeepSeek, MiniMax, Fireworks, Together, DeepInfra, OpenRouter, Requesty, Perplexity, Cerebras, Ollama, vLLM, RunPod, Runcrate, Cloudflare Workers AI, FPT Smart Cloud, NVIDIA NIM, dan lainnya, plus endpoint generik apa pun yang kompatibel dengan OpenAI. Snapshot di pkg.go.dev masih menyebut 24 plus, yang mengingatkan bahwa jumlah provider bergerak seiring proyek tumbuh, dan README adalah sumber terkininya.

Berpindah provider, dalam desain yang dimaksud, berarti mengubah konstruktor model, bukan call site. Kode GenerateText, StreamText, dan tool loop yang sama berjalan untuk OpenAI, Anthropic, atau model Ollama lokal. Itu paling terasa dalam tiga situasi: saat kamu ingin menguji model yang lebih murah terhadap prompt-mu, saat sebuah provider mengalami outage, dan saat pelanggan atau batasan deployment mengharuskan provider berbeda. Itu tidak menghapus perbedaan antar provider sepenuhnya. Model tetap berbeda dalam context window, dukungan tool, harga, dan perilaku, dan GoAI mendokumentasikan detail per provider, seperti model yang sudah diuji dan endpoint custom atau self-hosted, bukan berpura-pura perbedaan itu tidak ada.

Di luar teks, SDK ini mencakup potongan-potongan lain yang dibutuhkan aplikasi nyata. Ia punya auto tool loop: definisikan tool dengan handler Execute, atur MaxSteps, dan SDK menjalankan loop-nya untukmu. Ia punya 26 provider-defined tool, termasuk web search, web fetch, file search, pembuatan gambar, dan code execution, tergantung provider. Ia mendukung prompt caching di Anthropic, Bedrock, dan MiniMax, sitasi dan grounding dari xAI, Perplexity, Google, dan OpenAI, serta auth dinamis lewat interface TokenSource untuk OAuth, rotating keys, dan cloud IAM, dengan varian cached untuk caching berbasis TTL. Retry dengan exponential backoff untuk error HTTP yang bisa di-retry, 429 dan 5xx, sudah built in, dan 10 lifecycle hook mencakup observability dan intersepsi, termasuk permission gate, secret scanning, transformasi output, dan kontrol loop. Integrasi observability untuk Langfuse dan OpenTelemetry tersedia sebagai submodule terpisah.

Dukungan MCP, Tanpa Library Client Terpisah

Dukungan Model Context Protocol adalah tempat GoAI mendapat tempatnya di stack agen modern. Model Context Protocol adalah standar terbuka untuk menghubungkan aplikasi AI ke tool dan sumber data eksternal, dengan arsitektur client-server di mana sebuah host membuat satu client per server, dan tool, resource, dan prompt adalah primitif servernya.

GoAI membawa client MCP, yang didokumentasikan di goai.sh, yang berbicara MCP lewat tiga transport: stdio untuk server lokal yang dijalankan sebagai child process, Streamable HTTP untuk server remote, dan SSE lama untuk server remote yang lebih tua. Kamu menghubungkan client, mendaftar tool-nya, lalu mengubahnya dengan mcp.ConvertTools menjadi tool GoAI, yang kemudian bekerja dengan GenerateText dan StreamText persis seperti tool native. Untuk server remote yang dilindungi OAuth, v0.8.0 menambahkan MCP OAuth 2.1 dengan PKCE, termasuk authorization server discovery, dynamic client registration, token refresh, dan retry saat 401, sehingga tidak perlu wrapper eksternal.

Itu keuntungan praktis dibanding library yang hanya menangani panggilan model. Kalau layanan Go-mu sudah perlu berbicara dengan server MCP, misalnya server filesystem atau server tool internal, GoAI membiarkan SDK yang sama mengurus panggilan model sekaligus jembatan tool, tanpa menambah library MCP kedua dan merekatkannya manual.

Klaim Benchmark, Dibaca dengan Jujur

Klaim performa utama GoAI memang mencolok: streaming 1,1x lebih cepat, cold start 24x lebih cepat, dan memori 3,1x lebih hemat dibanding Vercel AI SDK. Tabel benchmark di README memberi angka di baliknya.

Metrik

GoAI

Vercel AI SDK

Peningkatan

Streaming throughput

1,46ms

1,62ms

1,1x lebih cepat

Cold start

569us

13,9ms

24x lebih cepat

Memori, 1 stream

220KB

676KB

3,1x lebih hemat

GenerateText

56us

79us

1,4x lebih cepat

Baca catatan kakinya sebelum kamu mengutip headline-nya. README menyatakan benchmark memakai mock HTTP server, SSE fixture yang identik, dan Apple M2. Itu cara yang masuk akal untuk mengukur overhead SDK, dan juga pengukuran yang paling menguntungkan binary Go yang dikompilasi dibanding runtime JavaScript. Cold start adalah tempat binary Go seharusnya menang, dan 569 microsecond dibanding 13,9 milidetik adalah bentuk yang masuk akal untuk kemenangan itu. Itu bukan pengukuran latensi model, throughput token pada provider nyata, atau performa aplikasi end-to-end, dan ini adalah benchmark yang dipublikasikan proyek sendiri, bukan benchmark independen. Perlakukan sebagai bukti bahwa SDK ini ringan, bukan sebagai bukti bahwa aplikasimu akan berjalan 24 kali lebih cepat.

Ada klaim kedua yang perlu dibaca hati-hati. Tagline GitHub menyebut "stdlib only", dan ringkasan sinyal mengulang gagasan itu, tapi bagian minimal dependencies di README sendiri lebih presisi: core bergantung pada golang.org/x/oauth2 dan github.com/coder/websocket untuk sesi realtime, plus satu dependensi tidak langsung. Post penulis dari April 2026 menyebut 2 dependensi pada v0.6.1. Jadi deskripsi yang jujur adalah dependensi minimal, bukan nol dependensi, dan fitur realtime voice adalah alasan dependensi websocket itu ada. Kalau kamu tidak memakai realtime voice, dependensi itu tetap ikut dalam module, jadi cek module graph untuk build-mu sendiri daripada mempercayai tagline.

Siapa yang Sebaiknya Mencoba, dan Siapa yang Sebaiknya Menunggu

GoAI paling masuk akal untuk developer Go yang sudah membangun layanan di Go dan ingin menambahkan panggilan model tanpa mengadopsi runtime bahasa kedua untuk lapisan AI. Kalau backend-mu Go, deployment-mu satu static binary, dan kamu ingin pilihan provider tanpa sidecar Python, GoAI cocok dengan bentuk stack-mu. Ia juga cocok kalau kamu menghargai structured output bertipe, karena generics memberimu kontrak compile-time untuk apa yang dikembalikan model, dan kalau kamu sudah memakai server MCP dan ingin satu SDK untuk panggilan model sekaligus jembatan tool.

Kamu mungkin sebaiknya menunggu, atau menjaga ekspektasi tetap moderat, kalau kamu butuh framework agen yang matang bukan SDK model, kalau kamu bergantung pada provider atau fitur yang belum dicakup GoAI, atau kalau timmu belum memakai Go 1.25 atau lebih baru, yang disyaratkan GoAI. Proyek ini masih muda, dibuat pada Maret 2026, dan 233 stars-nya mencerminkan adopsi awal, bukan ekosistem yang sudah mapan. Pin versi tertentu, uji provider-mu terhadap prompt-mu sendiri, dan perlakukan benchmark sebagai titik awal pengukuranmu sendiri, bukan kesimpulan.

Kalau kamu bekerja di dunia AI coding yang sama, situs ini punya spotlight terkait tentang tool yang mengubah satu prompt menjadi tim AI yang lengkap: Harness: Ubah Satu Prompt Menjadi Tim AI yang Lengkap. GoAI memberi layanan Go lapisan modelnya, dan Harness menunjukkan apa yang bisa dilakukan tim agen di atas lapisan seperti itu.

Pertanyaan yang Sering Ditanyakan

Apakah GoAI produk resmi Vercel?

Tidak. Ini proyek open source independen, berlisensi MIT, yang terinspirasi Vercel AI SDK. Ia tidak berafiliasi dengan Vercel, dan ditulis untuk Go, bukan TypeScript.

Bagaimana cara menginstalnya?

Jalankan go get github.com/zendev-sh/goai@latest di dalam Go module. Ia membutuhkan Go 1.25 atau lebih baru, dan provider hosted otomatis membaca API key dari environment variable.

Apakah berpindah provider benar-benar tidak butuh perubahan kode?

Call site tetap sama, dan kamu mengubah konstruktor model. Perbedaan provider dalam model, dukungan tool, dan perilaku tetap ada, jadi uji setiap provider terhadap prompt-mu sebelum kamu mengandalkan perpindahan itu di production.

Apakah GoAI mendukung MCP?

Ya. Client MCP-nya mendukung transport stdio, Streamable HTTP, dan SSE lama, mengubah tool MCP menjadi tool GoAI, dan sejak v0.8.0 menangani MCP OAuth 2.1 dengan PKCE untuk server remote.

Apakah GoAI benar-benar bebas dependensi?

Tidak persis. README mencantumkan dependensi minimal: golang.org/x/oauth2 dan github.com/coder/websocket untuk sesi realtime, plus satu dependensi tidak langsung. Itu footprint kecil dibanding 170 plus dependensi yang dikutip penulis untuk LangChainGo, tapi bukan nol.

Read this article in English

Tag: open source · Go · AI SDK · LLM · developer tools · MCP

Semua tulisan