laravilt/ai
Composer 安装命令:
composer require laravilt/ai
包简介
AI-powered search and chat for Laravilt. Supports OpenAI, Anthropic, Gemini, and DeepSeek with global search spotlight and chat UI.
README 文档
README
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
- 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
composer require laravilt/ai
The package will automatically register its service provider.
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
1. Global Search Component
Add the GlobalSearch component to your layout:
<script setup> import { GlobalSearch } from '@laravilt/ai' </script> <template> <GlobalSearch placeholder="Search..." :use-a-i="true" /> </template>
The spotlight search opens with Cmd/Ctrl+K.
2. AI Chat Component
<script setup> import { AIChat } from '@laravilt/ai' </script> <template> <AIChat :show-sidebar="true" /> </template>
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
OpenAI
use Laravilt\AI\AIManager; $ai = app(AIManager::class); $response = $ai->provider('openai')->chat([ ['role' => 'user', 'content' => 'Hello!'], ]);
Available models:
gpt-4o- GPT-4ogpt-4o-mini- GPT-4o Minigpt-4-turbo- GPT-4 Turbogpt-4- GPT-4gpt-3.5-turbo- GPT-3.5 Turboo1,o1-mini,o1-preview- O1 Models
Anthropic (Claude)
$response = $ai->provider('anthropic')->chat([ ['role' => 'user', 'content' => 'Hello!'], ]);
Available models:
claude-sonnet-4-20250514- Claude Sonnet 4claude-opus-4-20250514- Claude Opus 4claude-3-5-sonnet-20241022- Claude 3.5 Sonnetclaude-3-5-haiku-20241022- Claude 3.5 Haikuclaude-3-opus-20240229- Claude 3 Opus
Google Gemini
$response = $ai->provider('gemini')->chat([ ['role' => 'user', 'content' => 'Hello!'], ]);
Available models:
gemini-2.0-flash-exp- Gemini 2.0 Flashgemini-1.5-pro- Gemini 1.5 Progemini-1.5-flash- Gemini 1.5 Flashgemini-pro- Gemini Pro
DeepSeek
$response = $ai->provider('deepseek')->chat([ ['role' => 'user', 'content' => 'Hello!'], ]);
Available models:
deepseek-chat- DeepSeek Chatdeepseek-coder- DeepSeek Coderdeepseek-reasoner- DeepSeek R1
Streaming Responses
$ai = app(AIManager::class); $stream = $ai->provider()->streamChat([ ['role' => 'user', 'content' => 'Write a story'], ]); foreach ($stream as $chunk) { echo $chunk; }
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
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
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
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
The package provides the following API endpoints:
| Method | Endpoint | Description |
|---|---|---|
| GET | /laravilt-ai/config |
Get AI configuration |
| POST | /laravilt-ai/chat |
Send chat message |
| POST | /laravilt-ai/stream |
Stream chat response |
| GET | /laravilt-ai/sessions |
List chat sessions |
| POST | /laravilt-ai/sessions |
Create new session |
| GET | /laravilt-ai/sessions/{id} |
Get session |
| PATCH | /laravilt-ai/sessions/{id} |
Update session |
| DELETE | /laravilt-ai/sessions/{id} |
Delete session |
| GET | /laravilt-ai/search |
Global search |
Testing
composer test
Code Style
composer format
Static Analysis
composer analyse
License
The MIT License (MIT). Please see License File for more information.
laravilt/ai 适用场景与选型建议
laravilt/ai 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 433 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 11 月 12 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「chat」 「laravel」 「ai」 「spotlight」 「Gemini」 「openai」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 laravilt/ai 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 laravilt/ai 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 laravilt/ai 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
This simple PHP class allows you to easily generate Smartsupp.com JS chat code.
Client for the REST API plugin of the OpenFire Server
Livewire component that provides Spotlight/Alfred-like functionality to your Laravel application.
Full-screen Spotlight / command-palette style search overlay for Filament panels. Aggregates records, pages, and custom actions with keyboard navigation and a preview pane.
Spotlight for Filament Admin
统计信息
- 总下载量: 433
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 28
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-11-12
