laravel/ai v0.9.1 → v0.10.0

v0.10.0 adds a few headline features across embeddings, conversation handling, and provider support. It also includes a storage change for conversation ownership, so check upgrade notes before moving from 0.9.x.

What's new

  • Adds multimodal embeddings support for Gemini and Voyage AI. You can now pass file attachments alongside text to Embeddings::for(), including Image, Video, and other non-text inputs. Gemini accepts text, image, audio, document, and video inputs, while Voyage AI routes multimodal requests to its multimodal endpoint. Non-text inputs still fail for other providers with an InvalidArgumentException (#798).
  • Introduces a summarize helper for text summarization. It comes in both instance and static forms, so you can call str($article)->summarize() or Str::summarize($article, sentences: 4) instead of wiring up a prompt yourself each time (#800).
  • Adds human-in-the-loop approval for tool calls with external side effects. Approvable tools can pause an agent before execution, surface the pending calls to the application, and then resume after a person approves, edits, or rejects them. This works across prompt(), stream(), and queue() for resumable Conversational agents (#773).
  • Adds cross-account AssumeRole support for the Bedrock provider. When configured, the provider can assume a target role from source credentials and use the resulting temporary credentials to invoke Bedrock in another AWS account (#566).
  • Adds Rector and Laravel Rector and applies automated refactors across src and tests (#784).

Breaking changes

  • Conversations and messages now store participant identity as a participant_type + participant_id morph pair instead of a bare user_id. This avoids history leakage between models that share the same id, but it also means existing conversation data needs the new schema shape from the migration (#795).

Other notable changes

  • Conversation participant ownership is now derived automatically from the model instance, with no config key or “as type” API to maintain (#795).

Contributors

  • @pushpak1300
  • @paulinevos
  • @amjosuesanchez