adachsoft/ai-model-list-provider-xai

XAI (Grok) SPI provider for AdachSoft AI Model List.

Maintainers

Package info

gitlab.com/a.adach/ai-model-list-provider-xai

Issues

pkg:composer/adachsoft/ai-model-list-provider-xai

Statistics

Installs: 3

Dependents: 0

Suggesters: 0

Stars: 0

v0.3.0 2026-03-26 12:59 UTC

This package is auto-updated.

Last update: 2026-03-26 11:59:27 UTC


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.php and composer extra.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.jsonextra.ai-model-list.entry-file: resources/ai-model-list.php
  • resources/ai-model-list.php → registers factory AdachSoft\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 .env file 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.