Introduzione a Piper: una libreria PHP basata sull'operatore pipe
Quando ho sperimentato con Elixir qualche anno fa, mi sono innamorato dell'operatore pipe |>. Da allora, ho sempre sognato di avere uno strumento simile in PHP.
L'anno scorso, finalmente ce l'abbiamo! Purtroppo, le funzioni standard di manipolazione di array e stringhe in PHP non sono esattamente note per la loro coerenza API, il che rende l'operatore pipe scomodo da usare.
Ho portato gli eccellenti helper di raccolta e stringhe di Laravel a un'API ottimizzata per l'operatore pipe. Piper è un tentativo di avvolgere la libreria standard per renderla compatibile con l'operatore pipe.
use function Spatie\Piper\Arr\{filter, join, map};
use function Spatie\Piper\Str\{prefix, suffix};
[1, 2, 3, 4, 5, 6]
|> filter(fn (int $i) => $i % 2 === 0)
|> map(fn (int $i) => pow($i, 2))
|> join(', ', ', and ')
|> prefix('The winning numbers are ')
|> suffix('.');
// "The winning numbers are 4, 16, and 36."
Ho scritto un'introduzione tecnica al pacchetto sul blog di Spatie. La documentazione può essere consultata qui, e il repository è ospitato su GitHub.
La parte triste (forse?)
Non ho mai visto un agente di coding restituire codice usando un operatore pipe, a meno che non glielo abbia esplicitamente chiesto. Ha senso: i modelli che usiamo sono addestrati su anni di dati storici, e l'operatore pipe è una funzionalità piuttosto recente.
Potrei non usare mai questa libreria. Potrei non usare mai l'operatore pipe. La programmazione agentica sta portando la sintassi a un punto morto. Le nuove API di programmazione che portano benefici all'esecuzione verranno spinte avanti. Ma l'intera battaglia per far apparire il codice bello sembra essere stata spenta, poiché l'AI ci sta spostando gradualmente verso l'attenzione ai risultati piuttosto che alla pulizia riga per riga del codice. Non è necessariamente una cosa negativa, ma parte del nostro mestiere potrebbe andare persa lungo il percorso.
Ironia della sorte, mi sono convinto a scrivere effettivamente questo perché ho l'AI a mia disposizione. Portare manualmente 234 funzioni e una suite di test completa non è qualcosa che non vedevo l'ora di fare. Invece, il tempo speso per costruire e rifinire questo pacchetto è misurabile in ore.
In ogni caso, questo è un esperimento divertente da condurre. E non vedo l'ora di armeggiare ulteriormente e provarlo in alcuni progetti reali.
Fonte originale:
https://sebastiandedeyne.com/introducing-piperAltri articoli recenti
Laravel AI 1.1 e 1.2: Agent Skills, Cohere e structured output più solidi
Le release 1.1.0 e 1.2.0 di laravel/ai portano gli Agent Skills, l'approvazione obbligatoria per i tool built-in e nuovi provider come Cohere e Laya self-hosted. Sul fronte qualità arrivano i fix allo structured output per Bedrock e il supporto alle provider options. Aggiornati anche i modelli di default, con Claude 4.7+ che ignora i sampling params.
Laravel 13.35.0: scheduler più controllabile, code più flessibili e response Markdown
Laravel 13.35.0 porta Schedule::alwaysOnOneServer(), il supporto a schedule:interrupt per i comandi di lunga durata, --memory in percentuale per queue:work e il nuovo metodo markdown() sulla response factory. Tante piccole migliorie anche a test, view compilate in parallelo e dischi local.
BashBox: un interprete Bash in sandbox per agenti AI in PHP
BashBox è un interprete bash scritto in puro PHP che permette di eseguire gli script generati dagli agenti AI senza mai ricorrere a proc_open, exec o shell_exec. Ogni comando è una classe PHP che lavora su un filesystem virtuale, con limiti di esecuzione, quote disco e accesso di rete configurabili. Ideale per chi sviluppa agenti con il Laravel AI SDK o altre librerie simili.