adachsoft / ai-model-list-provider-xai
XAI (Grok) SPI provider for AdachSoft AI Model List.
Package info
gitlab.com/a.adach/ai-model-list-provider-xai
pkg:composer/adachsoft/ai-model-list-provider-xai
Requires
- php: >=8.3
- adachsoft/ai-model-list: ^0.4
- adachsoft/collection: ^3.0
- guzzlehttp/guzzle: ^7.10
Requires (Dev)
- adachsoft/console-io: ^0.2
- adachsoft/php-code-style: ^0.4
- friendsofphp/php-cs-fixer: ^3.94
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^13.0
- rector/rector: ^2.3
- vlucas/phpdotenv: ^5.6
README
Provider implementation for adachsoft/ai-model-list using the XAI (Grok) API.
- Provider ID:
xai - Requires:
adachsoft/ai-model-list^0.3.0 - Autodiscovery: enabled via
resources/ai-model-list.phpand composerextra.ai-model-list.entry-file - Default timeout: 10.0s (configurable via factory)
Proposed next release version: v0.2.0
Requirements
- PHP >= 8.3
- adachsoft/ai-model-list ^0.3.0
- adachsoft/collection >= 2.1
- guzzlehttp/guzzle ^7.8
Installation
Install the core library and this provider in your application:
composer require adachsoft/ai-model-list ^0.3.0
composer require adachsoft/ai-model-list-provider-xai
If you use the Composer plugin for autodiscovery (recommended), enable it and no manual wiring is required in runtime. This package already declares the entry file:
composer.json→extra.ai-model-list.entry-file: resources/ai-model-list.phpresources/ai-model-list.php→ registers factoryAdachSoft\AIModelListProviderXai\Factory\XaiSpiProviderFactory
Refer to the plugin documentation for how to provide configuration and build providers at runtime.
Quick Start (manual wiring via Factory::create)
use AdachSoft\AIModelList\PublicApi\Builder\AiModelCatalogFacadeBuilder;
use AdachSoft\AIModelListProviderXai\Factory\XaiSpiProviderFactory;
$provider = XaiSpiProviderFactory::create($apiKey, timeout: 15.0); // timeout optional, default 10.0
$facade = (new AiModelCatalogFacadeBuilder())
->withSpiProvider($provider)
->build();
$models = $facade->listModels('xai'); // returns PublicApi\Collection\ModelDefinitionCollection
Quick Start (SPI factory make + config provider)
use AdachSoft\AIModelList\PublicApi\Builder\AiModelCatalogFacadeBuilder;
use AdachSoft\AIModelList\Spi\AiModelProvider\Collection\AiModelProviderCollection;
use AdachSoft\AIModelList\Spi\Config\InMemoryConfigurationProvider;
use AdachSoft\AIModelList\Spi\Config\KeyValueMap;
use AdachSoft\AIModelListProviderXai\Factory\XaiSpiProviderFactory;
$config = new InMemoryConfigurationProvider(new KeyValueMap([
'api_key' => $apiKey,
'timeout' => '12.5', // optional
]));
$provider = XaiSpiProviderFactory::make($config);
$facade = (new AiModelCatalogFacadeBuilder())
->withProviders(new AiModelProviderCollection([$provider]))
->build();
$models = $facade->listModels('xai');
CLI example
- Create a
.envfile in the project root:
XAI_API_KEY=your_real_api_key
- Run:
php bin/xai-list-models
The script reads .env, builds the provider via the factory, and prints model IDs using adachsoft/console-io output.
Notes
- Endpoint is fixed to
https://api.x.ai(no configurable base URL). - Capabilities mapping (heuristic): CHAT for all; IMAGE when model id contains
vision; AUDIO/EMBEDDING not supported. - Configuration DTO validates primitives in the constructor; base URL is not exposed.
- Exception classes are not covered by unit tests per project guidelines.