Laravel AI SDK v1.0 — What's New | Mohamed Said        [  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png)   Mohamed Said Laravel Backend Engineer  ](https://msaied.com) [ Home ](https://msaied.com) [ Projects ](https://msaied.com/projects) [ Articles  ](https://msaied.com/articles) [ Certificates ](https://msaied.com/certificates) [ Contact ](https://msaied.com#contact-section) 

       [  ](https://github.com/EG-Mohamed)       

 [ Home ](https://msaied.com) [ Projects ](https://msaied.com/projects) [ Articles ](https://msaied.com/articles) [ Certificates ](https://msaied.com/certificates) [ Contact ](https://msaied.com#contact-section) 

  [ home ](https://msaied.com)    [ articles ](https://msaied.com/articles)    Laravel AI SDK v1.0: Classification, Approvable Tools, Agent Middleware &amp; More        On this page       1. [  Laravel AI SDK v1.0 Is Here ](#laravel-ai-sdk-v10-is-here)
2. [  Jev Classification: A New Kind of AI Capability ](#jev-classification-a-new-kind-of-ai-capability)
3. [  Vercel Chat and AG-UI Protocol Support ](#vercel-chat-and-ag-ui-protocol-support)
4. [  Per-Step Agent Middleware ](#per-step-agent-middleware)
5. [  Approvable Tool Calls ](#approvable-tool-calls)
6. [  Redesigned Conversation Storage ](#redesigned-conversation-storage)
7. [  Tool Search and Code Execution ](#tool-search-and-code-execution)
8. [  Unified Token Usage Reporting ](#unified-token-usage-reporting)
9. [  Upgrading to v1.0 ](#upgrading-to-v10)
10. [  Key Takeaways ](#key-takeaways)

  ![Laravel AI SDK v1.0: Classification, Approvable Tools, Agent Middleware & More](https://cdn.msaied.com/698/65d5ceeb67b5ceb383a05b0d760515d1.png)

 [  Laravel ](https://msaied.com/articles?category=laravel) [  AI ](https://msaied.com/articles?category=ai)  #Laravel   #AI SDK   #PHP   #Agents   #LLM   #Classification  

 Laravel AI SDK v1.0: Classification, Approvable Tools, Agent Middleware &amp; More 
====================================================================================

     23 Sep 2026      5 min read    ![Mohamed Said](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp)  Mohamed Said  

       Table of contents

  10 sections  

1. [  01   Laravel AI SDK v1.0 Is Here  ](#laravel-ai-sdk-v10-is-here)
2. [  02   Jev Classification: A New Kind of AI Capability  ](#jev-classification-a-new-kind-of-ai-capability)
3. [  03   Vercel Chat and AG-UI Protocol Support  ](#vercel-chat-and-ag-ui-protocol-support)
4. [  04   Per-Step Agent Middleware  ](#per-step-agent-middleware)
5. [  05   Approvable Tool Calls  ](#approvable-tool-calls)
6. [  06   Redesigned Conversation Storage  ](#redesigned-conversation-storage)
7. [  07   Tool Search and Code Execution  ](#tool-search-and-code-execution)
8. [  08   Unified Token Usage Reporting  ](#unified-token-usage-reporting)
9. [  09   Upgrading to v1.0  ](#upgrading-to-v10)
10. [  10   Key Takeaways  ](#key-takeaways)

       Laravel AI SDK v1.0 Is Here
---------------------------

Released on 23 September 2026, Laravel AI SDK v1.0 graduates the package from beta to a production-ready, Laravel-native interface for every major AI provider. The release closes hundreds of bugs and ships several headline features worth knowing before you upgrade.

---

Jev Classification: A New Kind of AI Capability
-----------------------------------------------

Not every AI task is text generation. Routing a support ticket, flagging a comment, or branching a workflow are *classification* decisions — and they should be fast and cheap.

The SDK now treats classification as a first-class capability alongside text, images, audio, and embeddings. Jev (by TypeSafe) answers classification questions in milliseconds at a fraction of the cost of a traditional LLM.

For yes/no questions, a new `decide` macro on the `Str` class returns a boolean. A `threshold` argument controls the required confidence level before the model commits to an answer.

Classification currently runs on TypeSafe and OpenRouter, with more providers planned.

---

Vercel Chat and AG-UI Protocol Support
--------------------------------------

The SDK now speaks two popular frontend streaming protocols out of the box:

- **Vercel Chat** — pass the incoming request to `Vercel::chat` and pipe the result straight to your agent. The single route handles message ingestion, conversation persistence, and tool-approval decisions.
- **AG-UI** — used by clients such as CopilotKit, letting you stream agent responses to rich UI components without custom glue code.

A helper method converts stored conversation messages back into the shape the client expects, making page-reload recovery straightforward.

---

Per-Step Agent Middleware
-------------------------

Previously, middleware ran once per prompt. It now wraps **each generation step**, so a three-tool agent run triggers your middleware three times. Each step arrives as a `PendingStep` you can inspect and mutate.

Practical uses include:

- Removing an expensive tool after it has already been called once
- Swapping the model mid-prompt based on accumulated cost
- Summarising a long message history before the next step
- Returning a cached answer without hitting the provider at all

Methods like `withModel`, `withTools`, `withMessages`, and `withMaxTokens` let you rewrite every part of the prompt between steps.

---

Approvable Tool Calls
---------------------

Some tools must not run without a human in the loop. Implement the `Approvable` contract on a tool and use the `InteractsWithApprovals` trait. When the agent reaches that tool, it pauses and returns a response describing what is waiting — including the arguments the model chose.

Resume the conversation by submitting a decision for each pending call: **approve**, **reject** (with a reason fed back to the model), or **edit** the arguments before the tool runs. Approvals work with `prompt`, `stream`, `queue`, and broadcast methods.

---

Redesigned Conversation Storage
-------------------------------

The `conversations` table now stores a `steps` JSON column with one entry per round-trip, and each tool result is stored alongside the call that produced it. This eliminates the guessing required when replaying history for providers and makes approval state unambiguous.

Pagination and the `toolCalls` / `toolResults` accessors remain unchanged. Raw SQL against the old `tool_calls` or `tool_results` columns must migrate to `steps`. A backfill migration is included in the upgrade guide and must be run before deploying v1.0.

---

Tool Search and Code Execution
------------------------------

**Tool Search** wraps rarely used tools in a `ToolSearch` container so they are only loaded when the prompt actually calls for them — reducing token cost and improving model accuracy on large tool sets. Supported on OpenAI and Anthropic.

**Code Execution** is a new provider tool that runs code in the provider's own sandbox, useful for data analysis and calculations. Supported on Anthropic, OpenAI, Azure, Gemini, and xAI.

---

Unified Token Usage Reporting
-----------------------------

The `promptTokens` and `completionTokens` properties are renamed to `inputTokens` and `outputTokens` across every provider. Cached, cache-written, and reasoning tokens are now reported as subsets of those totals rather than separate fields.

---

Upgrading to v1.0
-----------------

Breaking changes touch conversation storage, agent middleware, token usage property names, and stream protocols. The [official upgrade guide](https://github.com/laravel/ai/blob/1.x/UPGRADE.md) covers each change with before/after examples and an impact rating.

For AI-assisted upgrades, install **Laravel Boost** (the first-party MCP server) as a dev dependency and run the `/upgrade-ai-sdk-v1` slash command in Claude Code, Cursor, OpenCode, Gemini, or VS Code.

---

Key Takeaways
-------------

- **Jev classification** adds a fast, cheap, boolean-friendly AI capability to the SDK
- **Vercel Chat and AG-UI** protocol support removes frontend integration boilerplate
- **Per-step middleware** gives fine-grained control over cost, context, and model choice
- **Approvable tools** let humans review and edit AI decisions before execution
- **`steps` column** makes conversation replay reliable across all providers
- **Tool Search** cuts token usage for agents with large tool sets
- **Code Execution** brings sandboxed computation to five major providers
- Token usage properties are renamed; update any monitoring or billing code

---

Read the full announcement and documentation at .

 Found this useful?

          [  ](https://twitter.com/intent/tweet?url=https%3A%2F%2Fmsaied.com%2Farticles%2Flaravel-ai-sdk-v10-classification-approvable-tools-agent-middleware-more&text=Laravel+AI+SDK+v1.0%3A+Classification%2C+Approvable+Tools%2C+Agent+Middleware+%26+More) [  ](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fmsaied.com%2Farticles%2Flaravel-ai-sdk-v10-classification-approvable-tools-agent-middleware-more) 

 Frequently Asked Questions 
----------------------------

  3 questions  

     Q01  What breaking changes does Laravel AI SDK v1.0 introduce?        The main breaking changes are: the conversations table now uses a `steps` JSON column instead of flat tool_call and tool_result lists (requiring a backfill migration); agent middleware now runs per step rather than per prompt; token usage properties are renamed from `promptTokens`/`completionTokens` to `inputTokens`/`outputTokens`; and stream protocol handling has changed. The official upgrade guide covers each change with before/after code examples. 

      Q02  How do approvable tool calls work in Laravel AI SDK v1.0?        Implement the `Approvable` contract on any tool and add the `InteractsWithApprovals` trait. When the agent reaches that tool during a run, it pauses and returns a response listing what is waiting for approval, including the arguments the model selected. You resume the conversation by submitting a decision — approve, reject with a reason, or edit the arguments — before the tool executes. This works with prompt, stream, queue, and broadcast methods. 

      Q03  What is Jev classification and when should I use it instead of a standard LLM?        Jev is a System One classification model from TypeSafe that answers classification questions in milliseconds at a fraction of the cost of a traditional LLM. Use it for decisions that don't require text generation — routing a ticket, flagging content, or branching a workflow. The SDK exposes it as a first-class capability and adds a `Str::decide()` macro for simple yes/no questions with a configurable confidence threshold. 

  Continue reading

 More Articles 
---------------

 [ View all    ](https://msaied.com/articles) 

 [ ![Auto-Load Generated Columns After Save with Laravel's #[Refreshes] Attribute](https://cdn.msaied.com/697/2450936023128760d64547a61ee24087.png) Laravel Eloquent Generated Columns 

### Auto-Load Generated Columns After Save with Laravel's #\[Refreshes\] Attribute

Laravel 13.33 introduced the #\[Refreshes\] PHP attribute for Eloquent models. Declare which database-computed c...

  ![Mohamed Said](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp)  Mohamed Said 

 23 Sep 2026     4 min read  

  Read    

 ](https://msaied.com/articles/auto-load-generated-columns-after-save-with-laravels-refreshes-attribute) [ ![Laravel AI SDK 1.0: Classification, Tool Approvals, and Vercel Chat Streaming](https://cdn.msaied.com/696/4a8dc0443e01d9ddfd47cae8515f2943.png) Laravel AI SDK Classification Tool Approvals 

### Laravel AI SDK 1.0: Classification, Tool Approvals, and Vercel Chat Streaming

Laravel AI SDK 1.0 ships a new Classification capability, human-in-the-loop tool approvals, Vercel Chat and AG...

  ![Mohamed Said](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp)  Mohamed Said 

 23 Sep 2026     4 min read  

  Read    

 ](https://msaied.com/articles/laravel-ai-sdk-10-classification-tool-approvals-and-vercel-chat-streaming) [ ![What's New in Laravel 13.33: Tagged Memoized Cache, Model Refreshes, and More](https://cdn.msaied.com/695/68465c4a316f52e811ca17f35812522d.png) Laravel Laravel 13 Eloquent 

### What's New in Laravel 13.33: Tagged Memoized Cache, Model Refreshes, and More

Laravel 13.33 ships tagged support for the memoized cache store, a #\[Refreshes\] model attribute for generated...

  ![Mohamed Said](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp)  Mohamed Said 

 22 Sep 2026     3 min read  

  Read    

 ](https://msaied.com/articles/whats-new-in-laravel-1333-tagged-memoized-cache-model-refreshes-and-more) 

   [  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png)   Mohamed Said Laravel Backend Engineer  ](https://msaied.com)Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

Explore

- [Home](https://msaied.com)
- [Projects](https://msaied.com/projects)
- [Articles](https://msaied.com/articles)
- [Certificates](https://msaied.com/certificates)
- [Contact](https://msaied.com#contact-section)

Connect

- [   hello@msaied.com ](mailto:hello@msaied.com)
- [   +20 109 461 9204 ](tel:+201094619204)

© 2026 Mohamed Said. All rights reserved.

 [  ](https://github.com/EG-Mohamed) [  ](https://www.linkedin.com/in/msaiedm/) [  ](https://wa.me/201094619204) [  ](mailto:hello@msaied.com) [  ](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)
