Skip to content

Detección automática de modelos para VS Code (INVESTIGANDO...) #11

@svg153

Description

@svg153

Como se ve aquí, hay una clase abstracta que tiene getAllModels

https://github.com/microsoft/vscode/blob/main/extensions/copilot/src/extension/byok/vscode-node/abstractLanguageModelChatProvider.ts#L189

Para nan se usa el customEndpointProvider
https://github.com/microsoft/vscode/blob/main/extensions/copilot/src/extension/byok/vscode-node/customEndpointProvider.ts#L131

de ahi... acba llegadno al dsicovery
https://github.com/microsoft/vscode/blob/main/extensions/copilot/src/extension/byok/vscode-node/abstractLanguageModelChatProvider.ts#L189

Por tanto, ...

flowchart TD
    subgraph A["User config: chatLanguageModels.json"]
        A1["{ 'id': 'gemma4', 'url': 'https://api.nan.builders/v1', ... }"]
    end

    A2["{ 'id': 'llama3', 'url': 'https://api.nan.builders/v1', ... }"]

    subgraph B["Provider: CustomEndpointBYOKModelProvider\n(providerId = 'customEndpoint')"]
        B1["getAllModels(silent, apiKey, config)"]
        B1a{"config.url exists?"}
        B1a -- yes --> B2["Call super.getAllModels()"]
        B1a -- no --> B3["Iterate config.models[] manually"]

        B2["Fetch GET {url}/models"]
        B2a["Parse data.data or data.models"]
        B2b["Auto-discover model capabilities"]

        B3["Return static models from JSON config"]
    end

    subgraph C["Discovery endpoint: /models"]
        C1["GET https://api.nan.builders/v1/models"]
        C2["Response: { data: [{ id, name, ... }] }"]
    end

    subgraph D["AbstractOpenAICompatibleLMProvider"]
        D1["getModelsDiscoveryUrl() → {baseUrl}/models"]
        D2["resolveModelCapabilities()"]
        D3["byokKnownModelsToAPIInfoWithEffort()"]
    end

    subgraph E["Chat request"]
        E1["User sends message"]
        E2["resolveCustomEndpointUrl()"]
        E3["POST {url}/v1/chat/completions"]
    end

    A1 --> B
    A2 --> B
    B --> B1
    B1 --> B1a
    B1a -->|yes| B2
    B2 --> C1
    C1 --> C2
    C2 --> D1
    D1 --> D2
    D2 --> D3
    B1 -->|no| B3

    B --> E1
    E1 --> E2
    E2 --> E3
Loading

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions