Sudah beberapa saat sejak saya menulis artikel. saya maksud, mengapa saya? Anda mendesak AI tentang topik, dan itu menyemprotkan semua yang Anda butuhkan. Yang kinda membunuh kegembiraan bagi saya, saya akhirnya menyusun seperti 10 artikel tetapi tidak pernah menerbitkan salah satu dari mereka. Namun, sebagian dari saya percaya orang menikmati membaca sesuatu yang dibuat manusia. Seperti, AI tidak akan membuat Anda duduk melalui intro yang membosankan ini, tetapi hey, itu manusia, gila, tetapi manusia. terima kasih, sebaliknya. Bagaimanapun, saya menulis tentang AI hari ini (ironi ha). baru saja turun paket baru, Laravel Boost, yang pada dasarnya membuat AI menghisap kurang. Ini membuatnya lebih determinis dengan memberikannya aturan dan konteks tambahan untuk diikuti. Karena ya, hambatan utama LLM (setidaknya dari penggunaan sehari-hari saya) adalah prompt dan . Laravel konteksnya WTF adalah MCP Saya tidak akan mengajarkan Anda tentang teknik cepat; ada banyak sumber daya di luar sana. . context LLM dilatih pada dataset besar, dan dataset tersebut adalah titik referensi mereka. misalnya, jika data pelatihan hanya sampai 2023 dan Anda bertanya tentang cuaca hari ini, itu tidak akan memiliki petunjuk. Kami memberdayakan LLM, memberi mereka konteks up-to-date, melalui alat. Anda mungkin telah menggunakan ini tanpa menyadarinya. Minta LLM tentang berita terbaru, dan Anda akan melihat "searching web". Tetapi "searching web" hanyalah alat built-in. Jika Anda bertanya tentang tiket Jira terbaru Anda, itu tidak akan tahu. Dan pikirkan tentang hal itu, penyedia seperti OpenAI atau Anthropic tidak dapat membangun alat untuk setiap kebutuhan yang mungkin. Sebagai contoh, Anda mungkin ingin LLM Anda untuk menanyakan data perusahaan internal. Itulah di mana gagasan membawa alat Anda sendiri datang. LLM dapat memanggil alat Anda, mengambil data yang dibutuhkan, dan kemudian merespons. Jadi rapi bahwa Anthropic memperkenalkan Protokol Konteks Model (MCP) untuk mendokumentasikan ini. Ini menyederhanakan bagaimana LLM memanggil alat, bagaimana Anda menyambungkan alat ke dalamnya, dan bagaimana mereka mengambil lebih banyak konteks. Jadi, jika Anda belum pernah mendengar tentang MCP, ya, kami hanya mencakup mereka. Pada inti, mereka hanya lapisan tipis yang memungkinkan LLM menggunakan alat (seperti alat "searching web") untuk mengambil lebih banyak konteks. MCP juga melakukan sedikit lebih banyak. MCP juga melakukan sedikit lebih banyak. Dan alat-alat ini bisa apa saja: panggilan API, panggilan sistem, panggilan metode, apapun. selama mereka dapat memberikan jawaban kembali ke LLM, model dapat menggunakannya untuk menyelesaikan tugas. Sekarang Anda tahu tentang MCPs. Anda dapat membaca lebih lanjut tentang mereka . di sini Apa itu Laravel Boost? Jadi Laravel Boost pada dasarnya adalah server MCP yang mengekspos satu set alat. alat-alat ini berputar di sekitar ekosistem Laravel, hal-hal seperti membaca rute, memeriksa log, atau mencari dokumen Laravel. Jadi ketika Anda meminta LLM untuk memperbaiki SaaS vibe-coded Anda, itu dapat memutuskan alat mana yang harus digunakan. meskipun, tidak ada yang dijamin, LLM dapat menjadi pelacur dan hanya mengabaikan alat-alat, membuat metode yang tidak pernah ada 🏽. Dan kemudian Anda membatalkan perubahan, menjadi marah, tergesa-gesa lagi, dan berurusan dengan "Maaf, Anda benar benar"... Dan kemudian Anda membatalkan perubahan, menjadi marah, tergesa-gesa lagi, dan berurusan dengan "Maaf, Anda benar benar"... Saya tidak akan mencakup bagaimana menginstalnya; sudah ada seorang pejabat , a Selain itu, saya juga punya banyak teman-teman yang datang terlambat ke pesta. Video dari YouTube Pertunjukan Laracasts Namun, saya ingin menunjukkan kepada Anda bagaimana Laravel yang baru. Peningkatan Mengapa Apakah Laravel Boost? Peningkatan Peningkatan Boost memungkinkan Anda memberikan aplikasi Anda "tujuan", pada dasarnya deskripsi produk Anda sehingga AI tahu konteks. Aplikasi ini adalah SaaS yang menyediakan layanan X, dll. Aplikasi ini adalah SaaS yang menyediakan layanan X, dll. Anda tahu produk terbaik Anda. Pertama, pastikan Anda telah mempublikasikan Boost config: php artisan vendor:publish --tag=boost-config Pada saat penulisan, file config terlihat seperti ini: <?php declare(strict_types=1); return [ /* |-------------------------------------------------------------------------- | Boost Master Switch |-------------------------------------------------------------------------- | | This option may be used to disable all Boost functionality, which | simply provides a single and convenient way to enable or disable | Boost's AI development tools. | */ 'enabled' => env('BOOST_ENABLED', true), /* |-------------------------------------------------------------------------- | Boost Browser Logs Watcher |-------------------------------------------------------------------------- | | The following option may be used to enable or disable the browser logs | watcher feature within Laravel Boost. The log watcher will read any | errors within the browser's console to give Boost better context. */ 'browser_logs_watcher' => env('BOOST_BROWSER_LOGS_WATCHER', true), ]; Untuk menambahkan tujuan aplikasi yang baru saja kami bicarakan, drop entri baru di config: // omitted for breivety 'purpose' => 'Describe your application purpose' Untuk ini berlaku, Anda akan perlu untuk menghasilkan kembali pedoman: php artisan boost:install Dalam pedoman yang diterbitkan, misalnya, jika Anda menggunakan Cursor, Anda akan menemukan tujuan Anda (saya harap kita semua melakukannya lol) di Pada bagian “Konteks Dasar”. .cursor/rules/laravel-boost.mdc kurang lebih lebih Tingkatkan kapal dengan 15+ alat, tetapi tergantung pada aplikasi Anda, Anda mungkin tidak membutuhkannya semua. alat, Anda diselamatkan dari frontend neraka. secara pribadi, saya juga menemukan dan Mungkin tidak berguna, LLM hanya dapat membaca konfigurasi secara langsung tanpa melompat melalui hoops tersebut. BrowserLogs GetConfig ListAvailableConfigKeys Tweak yang Konfirmasi : boost.php <?php use Laravel\Boost\Mcp\Tools\GetConfig; use Laravel\Boost\Mcp\Tools\BrowserLogs; use Laravel\Boost\Mcp\Tools\ListAvailableConfigKeys; // omitted for breivety 'mcp' => [ 'tools' => [ 'exclude' => [BrowserLogs::class, GetConfig::class, ListAvailableConfigKeys::class], ], ], Boom, 3 alat yang hilang. Dan seperti mengecualikan alat, Anda dapat menambahkan Anda sendiri. misalnya, saya suka memiliki alat yang mendaftar semua peristiwa yang terdaftar di aplikasi. Jika Anda menarik paket pihak ketiga, ini membuatnya lebih mudah bagi LLM untuk menemukan peristiwa yang dapat terhubung ke alih-alih membangun logika tambahan atau memperluas kelas. Di bawah topi, Boost menggunakan paket pihak pertama baru, , yang menangani penciptaan alat dan semua hal menyenangkan. Anda dapat membuat alat baru dengan: laravel/mcp php artisan make:mcp-tool ListEvents Kode alat untuk daftar acara adalah sesuatu seperti: <?php namespace App\Mcp\Tools; use Illuminate\Support\Facades\Artisan; use Laravel\Mcp\Server\Tool; use Laravel\Mcp\Server\Tools\Annotations\IsReadOnly; use Laravel\Mcp\Server\Tools\ToolInputSchema; use Laravel\Mcp\Server\Tools\ToolResult; use Symfony\Component\Console\Command\Command as CommandAlias; use Symfony\Component\Console\Output\BufferedOutput; #[IsReadOnly] class ListEvents extends Tool { public function description(): string { return 'List all available events defined in the application'; } public function schema(ToolInputSchema $schema): ToolInputSchema { return $schema; } /** * @param array<string> $arguments */ public function handle(array $arguments): ToolResult { $eventsOutput = $this->artisan('event:list'); return ToolResult::text($eventsOutput); } /** * @param array<string|bool> $options */ private function artisan(string $command, array $options = []): string { $output = new BufferedOutput; $result = Artisan::call($command, $options, $output); if ($result !== CommandAlias::SUCCESS) { return 'Failed to list routes: '.$output->fetch(); } return trim($output->fetch()); } } Maka dari itu, pastikan Anda menggunakannya dalam file config berikut ini: <?php use App\Mcp\Tools\ListEvents; use Laravel\Boost\Mcp\Tools\GetConfig; use Laravel\Boost\Mcp\Tools\BrowserLogs; use Laravel\Boost\Mcp\Tools\ListAvailableConfigKeys; // omitted for breivty 'mcp' => [ 'tools' => [ 'exclude' => [BrowserLogs::class, GetConfig::class, ListAvailableConfigKeys::class], 'include' => [ListEvents::class], // include the tool ], ], Dan seperti itu, Anda menambahkan alat custom. Tip Bonus: MCP server Boost menggunakan datang dengan inspektor, sehingga Anda dapat menguji alat baru segera. Tip Bonus: MCP server Boost menggunakan datang dengan inspektor, sehingga Anda dapat menguji alat baru segera. php artisan mcp:inspector laravel-boost Anda akan melihat semua alat yang tersedia, menguji mereka, dll. Jangan panggil aku, jangan datang ke rumahku Jika Anda menggunakan arsitektur monolit modular dengan directory... berita buruk: Boost hanya memeriksa enums, model, dan controller di dalamnya . modules/ app/ Akan bagus jika ada cara asli untuk menyesuaikan ini, tetapi sampai saat itu, kita melakukannya sendiri. Yang harus Anda lakukan hanyalah mengikat Untuk kebiasaan Anda sendiri yang memindai atau di mana saja) Laravel\Boost\Install\GuidelineAssist GuidelineAssist modules/ Panduan custom Anda mungkin terlihat seperti: <?php declare(strict_types=1); namespace App\Support; use Illuminate\Database\Eloquent\Model; use Laravel\Boost\Install\GuidelineAssist; use ReflectionClass; use Symfony\Component\Finder\Finder; class CustomGuidelineAssist extends GuidelineAssist { public function __construct() { $this->modelPaths = $this->discover(fn ($reflection) => ($reflection->isSubclassOf(Model::class) && ! $reflection->isAbstract())); $this->controllerPaths = $this->discover(fn (ReflectionClass $reflection) => (stripos($reflection->getName(), 'controller') !== false || stripos($reflection->getNamespaceName(), 'controller') !== false)); $this->enumPaths = $this->discover(fn ($reflection) => $reflection->isEnum()); } private function discover(callable $cb): array { $classes = []; if (empty(self::$classes)) { $finder = Finder::create() ->in([app_path(), base_path('modules')]) ->files() ->name('/[A-Z].*\.php$/'); foreach ($finder as $file) { $relativePath = $file->getRelativePathname(); $isModule = str_starts_with($file->getRealPath(), base_path('modules')); $className = $isModule ? 'Modules\\'.str_replace(['/', '.php'], ['\\', ''], $relativePath) : app()->getNamespace().str_replace(['/', '.php'], ['\\', ''], $relativePath); try { if ($this->fileHasClassLike($file->getRealPath()) && class_exists($className)) { self::$classes[$className] = $file->getRealPath(); } } catch (\Throwable) { // Ignore exceptions from class loading } } } foreach (self::$classes as $className => $path) { if ($cb(new ReflectionClass($className))) { $classes[$className] = $path; } } return $classes; } } Ini sebagian besar orang tua menemukan() dengan tweaks kecil. Ini sebagian besar orang tua menemukan() dengan tweaks kecil. Jangan lupa untuk menghubungkannya kembali ke penyedia layanan.Setelah Anda melakukannya, menguji alat "application-info" dari inspektor harus menunjukkan semua model Anda tercantum dengan benar. Itulah yang AI mengisap? Mungkin. tetapi itu mengisap jauh lebih sedikit dengan alat yang tepat, sesuatu seperti Boost. Tapi jangan berhenti di sana. ada MCP untuk segalanya: GitHub, Sentry, dan Linear. Mereka menambahkan banyak nilai. Anda bahkan dapat membangun MCP Anda sendiri untuk bersenang-senang. (ya, itu memasak kentang goreng), dan yang lain yang memainkan playlist Spotify berdasarkan seberapa kotor kode itu. Kembali ke My Air Fryer https://x.com/OussamaMater/status/1954648925320655213?embedable=true Fakta lucu: Meskipun saya sedikit merusak AI di sini, saya menggunakan AI untuk memperbaiki tata bahasa saya yang buruk. memperbaiki tata bahasa sambil tersinggung, keren lol. Maaf AI, Anda kadang-kadang mendorong saya di atas garis. Fakta lucu: Meskipun saya sedikit merusak AI di sini, saya menggunakan AI untuk memperbaiki tata bahasa saya yang buruk. memperbaiki tata bahasa sambil tersinggung, keren lol. Maaf AI, Anda kadang-kadang mendorong saya di atas garis.