Skip to content

FutureLabRussia/joomla_ai_framework

 
 

Repository files navigation

The Joomla! AI-Framework Library

Установка библиотеки

Joomla! AI Library это слегка модифицированный форк: https://github.com/joomla-projects/gsoc25_ai_framework доработанный, в первую очередь, для сборки пакета расширения, который может быть установлен через административную панель CMS и в дальнейшем использоваться другими расширениями, без использования composer. Был сделан после того, установка в composer оригинального пакета, согласно описанию разработчиков AI-Framework и вопреки рекомендациям разработчиков Joomla, поломала папку vendor тестовой системы. Попутно в библиотеку добавлены провайдеры LLM для подключения LMStudio и GigaChat.

Использование AI Framework

AI Framework предоставляет простой, независимый от поставщика интерфейс для работы с удаленными и локальными поставщиками LLM: OpenAI, Anthropic, Ollama, LM-Studio. Вместо написания отдельного кода для SDK каждого поставщика, разработчики пишут один раз и просто меняют провайдеров (Provider) , изменяя конфигурацию.

Вы можете найти официальную документацию по API-интерфейсам провайдеров здесь:

В основе AI framework Основа находится пакет Http, который предоставляет простой способ выполнять запросы к различным LLM API независимо от транспорта. В настоящее время Joomla Http поддерживает потоки, socket и cURL. Структура централизованно обрабатывает HTTP в Abstract Provider. Провайдеры инкапсулируют:

  • Базовые URL-адреса, заголовки и авторизация (ключи/маркеры API)
  • Создание запросов (JSON/мультичасть)
  • Нормализация ответа и соотнесение ошибок к исключениям системы

Инициализация провайдера LLM

Каждый провайдер инициализируется с помощью своей конфигурации (API-ключ, стандартные параметры, такие как модель или базовый URL). При необходимости вы можете переопределять эти параметры по вызову.

OpenAI:

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',
]);

Anthropic:

use Joomla\AI\AIFactory;

$anthropic = AIFactory::getAI('anthropic', [
  'api_key' => getenv('ANTHROPIC_API_KEY'),
  // 'model' => 'claude-3-5-sonnet',
]);

Ollama (локальная LLM):

use Joomla\AI\AIFactory;

$ollama = AIFactory::getAI('ollama', [
  // 'base_url' => 'http://localhost:11434',
  // 'model' => 'llama3',
]);

LM Studio (локальная LLM):

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
---

    

About

Joomla AI Framework

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • PHP 100.0%