PHPackages                             laravilt/ai - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. laravilt/ai

ActiveLibrary[API Development](/categories/api)

laravilt/ai
===========

AI-powered search and chat for Laravilt. Supports OpenAI, Anthropic, Gemini, and DeepSeek with global search spotlight and chat UI.

1.0.2(5mo ago)0373↓46.4%[2 PRs](https://github.com/laravilt/ai/pulls)2MITPHPPHP ^8.3|^8.4CI passing

Since Dec 11Pushed 5mo agoCompare

[ Source](https://github.com/laravilt/ai)[ Packagist](https://packagist.org/packages/laravilt/ai)[ GitHub Sponsors](https://github.com/fadymondy)[ RSS](/packages/laravilt-ai/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (3)Dependencies (15)Versions (6)Used By (2)

[![AI](./arts/screenshot.jpg)](./arts/screenshot.jpg)

Laravilt AI
===========

[](#laravilt-ai)

[![Latest Stable Version](https://camo.githubusercontent.com/f3c105db4b828068991b1f54644e32e14f45f56638454f8408d349d9ae050fc2/68747470733a2f2f706f7365722e707567782e6f72672f6c61726176696c742f61692f76657273696f6e2e737667)](https://packagist.org/packages/laravilt/ai)[![License](https://camo.githubusercontent.com/1923c35a6096bd391142e6f21569c489b9fc8227f6439761f0d0c997c4ff5db2/68747470733a2f2f706f7365722e707567782e6f72672f6c61726176696c742f61692f6c6963656e73652e737667)](https://packagist.org/packages/laravilt/ai)[![Downloads](https://camo.githubusercontent.com/a70b925618fdacde13891bcfd58f7876f51b2fe51a4c9abf52f9402ce459f035/68747470733a2f2f706f7365722e707567782e6f72672f6c61726176696c742f61692f642f746f74616c2e737667)](https://packagist.org/packages/laravilt/ai)

A powerful AI integration package for Laravilt with support for multiple providers (OpenAI, Anthropic, Gemini, DeepSeek), global search spotlight, and chat UI.

Features
--------

[](#features)

- **Multi-Provider Support**: OpenAI, Anthropic (Claude), Google Gemini, DeepSeek
- **Global Search Spotlight**: Cmd/Ctrl+K spotlight search with AI-powered understanding
- **Chat UI**: Full-featured chat interface with session management
- **Resource AI Agents**: Configure AI capabilities per resource
- **Scout Fallback**: Automatic fallback to Laravel Scout or direct queries when no AI is configured
- **Streaming Support**: Real-time streaming responses

Installation
------------

[](#installation)

```
composer require laravilt/ai
```

The package will automatically register its service provider.

Configuration
-------------

[](#configuration)

Publish the config file:

```
php artisan vendor:publish --tag="laravilt-ai-config"
```

Add your API keys to `.env`:

```
# Default provider
LARAVILT_AI_PROVIDER=openai

# OpenAI Configuration
OPENAI_API_KEY=your-openai-api-key
OPENAI_MODEL=gpt-4o-mini

# Anthropic Configuration
ANTHROPIC_API_KEY=your-anthropic-api-key
ANTHROPIC_MODEL=claude-sonnet-4-20250514

# Google Gemini Configuration
GOOGLE_AI_API_KEY=your-google-api-key
GOOGLE_AI_MODEL=gemini-2.0-flash-exp

# DeepSeek Configuration
DEEPSEEK_API_KEY=your-deepseek-api-key
DEEPSEEK_MODEL=deepseek-chat
```

Quick Start
-----------

[](#quick-start)

### 1. Global Search Component

[](#1-global-search-component)

Add the GlobalSearch component to your layout:

```

import { GlobalSearch } from '@laravilt/ai'

```

The spotlight search opens with `Cmd/Ctrl+K`.

### 2. AI Chat Component

[](#2-ai-chat-component)

```

import { AIChat } from '@laravilt/ai'

```

### 3. Resource AI Configuration

[](#3-resource-ai-configuration)

Add AI capabilities to your resources:

```
use Laravilt\AI\AIAgent;
use Laravilt\Panel\Resources\Resource;

class ProductResource extends Resource
{
    public static function ai(AIAgent $agent): AIAgent
    {
        return $agent
            ->name('product_assistant')
            ->description('AI assistant for managing products')
            ->searchable(['name', 'description', 'sku'])
            ->canCreate(true)
            ->canUpdate(true)
            ->canDelete(false)
            ->canQuery(true)
            ->systemPrompt('You are a helpful product management assistant.');
    }
}
```

AI Providers
------------

[](#ai-providers)

### OpenAI

[](#openai)

```
use Laravilt\AI\AIManager;

$ai = app(AIManager::class);
$response = $ai->provider('openai')->chat([
    ['role' => 'user', 'content' => 'Hello!'],
]);
```

Available models:

- `gpt-4o` - GPT-4o
- `gpt-4o-mini` - GPT-4o Mini
- `gpt-4-turbo` - GPT-4 Turbo
- `gpt-4` - GPT-4
- `gpt-3.5-turbo` - GPT-3.5 Turbo
- `o1`, `o1-mini`, `o1-preview` - O1 Models

### Anthropic (Claude)

[](#anthropic-claude)

```
$response = $ai->provider('anthropic')->chat([
    ['role' => 'user', 'content' => 'Hello!'],
]);
```

Available models:

- `claude-sonnet-4-20250514` - Claude Sonnet 4
- `claude-opus-4-20250514` - Claude Opus 4
- `claude-3-5-sonnet-20241022` - Claude 3.5 Sonnet
- `claude-3-5-haiku-20241022` - Claude 3.5 Haiku
- `claude-3-opus-20240229` - Claude 3 Opus

### Google Gemini

[](#google-gemini)

```
$response = $ai->provider('gemini')->chat([
    ['role' => 'user', 'content' => 'Hello!'],
]);
```

Available models:

- `gemini-2.0-flash-exp` - Gemini 2.0 Flash
- `gemini-1.5-pro` - Gemini 1.5 Pro
- `gemini-1.5-flash` - Gemini 1.5 Flash
- `gemini-pro` - Gemini Pro

### DeepSeek

[](#deepseek)

```
$response = $ai->provider('deepseek')->chat([
    ['role' => 'user', 'content' => 'Hello!'],
]);
```

Available models:

- `deepseek-chat` - DeepSeek Chat
- `deepseek-coder` - DeepSeek Coder
- `deepseek-reasoner` - DeepSeek R1

Streaming Responses
-------------------

[](#streaming-responses)

```
$ai = app(AIManager::class);
$stream = $ai->provider()->streamChat([
    ['role' => 'user', 'content' => 'Write a story'],
]);

foreach ($stream as $chunk) {
    echo $chunk;
}
```

Tool Calling
------------

[](#tool-calling)

```
$response = $ai->provider()->chatWithTools(
    messages: [
        ['role' => 'user', 'content' => 'What is the weather in Tokyo?'],
    ],
    tools: [
        [
            'name' => 'get_weather',
            'description' => 'Get weather information for a city',
            'parameters' => [
                'type' => 'object',
                'properties' => [
                    'city' => ['type' => 'string', 'description' => 'City name'],
                ],
                'required' => ['city'],
            ],
        ],
    ]
);

if ($response['tool_calls']) {
    foreach ($response['tool_calls'] as $call) {
        // Handle tool call
        $result = handleToolCall($call['name'], $call['arguments']);
    }
}
```

Global Search
-------------

[](#global-search)

Register resources for global search:

```
use Laravilt\AI\GlobalSearch;

app(GlobalSearch::class)
    ->registerResource(
        resource: 'products',
        model: Product::class,
        searchable: ['name', 'description', 'sku'],
        label: 'Products',
        icon: 'Package',
        url: '/admin/products/{id}'
    )
    ->limit(5)
    ->useAI(true);
```

Vue Composables
---------------

[](#vue-composables)

### useAI

[](#useai)

```
import { useAI } from '@laravilt/ai'

const {
  config,
  loading,
  selectedProvider,
  selectedModel,
  availableProviders,
  availableModels,
  loadConfig,
  chat,
  streamChat,
} = useAI()

// Load configuration
await loadConfig()

// Send a message
const response = await chat([
  { role: 'user', content: 'Hello!' }
])

// Stream a response
for await (const chunk of streamChat(messages)) {
  console.log(chunk)
}
```

### useGlobalSearch

[](#useglobalsearch)

```
import { useGlobalSearch } from '@laravilt/ai'

const {
  query,
  results,
  loading,
  useAI,
  search,
  debouncedSearch,
  clear,
} = useGlobalSearch()

// Perform search
await search('product name')

// Or with debounce
await debouncedSearch('product name', 300)
```

API Endpoints
-------------

[](#api-endpoints)

The package provides the following API endpoints:

MethodEndpointDescriptionGET`/laravilt-ai/config`Get AI configurationPOST`/laravilt-ai/chat`Send chat messagePOST`/laravilt-ai/stream`Stream chat responseGET`/laravilt-ai/sessions`List chat sessionsPOST`/laravilt-ai/sessions`Create new sessionGET`/laravilt-ai/sessions/{id}`Get sessionPATCH`/laravilt-ai/sessions/{id}`Update sessionDELETE`/laravilt-ai/sessions/{id}`Delete sessionGET`/laravilt-ai/search`Global searchTesting
-------

[](#testing)

```
composer test
```

Code Style
----------

[](#code-style)

```
composer format
```

Static Analysis
---------------

[](#static-analysis)

```
composer analyse
```

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance73

Regular maintenance activity

Popularity16

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 82.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~3 days

Total

3

Last Release

152d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2147eb2fca7ab5f0124d0fafd88ba2d2a5dfa3a0036fb8872d1084b7cba29366?d=identicon)[fadymondy](/maintainers/fadymondy)

---

Top Contributors

[![fadymondy](https://avatars.githubusercontent.com/u/11937812?v=4)](https://github.com/fadymondy "fadymondy (28 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (4 commits)")[![actions-user](https://avatars.githubusercontent.com/u/65916846?v=4)](https://github.com/actions-user "actions-user (1 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (1 commits)")

---

Tags

laravelaiopenaichatGeminianthropicdeepseekspotlightlaraviltglobal-search

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/laravilt-ai/health.svg)

```
[![Health](https://phpackages.com/badges/laravilt-ai/health.svg)](https://phpackages.com/packages/laravilt-ai)
```

###  Alternatives

[simplestats-io/laravel-client

Client for SimpleStats!

4515.5k](/packages/simplestats-io-laravel-client)[sbsaga/toon

🧠 TOON for Laravel — a compact, human-readable, and token-efficient data format for AI prompts &amp; LLM contexts. Perfect for ChatGPT, Gemini, Claude, Mistral, and OpenAI integrations (JSON ⇄ TOON).

6115.6k](/packages/sbsaga-toon)[hosseinhezami/laravel-gemini

A production-ready Laravel package to integrate with the Google Gemini API. Supports text, image, video, audio, long-context, structured output, files, caching, function-calling and understanding capabilities.

14010.8k1](/packages/hosseinhezami-laravel-gemini)[ryangjchandler/bearer

Minimalistic token-based authentication for Laravel API endpoints.

8129.8k](/packages/ryangjchandler-bearer)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
