Tim Astro Secara Rahasia Membangun Kerangka Kerja Agen AI Terbaik
BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술
Transcript
00:00:00Ini adalah Flu, framework open source untuk membangun agen AI yang dibuat oleh tim di balik Astro,
00:00:04yang pada dasarnya mengambil fungsi Cloud Code sebagai harness dan menjadikannya 100% dapat diprogram.
00:00:09Jadi hal-hal seperti keterampilan, alat, sandbox didukung secara langsung,
00:00:13sehingga Anda dapat membuat harness agen yang lengkap dan menerapkannya di mana saja hanya dalam beberapa baris TypeScript.
00:00:19Tapi mengapa tim Astro memutuskan untuk membangun framework harness agen sejak awal?
00:00:23Dan apa trik keren yang bisa Anda lakukan dengan sandbox yang memungkinkan Anda menjalankan agen dengan jauh lebih murah?
00:00:28Klik subscribe dan mari kita cari tahu.
00:00:33Flu dibangun oleh salah satu pendiri Astro, dan lucunya,
00:00:36mereka tidak berniat membangun framework harness agen.
00:00:39Fred dan tim membangun Flu untuk menjalankan alur kerja AI di dalam repo GitHub milik Astro sendiri.
00:00:44Namun ketika insinyur lain dari Amplitude mencobanya,
00:00:47tim menyadari bahwa ini adalah alat yang dapat diakses oleh agen apa pun,
00:00:51yang sebenarnya masuk akal jika Anda memikirkannya.
00:00:53Maksud saya, mari kita lihat Cloud Code, sebagai contoh.
00:00:55Di bawah antarmuka terminal atau chat UI terdapat sebuah harness,
00:00:58jadi ia mendukung alat kustom dari server MCP, ia membaca file Cloud MD,
00:01:02ia memiliki dukungan sandbox dan dukungan untuk keterampilan yang dapat digunakan kembali.
00:01:05Ini dan banyak lagi yang memungkinkan model untuk melakukan pekerjaan nyata,
00:01:08yang bisa diberikan Flu kepada Anda hanya dalam beberapa baris kode.
00:01:11Ia melakukan ini dengan dibangun di atas Pi, yang merupakan harness agen minimal itu sendiri,
00:01:16hal yang sama yang menjadi dasar OpenClaw,
00:01:18dan ia membungkus framework nyata di sekitar inti agen Pi.
00:01:21Flu sebenarnya melakukan sesuatu yang cerdas dengan sandbox untuk membantu Anda menjalankannya dengan jauh lebih murah,
00:01:25yang akan saya bahas sedikit nanti.
00:01:26Tapi jika kita kembali ke contoh Cloud Code,
00:01:28ia mengasumsikan bahwa ada manusia di belakang kemudi yang mengendalikan agen,
00:01:31yang biasanya memang begitu.
00:01:33Tapi Flu tidak memiliki batasan yang sama.
00:01:35Dengan Flu, Anda bisa membangun agen seperti Cloud Code yang memerlukan input manusia,
00:01:38tetapi Anda juga bisa membangun alur kerja yang tidak memerlukan manusia sama sekali,
00:01:42yang berguna untuk proses agentic yang sangat spesifik
00:01:44dan tidak perlu sering berubah.
00:01:46Sekarang, Anda mungkin berpikir,
00:01:47ini terdengar sangat mirip dengan sesuatu seperti Mastra atau Vercel AI SDK,
00:01:52dan saya akan membahas perbedaannya nanti.
00:01:54Faktanya, perbedaannya akan jauh lebih jelas jika kita melalui demo sederhana.
00:01:57Jadi mari kita lakukan itu.
00:01:58Jadi untuk memulai, Anda harus menginstal runtime Flu,
00:02:01yaitu apa yang diimpor dan dijalankan oleh agen Anda,
00:02:04dan kemudian Anda harus menginstal CLI Flu,
00:02:06yang mengompilasi dan melayani agen Anda.
00:02:08Anda juga harus menyiapkan kunci API dari salah satu dari banyak penyedia yang didukung Pi.
00:02:13Untuk demo ini, saya akan menggunakan Anthropic,
00:02:15dan kemudian Anda harus menjalankan flu init dengan target,
00:02:18yang membuat file konfigurasi flu sehingga CLI tahu cara mengemas proyek Anda.
00:02:22Anda dapat memilih antara Node atau Cloudflare,
00:02:24dan saya akan membahas perbedaannya dalam sekejap.
00:02:26Tapi saya sudah melakukan langkah-langkah ini,
00:02:27jadi mari kita lihat seperti apa file-file ini.
00:02:30Jadi inilah file-file tipikal yang Anda dapatkan dari proyek bun kosong,
00:02:33dan beberapa file ini bahkan tidak digunakan.
00:02:35Jika kita melihat index.ts, ini tidak akan digunakan untuk apa pun.
00:02:38Begitu juga file readme,
00:02:39tetapi yang sebenarnya akan digunakan adalah file flu config.ts ini,
00:02:42yang menggunakan Vite di balik layar,
00:02:45CLI untuk menggunakan Node alih-alih Cloudflare.
00:02:47Dan perbedaannya adalah Node menggunakan server HTTP di atas HONO,
00:02:51dan Cloudflare akan menyebarkan proyek Anda ke pekerja
00:02:53dengan objek tahan lama untuk persistensi.
00:02:55Sekarang, setelah Anda melakukan langkah-langkah itu,
00:02:56Anda harus membuat direktori baru,
00:02:57entah itu untuk agen atau alur kerja.
00:03:00Kita akan membahas alur kerja nanti,
00:03:01tetapi untuk saat ini, saya mulai dengan agen sederhana,
00:03:03yang berisi kode dalam dokumentasi.
00:03:05Dan ini pada dasarnya mengatur model
00:03:06dan menambahkan beberapa instruksi,
00:03:08yang ditambahkan ke prompt sistem.
00:03:09Dan hanya itu.
00:03:10Itu semua yang Anda butuhkan untuk membuat agen flu dasar.
00:03:13Mari kita lihat cara kerjanya.
00:03:14Untuk menjalankannya, kita bisa menggunakan flu connect,
00:03:15yang membangun dan menjalankan agen.
00:03:17Dan kita mencocokkan nama file TS kita,
00:03:20yaitu hello world,
00:03:21sebelum memberikan ID instans,
00:03:22yang bisa berupa apa saja.
00:03:24Jadi bisa juga lokal satu, dua, tiga.
00:03:25Tapi ini berguna jika Anda memiliki banyak agen yang berjalan
00:03:27dan setiap agen dapat memiliki ID uniknya sendiri.
00:03:29Ini juga berguna untuk menyebarkan ke Cloudflare
00:03:31karena ID ini memetakan ke instans objek tahan lamanya sendiri.
00:03:35Jadi sekarang jika kita tekan enter,
00:03:36kita bisa melihatnya memuat konfigurasi,
00:03:38membaca target dan menjalankan agen yang ditemukannya.
00:03:40Sekarang kita tidak memiliki file agen MD,
00:03:42tetapi jika kita memilikinya, ia akan menggunakan itu.
00:03:43Dan sekarang ia telah membangun agen ke file server.mjs ini
00:03:46dan telah memberi kita kemampuan untuk memasukkan prompt.
00:03:48Jadi saya bisa mengatakan sesuatu seperti, beri saya lelucon acak.
00:03:50Dan di sini kita bisa melihat agen mulai berpikir,
00:03:52ia merespons, jadi mengalirkan siklus hidupnya.
00:03:54Kemudian ia memberi saya lelucon, meminta saya untuk yang lain.
00:03:57Tetapi kemudian di sini, ia mencetak JSON terakhir,
00:03:59yang terdiri dari teks,
00:04:00serta beberapa token input dan output,
00:04:02biaya dari seluruh prompt
00:04:03dan model yang digunakan.
00:04:05Tentu saja, kita bisa terus berbicara dengan agen ini,
00:04:06tapi untuk saat ini, saya akan mematikannya.
00:04:08Dan itulah contoh membangun agen dasar dengan Flu.
00:04:11Mari kita lakukan sesuatu yang sedikit lebih rumit.
00:04:13Mari kita bangun alur kerja untuk membantu menghasilkan beberapa judul
00:04:15untuk video YouTube ini.
00:04:16Dan untuk melakukan itu, lagi, kita membuat agen
00:04:18dengan instruksi yang lebih kompleks.
00:04:20Dan kali ini kita benar-benar memiliki keterampilan.
00:04:23Jadi keterampilan diimpor di sini dengan atribut impor keterampilan.
00:04:26Dan di sini, perhatikan kita tidak lagi mengekspor agen itu sendiri,
00:04:29tetapi kali ini kita mengekspor fungsi yang disebut run.
00:04:31Dan apa yang dilakukannya adalah menginisialisasi agen
00:04:34untuk alur kerja dan kemudian membuka sesi di harness.
00:04:36Nah, apa yang terjadi selanjutnya cukup menarik.
00:04:38Jadi di sini, apa yang terjadi adalah kita mendapatkan jalur
00:04:41dari payload, yang diatur di sini
00:04:43dalam jenis konteks flux ini.
00:04:44Jadi jika kita mengubah nama di sini menjadi file,
00:04:46kita akan mendapatkan kesalahan tipe.
00:04:47Dan di sini mendapatkan file,
00:04:49yang saya sebut skrip,
00:04:50dan memasukkannya sebagai prompt.
00:04:52Jadi ini semua akan masuk akal
00:04:53jika kita melihat instruksi di sini,
00:04:55yang kita suruh dia mempelajari skrip
00:04:57dan memberi saya 10 judul YouTube clickbait
00:04:59menggunakan keterampilan skor judul untuk memberi peringkat pada mereka.
00:05:01Jadi mari kita lihat apakah ini berhasil.
00:05:02Tapi sebelum kita melakukannya,
00:05:03saya ingin membuatnya jelas bahwa alur kerja
00:05:04berada di direktori alur kerja
00:05:06dan keterampilan ada di direktori keterampilan
00:05:08dari root proyek.
00:05:09Dan untuk menjalankan alur kerja ini,
00:05:10kita perlu menjalankan flu run dengan nama alur kerja kita.
00:05:13Dalam kasus saya, itu YT titles,
00:05:14diikuti oleh target dan payload JSON,
00:05:16yaitu jalur untuk skrip ini.
00:05:18Jadi jika kita tekan enter,
00:05:19kita akan melihat kita mendapatkan ID alur kerja.
00:05:21Dan di sini ia melakukan sesuatu yang agak aneh.
00:05:23Ia sebenarnya mencari-cari keterampilan itu,
00:05:25meskipun saya sudah menetapkannya sebelumnya.
00:05:27Dan sekarang dalam penalaran ini,
00:05:27ia memberitahu saya tidak ada file pada sistem file.
00:05:30Mengapa ia melakukan itu?
00:05:31Jadi secara default,
00:05:32flu menjalankan agen di sandbox hanya menggunakan bash.
00:05:35Yang ia miliki aksesnya adalah deskripsi keterampilan,
00:05:37yang telah didaftarkan di sini,
00:05:39tetapi ia tidak memiliki akses ke file-file ini
00:05:42yang terkait dengan keterampilan.
00:05:43Dan keterampilan itu sendiri, jika kita melihatnya,
00:05:44ia sebenarnya menjalankan skrip Python menggunakan bash
00:05:47untuk mendapatkan skor gaya vidIQ yang akurat
00:05:50untuk judul YouTube.
00:05:51Jadi untuk memperbaikinya,
00:05:52saya akan mengimpor lokal dari flu runtime node,
00:05:54yang memberitahu flu untuk menjalankan agen pada sistem lokal saya
00:05:57sehingga ia memiliki akses ke semua file saya
00:05:59dan dapat menjalankan skrip Python.
00:06:01Jika Anda sadar keamanan,
00:06:02saya akan menjelaskan bagaimana Anda bisa mengatasi ini
00:06:03nanti di video.
00:06:04Tapi kita juga akan mengubah
00:06:05direktori kerja saat ini ke keterampilan
00:06:07di dalam direktori keterampilan proyek ini.
00:06:10Sehingga flu tidak perlu mencari-cari
00:06:11untuk menemukan file tepat yang dibutuhkannya.
00:06:13Dan sekarang ketika saya menjalankan alur kerja ini,
00:06:15kita bisa melihat flu segera membaca file MD keterampilan
00:06:17dan mampu menghasilkan 10 judul clickbait
00:06:20dengan skor untuk masing-masingnya.
00:06:21Sekarang, jika Anda tidak ingin memberikan agen
00:06:22akses alur kerja ke sistem lokal Anda,
00:06:25apa yang bisa Anda lakukan sebagai gantinya
00:06:26adalah membuat alat kustom dari file Python.
00:06:28Jadi di sini saya memuat file Python dalam keterampilan
00:06:30dan membuat alat yang disebut skor judul,
00:06:33yang menggunakan value bots untuk memverifikasi parameter
00:06:35dan kemudian menjalankan skrip Python.
00:06:37Kemudian kita bisa mendaftarkan alat ini di dalam agen kita
00:06:40dan semuanya harus bekerja seperti yang diharapkan.
00:06:42Tapi sekarang mari kita kembali ke proyek sebelumnya
00:06:44dan katakan kita ingin memicunya berdasarkan panggilan posting HTTP.
00:06:47Nah, hanya ada satu hal yang perlu kita lakukan untuk mengaktifkan itu.
00:06:50Dan itu adalah cukup menambahkan root middleware.
00:06:52Sekarang, yang perlu kita lakukan hanyalah membangun proyek flu,
00:06:54tentukan target kita, port opsional,
00:06:56dan kemudian jalankan file server kita.
00:06:58Dan sekarang ia mendengarkan pada port yang kita tentukan.
00:07:00Perhatikan bahwa file server.js
00:07:01menyisipkan agen atau alur kerja apa pun yang kita miliki.
00:07:03Jadi kita hanya perlu file ini
00:07:05jika kita ingin menyebarkannya di mana saja yang mendukung Node.js.
00:07:07Sekarang saya bisa menjalankan curl dengan metode post
00:07:09ke port yang ditentukan,
00:07:11pilih alur kerja dan berikan beberapa data,
00:07:13yang memberi kita ID alur kerja.
00:07:14Dan kemudian jika kita curl untuk alur kerja,
00:07:16tentukan ID alur kerja khusus kita
00:07:18dan menyalurkan ke JQ hanya untuk membuatnya lebih mudah dibaca,
00:07:21kita bisa melihat informasi tentang alur kerja kita
00:07:23dan ringkasan hasilnya.
00:07:25Tentu saja, Flu mendukung WebSocket alih-alih HTTP
00:07:27jika Anda ingin mengalirkan informasi alur kerja.
00:07:29Sekarang, seperti biasa, ada begitu banyak fitur yang dimiliki Flu
00:07:31yang tidak sempat saya bahas,
00:07:33seperti profil agen untuk agen yang dapat digunakan kembali,
00:07:35dukungan untuk Daytona, sandbox Cloudflare,
00:07:37atau sandbox lainnya hanya dengan menggunakan URL,
00:07:40menambahkan rute kustom untuk otentikasi atau pemeriksaan kesehatan,
00:07:42dan bahkan dukungan untuk sub-agen.
00:07:44Tapi bagaimana ini dibandingkan
00:07:45dengan framework agen AI open source lain seperti Mastra?
00:07:48Yah, terakhir kali saya menggunakan Mastra
00:07:49adalah ketika saya membuat video ini,
00:07:50yang bisa Anda jeda video ini dan pergi menonton
00:07:52jika Anda ingin penyegaran tentang apa itu.
00:07:54Tapi ketika saya menggunakannya,
00:07:55Anda masih harus mengatur sesi secara manual,
00:07:58memori, sandbox, dan pemuatan alat sendiri.
00:08:01Itu adalah proses langkah-demi-langkah yang jauh lebih granular,
00:08:03dan saya tidak yakin apakah itu telah berubah
00:08:05menjadi lebih sederhana,
00:08:06tetapi saya pikir pendekatan yang diambil Flu
00:08:08benar-benar berbeda.
00:08:10Ini lebih merupakan pendekatan harness-first
00:08:11dan mengasumsikan bahwa Anda akan menggunakan
00:08:13fitur-fitur ini sejak awal.
00:08:14Berbicara tentang sandbox,
00:08:16Flu sebenarnya melakukan sesuatu yang sangat cerdas dengan mereka.
00:08:18Jadi setiap agen mendapatkan sandbox-nya sendiri secara default,
00:08:21yang saya jelaskan sebelumnya dalam demo,
00:08:22tetapi sandbox ini didukung oleh just Bash milik Vercel,
00:08:25yang mengimplementasikan kembali Bash dalam TypeScript.
00:08:27Jadi ia menjalankan sandbox ini dalam memori
00:08:29bukan kontainer nyata,
00:08:31artinya Anda mendapatkan akses ke alat grep, glob, dan baca
00:08:34tanpa membayar kontainer setiap kali,
00:08:35yang harus mem-boot seluruh mesin Linux
00:08:38tepat sebelum Anda bisa melakukan apa pun.
00:08:40Artinya Flu menjalankan ribuan agen
00:08:41dengan hampir tidak ada biaya,
00:08:43dan Anda bisa memilih untuk menggunakan kontainer nyata
00:08:44hanya saat Anda membutuhkannya.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video