Skip to content

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

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions