Det har gått ett tag sedan jag skrev en artikel. Jag menar, varför skulle jag? Du uppmanar AI om ett ämne, och det spottar ut allt du behöver. Den kinden dödade glädjen för mig, jag slutade skriva som 10 artiklar men publicerade aldrig någon av dem. Ändå tror en del av mig att människor tycker om att läsa något som gjorts av människan. Som, en AI skulle inte få dig att sitta igenom denna tråkiga intro, men hej, det är mänskligt, crappy men mänskligt. Hur som helst, jag skriver om AI idag (ironin ha). just släppte ett nytt paket, Laravel Boost, som i grunden gör AI suga mindre. Det gör det mer deterministiskt genom att ge det regler och extra sammanhang att följa. För ja, de viktigaste flaskhalsarna i LLMs (åtminstone från min dagliga användning) är den snabba och . Laravel och kontext WTF är MCP Jag ska inte föreläsa om snabbteknik; det finns massor av resurser där ute redan. . context LLMs utbildas på massiva datamängder, och dessa datamängder är deras referenspunkt. Till exempel, om utbildningsdata bara går upp till 2023 och du frågar om dagens väder, kommer det inte att ha en ledtråd. Vi stärker LLMs, ger dem uppdaterade sammanhang, genom verktyg. Du har förmodligen använt detta utan att ens inse det. Be en LLM om de senaste nyheterna, och du kommer att se "sökning på webben". Men "sökning på webben" är bara ett inbyggt verktyg. Om du frågade det om din senaste Jira-biljett, skulle det inte veta. Och tänk på det, kan leverantörer som OpenAI eller Anthropic inte bygga verktyg för varje möjligt behov. Till exempel kan du vilja att din LLM ska fråga interna företagsdata. Det är där tanken på att ta med ditt eget verktyg kommer in. LLM kan ringa ditt verktyg, hämta de data den behöver och sedan svara. Så snyggt att Anthropic introducerade modellkontextprotokollet (MCP) för att dokumentera detta. Det standardiserar hur LLMs kallar verktyg, hur du ansluter verktyg till dem och hur de hämtar mer sammanhang. Så, om du aldrig har hört talas om MCPs, ja, vi täckte dem bara. I kärnan är de bara ett tunt lager som gör det möjligt för LLMs att använda verktyg (som "searching web" -verktyget) för att fånga mer sammanhang. MCP gör också lite mer. MCP gör också lite mer. Och dessa verktyg kan vara vad som helst: API-samtal, systemsamtal, metodsamtal, vad som helst. Så länge de kan ge ett svar tillbaka till LLM, kan modellen använda den för att slutföra uppgiften. Nu vet du om MCP: er. Du kan läsa mer om dem . här Är det Laravel Boost? Så Laravel Boost är i grunden en MCP-server som avslöjar en uppsättning verktyg. Dessa verktyg kretsar kring Laravel-ekosystemet, saker som att läsa rutter, kontrollera loggar eller söka efter Laravel-dokument. Så när du uppmanar en LLM att fixa din vibe-kodade SaaS, kan det bestämma vilket verktyg som ska användas.Även om ingenting är garanterat, kan en LLM vara en bitch och bara ignorera verktygen, vilket utgör en metod som aldrig existerade 🏽. Och då upphäver du förändringen, blir upprörd, skyndar igen och hanterar en "sorry, du har absolut rätt"... Och då upphäver du förändringen, blir upprörd, skyndar igen och hanterar en "sorry, du har absolut rätt"... Jag kommer inte att täcka hur man installerar det; det finns redan en officiell och a , och en massa gemenskapsguider. Dessutom är jag lite sen till festen. Youtube videor Laracasts händelser Men jag vill visa dig hur man Laravel ökar . Boost Varför Har Laravel ökat? Boost Boost Boost låter dig ge din applikation ett "syfte", i princip en beskrivning av din produkt så att AI vet sammanhanget. Denna applikation är en SaaS som tillhandahåller X-tjänster etc. Denna applikation är en SaaS som tillhandahåller X-tjänster etc. Du känner din produkt bästa kompis. Först, se till att du har publicerat Boost config: php artisan vendor:publish --tag=boost-config Vid tidpunkten för skrivning ser config-filen ut så här: <?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), ]; För att lägga till det applikationsändamål som vi just pratade om, släpp en ny post i konfigurationen: // omitted for breivety 'purpose' => 'Describe your application purpose' För att detta ska träda i kraft måste du generera riktlinjerna igen: php artisan boost:install I de publicerade riktlinjerna, till exempel, om du använder Cursor, hittar du ditt syfte (jag hoppas att vi alla gör lol) i i avsnittet ”Grundläggande sammanhang”. .cursor/rules/laravel-boost.mdc Mindre är mer Boost fartyg med 15+ verktyg, men beroende på din app kanske du inte behöver dem alla. verktyg, du sparas från frontend helvetet. personligen, jag hittade också och LLM kan bara läsa konfigurationer direkt utan att hoppa igenom de hopparna. BrowserLogs GetConfig ListAvailableConfigKeys Tweak den och config: 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 verktyg är borta. Och precis som att utesluta verktyg kan du lägga till dina egna. Till exempel gillar jag att ha ett verktyg som listar alla registrerade händelser i appen. Om du drar i tredjepartspaket, gör detta det lättare för LLM att upptäcka händelser som det kan ansluta till i stället för att bygga extra logik eller utöka klasser. Under locket använder Boost ett nytt förstapartspaket, , som hanterar verktygsskapande och alla roliga saker. Du kan skapa ett nytt verktyg med: laravel/mcp php artisan make:mcp-tool ListEvents Verktygskoden för listning händelse är något som: <?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()); } } Sedan registrera det i, du gissade det, config filen: <?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 ], ], Och precis som det, har du lagt till ett anpassat verktyg. Bonustips: MCP server Boost används med en inspektör, så att du kan testa nya verktyg direkt. Bonustips: MCP server Boost används med en inspektör, så att du kan testa nya verktyg direkt. php artisan mcp:inspector laravel-boost Du kommer att se alla tillgängliga verktyg, testa dem etc. Ring mig inte, kom inte förbi mitt hus Om du använder en modulär monolitisk arkitektur med en katalog... dåliga nyheter: Boost kontrollerar bara enumerationer, modeller och kontroller inuti . modules/ app/ Det skulle vara trevligt om det fanns ett inhemskt sätt att anpassa detta, men tills dess gör vi det själva. Allt du behöver göra är att länka Till din egen vana som skannar (eller var som helst där) Laravel\Boost\Install\GuidelineAssist GuidelineAssist modules/ Din anpassade guide kan se ut som: <?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; } } Det är mestadels föräldern upptäcka() med mindre tweaks. Det är mestadels föräldern upptäcka() med mindre tweaks. Glöm inte att återkoppla det till en tjänsteleverantör.När du har gjort det, bör testet av "application-info" -verktyget från inspektören visa alla dina modeller listade korrekt. Det är det det AI suger? Kanske. men det suger mycket mindre med rätt verktyg, något som Boost. Men sluta inte där. Det finns MCP för allt: GitHub, Sentry och Linear. De lägger till massor av värde. Du kan till och med bygga din egen MCP för skojs skull. (Ja, det kokade pommes frites), och en annan som spelade en Spotify-spellista baserat på hur jävla koden var. Tillbaka till My Air Fryer https://x.com/OussamaMater/status/1954648925320655213?embedable=true Roligt faktum: även om jag shitting på AI lite här, jag använde AI för att korrigera min dåliga grammatik. Fixing grammatik samtidigt bli förolämpad, cool lol. Roligt faktum: även om jag shitting på AI lite här, jag använde AI för att korrigera min dåliga grammatik. Fixing grammatik samtidigt bli förolämpad, cool lol.