Joomla! AI Library это слегка модифицированный форк: https://github.com/joomla-projects/gsoc25_ai_framework доработанный, в первую очередь, для сборки пакета расширения, который может быть установлен через административную панель CMS и в дальнейшем использоваться другими расширениями, без использования composer. Был сделан после того, установка в composer оригинального пакета, согласно описанию разработчиков AI-Framework и вопреки рекомендациям разработчиков Joomla, поломала папку vendor тестовой системы. Попутно в библиотеку добавлены провайдеры LLM для подключения LMStudio и GigaChat.
AI Framework предоставляет простой, независимый от поставщика интерфейс для работы с удаленными и локальными поставщиками LLM: OpenAI, Anthropic, Ollama, LM-Studio. Вместо написания отдельного кода для SDK каждого поставщика, разработчики пишут один раз и просто меняют провайдеров (Provider) , изменяя конфигурацию.
Вы можете найти официальную документацию по API-интерфейсам провайдеров здесь:
- OpenAI API: https://platform.openai.com/docs/api-reference
- Anthropic API: https://docs.anthropic.com/claude/docs
- Ollama API: https://github.com/ollama/ollama/blob/main/docs/api.md
- LM Studio API: https://lmstudio.ai/docs/developer/rest/endpoints
В основе AI framework Основа находится пакет Http, который предоставляет простой способ выполнять запросы к различным LLM API независимо от транспорта. В настоящее время Joomla Http поддерживает потоки, socket и cURL. Структура централизованно обрабатывает HTTP в Abstract Provider. Провайдеры инкапсулируют:
- Базовые URL-адреса, заголовки и авторизация (ключи/маркеры API)
- Создание запросов (JSON/мультичасть)
- Нормализация ответа и соотнесение ошибок к исключениям системы
Каждый провайдер инициализируется с помощью своей конфигурации (API-ключ, стандартные параметры, такие как модель или базовый URL). При необходимости вы можете переопределять эти параметры по вызову.
use Joomla\AI\AIFactory;
$openai = AIFactory::getAI('openai', [
'api_key' => getenv('OPENAI_API_KEY'),
// Optional defaults:
// 'model' => 'gpt-4o',
// 'base_url' => 'https://api.openai.com/v1',
]);use Joomla\AI\AIFactory;
$anthropic = AIFactory::getAI('anthropic', [
'api_key' => getenv('ANTHROPIC_API_KEY'),
// 'model' => 'claude-3-5-sonnet',
]);use Joomla\AI\AIFactory;
$ollama = AIFactory::getAI('ollama', [
// 'base_url' => 'http://localhost:11434',
// 'model' => 'llama3',
]);use Joomla\AI\AIFactory;
$ollama = AIFactory::getAI('lmstudio', [
// 'base_url' => 'http://192.168.0.1:1234',
// 'model' => 'qwen3.6-27b"',
]);| Provider | Methods |
|---|---|
| OpenAI | chat, vision, generateImage, createImageVariation, editImage, speech, transcribe, translate, createEmbeddings, moderate, isContentFlagged |
| Anthropic | chat, vision, getModel |
| Ollama | chat, generate, pullModel, copyModel, deleteModel, checkModelExists, getRunningModels |
| LM Studio | chat |
Не все провайдеры реализуют весь потенциал API.
Структура открывает возможности через интерфейсы (например, ChatInterface, ImageInterface).
Разработчики могут использовать то, что поддерживает каждый поставщик.
Библиотека расширяется в процессе разработки прикладных приложений.
Все провайдеры реализуют общий набор функциональных интерфейсов (например, чат, изображения, аудио, хотя не все запросы к ним, особенно в локальных LLM, будут выполняться). Напрямую вызывать эти методы, передавая параметры на один звонок для переопределения стандартных значений.
// Chat example (OpenAI)
$response = $openai->chat("Write a haiku about Joomla.", [
'model' => 'gpt-4o-mini', // overrides constructor default if set
]);
echo $response->getContent(); // primary content (e.g. text)
$meta = $response->getMetadata(); // metadata content (e.g. model, usage)HTTP-Ошибки провайдера соотносятся с исключениями в рамках (например, авториpизация, ограничение скорости, недопустимые аргументы). Отлавливайте и обрабатывайте их по мере необходимости.
try {
$response = $openai->chat("Hello!");
} catch (\Throwable $e) {
// Log and surface a friendly message
}
```Начало работыия
- **[Введение](docs/overview.md)**
Архитектура & цели
- **[Начало работы](docs/getting-started.md)**
Установка, конфигурация, использование провайдеров (provider)
- **[Руководство](docs/providers/)**
Руководстве с примерами кода для конкретных провайдеров LLM
---