Урок 02

Провайдеры и модели

AI SDK поддерживает 14 провайдеров из коробки.

Список

  • OpenAI — GPT-4o, GPT-4.1, o1
  • Anthropic — Claude 3.5, Claude 4
  • Google Gemini — Gemini 2.0, 2.5
  • Groq — быстрые открытые модели
  • Mistral — Mistral Large, Medium
  • DeepSeek — DeepSeek V3, R1
  • xAI — Grok
  • Ollama — локальные модели
  • Azure OpenAI — enterprise OpenAI
  • Cohere — Command
  • OpenRouter — агрегатор
  • Jina — embeddings
  • VoyageAI — embeddings
  • ElevenLabs — аудио

Конфигурация

config/ai.php:

return [
    'default' => env('AI_PROVIDER', 'openai'),

    'providers' => [
        'openai' => [
            'key' => env('OPENAI_API_KEY'),
            'models' => [
                'text' => [
                    'default' => 'gpt-4o',
                    'cheapest' => 'gpt-4o-mini',
                    'smartest' => 'o1',
                ],
            ],
        ],
        'anthropic' => [
            'key' => env('ANTHROPIC_API_KEY'),
            'models' => [
                'text' => [
                    'default' => 'claude-sonnet-4-20250514',
                    'cheapest' => 'claude-haiku-4-5-20251001',
                    'smartest' => 'claude-opus-4-20250514',
                ],
            ],
        ],
    ],
];

Выбор провайдера при вызове

По умолчанию — из конфига. Можно переопределить:

$response = (new SupportAgent)->prompt(
    'Привет',
    provider: 'anthropic',
    model: 'claude-haiku-4-5-20251001',
);

Failover

Если основной провайдер упал — SDK пробует следующий:

$response = (new SupportAgent)->prompt(
    'Привет',
    provider: ['anthropic', 'openai', 'gemini'],
);

Работает автоматически при сбое или rate limit.

UseCheapestModel и UseSmartestModel

Атрибуты для автоматического выбора модели:

use Laravel\Ai\Attributes\UseCheapestModel;
use Laravel\Ai\Attributes\UseSmartestModel;

#[UseCheapestModel]
class SimpleClassifier implements Agent {}

#[UseSmartestModel]
class ComplexReasoner implements Agent {}

UseCheapestModel выберет Haiku, gpt-4o-mini или аналог. UseSmartestModel — Opus, o1 или аналог.

Model атрибут

Явное указание:

use Laravel\Ai\Attributes\Model;

#[Model('claude-sonnet-4-20250514')]
class SupportAgent implements Agent {}

Provider атрибут

use Laravel\Ai\Attributes\Provider;

#[Provider('anthropic')]
class SupportAgent implements Agent {}

Итоги

  • 14 провайдеров
  • Конфиг в config/ai.php
  • Выбор при вызове через provider и model
  • Failover через массив провайдеров
  • UseCheapestModel / UseSmartestModel
  • Явное указание через атрибуты