Skip to content

Exact model catalog records

Overview

Inspect model metadata by the exact (driver, wire model) key. An absent exact key returns explicit unknown facts. Applications can overlay their own exact records and pass the resulting catalog to InferenceRuntime.

Example

<?php
require 'examples/boot.php';

use Cognesy\Polyglot\Inference\Config\LLMConfig;
use Cognesy\Polyglot\Inference\Inference;
use Cognesy\Polyglot\Inference\InferenceRuntime;
use Cognesy\Polyglot\Inference\Models\ModelCatalog;
use Cognesy\Polyglot\Inference\Models\SupportStatus;

$catalog = ModelCatalog::discover();
$bundled = $catalog->find('qwen', 'qwen3.8-max');

echo "BUNDLED EXACT RECORD\n";
echo json_encode([
    'key' => $bundled->key->toArray(),
    'status' => $bundled->status->value,
    'limits' => $bundled->limits->toArray(),
    'modalities' => $bundled->modalities->toArray(),
    'capabilities' => $bundled->capabilities->toArray(),
    'source' => $bundled->source,
    'catalogVersion' => $bundled->catalogVersion,
], JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR) . "\n\n";

assert($bundled->status === SupportStatus::Supported);
assert($bundled->limits->contextWindow === 1_000_000);
assert($bundled->capabilities->tools === SupportStatus::Supported);
assert($bundled->capabilities->reasoning->known);
assert($bundled->capabilities->reasoning->reasoningContentVisible);

$absent = $catalog->find('openai-compatible', 'application-model-not-listed');
$absentReasoningKnown = match ($absent->capabilities->reasoning->known) {
    true => 'yes',
    false => 'no',
};

echo "ABSENT EXACT KEY\n";
echo "Status: {$absent->status->value}\n";
echo 'Context window: ' . ($absent->limits->contextWindow ?? 'unknown') . "\n";
echo "Reasoning known: {$absentReasoningKnown}\n\n";

assert($absent->status === SupportStatus::Unknown);
assert($absent->limits->contextWindow === null);
assert(!$absent->capabilities->reasoning->known);

$applicationModels = ModelCatalog::fromArray([
    'version' => 'application-v1',
    'models' => [[
        'driver' => 'openai-compatible',
        'model' => 'private-reasoner-v1',
        'status' => 'supported',
        'limits' => ['contextWindow' => 131_072, 'maxOutput' => 16_384],
        'modalities' => ['inputText' => 'supported', 'outputText' => 'supported'],
        'capabilities' => [
            'streaming' => 'supported',
            'tools' => 'supported',
            'reasoning' => [
                'default' => 'enabled',
                'contentVisible' => true,
                'tokensVisible' => true,
            ],
        ],
        'source' => 'application',
    ]],
]);

$catalog = $catalog->overlay($applicationModels);
$private = $catalog->find('openai-compatible', 'private-reasoner-v1');
$privateReasoningVisible = match ($private->capabilities->reasoning->reasoningContentVisible) {
    true => 'yes',
    false => 'no',
};

$runtime = InferenceRuntime::fromConfig(
    config: new LLMConfig(
        apiUrl: 'http://localhost:11434/v1',
        endpoint: '/chat/completions',
        model: 'private-reasoner-v1',
        driver: 'openai-compatible',
    ),
    models: $catalog,
);
$inference = Inference::fromRuntime($runtime);

echo "APPLICATION EXACT RECORD\n";
echo "Status: {$private->status->value}\n";
echo "Source: {$private->source}\n";
echo "Reasoning content visible: {$privateReasoningVisible}\n";

assert($private->status === SupportStatus::Supported);
assert($private->source === 'application');
assert($private->capabilities->reasoning->known);
assert($inference instanceof Inference);
?>