# Intégration Laravel

Le package déclare `RelaiServiceProvider` pour l'auto-discovery Composer. Il fusionne
la configuration et enregistre un singleton `RelaiClient`.

## Installation locale

Ajoutez le path repository décrit dans [Installation](installation.md), puis :

```bash
composer require relai/sdk-php:*
php artisan vendor:publish --tag=relai-config
```

Le second appel crée `config/relai.php`.

## Environnement

```env
RELAI_BASE_URL=http://localhost:3000
RELAI_APP_TOKEN=your_app_token_here
RELAI_APP_SLUG=myapp
RELAI_TIMEOUT_SECONDS=30
RELAI_DEFAULT_PROVIDER=ollama
RELAI_DEFAULT_MODEL=
```

Après modification de `.env`, videz le cache de configuration si nécessaire :

```bash
php artisan config:clear
```

## Injection dans un service

```php
namespace App\Services;

use Relai\Sdk\RelaiClient;

final class AiAnalysisService
{
    public function __construct(private RelaiClient $relai) {}

    public function summarizeTasks(): array
    {
        return $this->relai->chat()->send([
            'message' => 'Summarize open tasks.',
            'tools' => ['myapp.task_summary'],
        ]);
    }
}
```

## Controller

```php
final class AnalysisController
{
    public function __invoke(AiAnalysisService $service): JsonResponse
    {
        return response()->json($service->summarizeTasks());
    }
}
```

Le controller doit appliquer l'authentification et l'autorisation utilisateur avant
l'appel. Le token RelAI représente l'application, pas l'utilisateur.

## Facade optionnelle

```php
use Relai\Sdk\Laravel\Relai;

$response = Relai::chat()->send(['message' => 'Bonjour']);
```

Préférez l'injection pour la testabilité.

## Frontière applicative

L'application conserve ses utilisateurs, données métier et règles. RelAI Core conserve
les messages/runs/tool calls. L'application peut stocker uniquement `conversationId` ou
`runId` pour relier un objet métier à son historique IA.
