Collega la CLI di GitHub Copilot a un endpoint di inferenza di Windows Server

GitHub Copilot CLI è un agente di codifica AI che può inviare richieste di modello da un client Windows supportato a un endpoint di inferenza compatibile OpenAI ospitato su Windows Server. Questa configurazione ti permette di utilizzare un modello ospitato dall'organizzazione dal tuo terminale mentre Windows Server centralizza l'hosting e il calcolo del modello.

Questo articolo ti mostra come configurare la connessione client e verificare che il modello configurato risponda. Non distribuisce né mette in sicurezza il servizio di inferenza.

Prerequisites

  • Un computer client che esegue una versione Windows supportata dalla CLI di GitHub Copilot, con:
  • Sottoscrizione attiva GitHub Copilot. Se un'organizzazione o un'impresa fornisce il tuo abbonamento, il suo amministratore deve autorizzare la CLI di GitHub Copilot.
  • Una directory di lavoro fidata da cui avviare GitHub Copilot CLI.
  • Un endpoint compatibile OpenAI esistente su Windows Server che:
    • È raggiungibile dal computer cliente.
    • Richiede l'autenticazione. Questa procedura si applica alle connessioni remote a Windows Server. Riservare gli endpoint senza autenticazione agli scenari di solo loopback al di fuori di questa procedura.
    • Ascolta solo sull'interfaccia di rete server destinata, consente connessioni in entrata solo da computer client autorizzati o subreti, e non accetta connessioni dirette dall'internet pubblico.
    • Supporta lo streaming e la chiamata di strumenti o funzioni. La compatibilità con OpenAI da sola non garantisce il supporto per ogni capacità CLI di GitHub Copilot. Verifica le capacità dell'endpoint e del modello selezionato con l'operatore endpoint.
  • Una connessione di rete Windows-client-a-Windows-Server che ha:
    • Un nome DNS per l'endpoint di inferenza di Windows Server risolvibile dal computer client.
    • Regole di rotta di rete e firewall che permettono solo ai client autorizzati o ai sottonetwork di connettersi alla porta endpoint.
    • Un certificato HTTPS di cui il client si fida e il cui nome di oggetto o nome alternativo corrisponde al nome DNS dell'endpoint.
  • L'URL base dell'endpoint, come https://inference.contoso.com/v1.
  • La credenziale e il tipo di autenticazione dell'endpoint specificati dall'operatore endpoint.

Installa la CLI di GitHub Copilot

  1. Aprire PowerShell.

  2. Installa il pacchetto CLI stabile di GitHub Copilot:

    winget install GitHub.Copilot
    
  3. Conferma che l'installazione abbia avuto successo:

    copilot --version
    

    Il comando restituisce la versione CLI installata di GitHub Copilot.

Ottieni un ID modello dall'endpoint inference di Windows Server

  1. Imposta l'URL base fornito dall'operatore endpoint:

    $BaseUrl = 'https://inference.contoso.com/v1'
    
  2. Inserisci la chiave API o il token portatore specificato dall'operatore endpoint. Usa una credenza di breve durata e con il privilegio minimo. Quando la tua organizzazione mette a disposizione un comando approvato per l’archivio dei segreti, usalo per recuperare la credenziale invece di inserirla direttamente. Il comando seguente converte il valore SecureString nel valore in testo normale $endpointCredential, che rimane in memoria per questa sessione di PowerShell.

    $secureEndpointCredential = Read-Host 'Enter the endpoint credential' -AsSecureString
    $endpointCredential = [System.Net.NetworkCredential]::new('', $secureEndpointCredential).Password
    
  3. Invia una GET richiesta a $BaseUrl/models. Includi $endpointCredential nell'intestazione Authorization: Bearer e leggi ogni ID modello dall'array data della risposta:

    $requestParameters = @{
       Uri = "$BaseUrl/models"
       Method = 'Get'
    }
    
    try {
       $requestParameters.Headers = @{ Authorization = "Bearer $endpointCredential" }
       $models = Invoke-RestMethod @requestParameters
       $models.data | Select-Object -ExpandProperty id
    }
    finally {
       $requestParameters.Headers = $null
    }
    

    Il comando restituisce uno o più ID modello. Copia l'ID esatto di un modello che supporta lo streaming e la chiamata di strumenti o funzioni.

Configura il provider e il modello CLI di GitHub Copilot

  1. Imposta $BaseUrl sull'URL base dell'endpoint di Windows Server e $endpointCredential sulla sua chiave API o token portatore. Nella stessa sessione PowerShell, imposta il tipo di provider, l'URL base dell'endpoint e l'ID esatto del modello. Sostituisci <MODEL_ID> con un ID che l'endpoint di Windows Server restituisce.

    $env:COPILOT_PROVIDER_TYPE = 'openai'
    $env:COPILOT_PROVIDER_BASE_URL = $BaseUrl
    $env:COPILOT_MODEL = '<MODEL_ID>'
    

    Il tipo di provider openai supporta endpoint compatibili con OpenAI, tra cui vLLM.

  2. Cancella tutte le variabili di autenticazione del provider che la sessione PowerShell attuale ha ereditato:

    Remove-Item Env:COPILOT_PROVIDER_API_KEY, Env:COPILOT_PROVIDER_BEARER_TOKEN, Env:COPILOT_PROVIDER_API_KEY_COMMAND -ErrorAction SilentlyContinue
    
  3. Configura il metodo di autenticazione specificato dall'operatore endpoint:

    • Per l'autenticazione standard con chiave API OpenAI, usa un comando secret-store approvato dall'organizzazione ogni volta che ne è disponibile:

      $env:COPILOT_PROVIDER_API_KEY_COMMAND = '<APPROVED_SECRET_STORE_COMMAND>'
      

      Il comando deve recuperare la credenziale da un archivio segreto approvato, produrre solo la credenziale e non registrarla o persistere. COPILOT_PROVIDER_API_KEY_COMMAND ha la precedenza rispetto a COPILOT_PROVIDER_API_KEY.

    • Se non è disponibile alcun comando secret-store approvato, imposta direttamente la chiave API come fallback di breve durata per la sessione PowerShell corrente:

      $env:COPILOT_PROVIDER_API_KEY = $endpointCredential
      
    • Per l'autenticazione tramite bearer token, imposta il bearer token:

      $env:COPILOT_PROVIDER_BEARER_TOKEN = $endpointCredential
      

    Importante

    Non inserire chiavi API in script, controllo del contenuto o esempi di comandi. copilot e qualsiasi processo avviato eredita variabili dell'ambiente di autenticazione dei fornitori. Usa credenziali di breve durata e con il minimo privilegio, e rimuovi le variabili dopo aver esce dalla CLI di GitHub Copilot.

  4. Esamina le variabili del provider supportate nella versione installata:

    copilot help providers
    

Avvia e verifica la CLI di GitHub Copilot

  1. Passa a una directory di cui ti fidi:

    Set-Location 'C:\path\to\trusted-project'
    

Importante

Se ti fermi prima di iniziare copilot, o un comando precedente fallisce, rimuovi le variabili di autenticazione del provider, cancella le intestazioni delle richieste e elimina la credenziale sicura prima di chiudere PowerShell:

if ($requestParameters) {
   $requestParameters.Headers = $null
}

Remove-Item Env:COPILOT_PROVIDER_API_KEY, Env:COPILOT_PROVIDER_BEARER_TOKEN, Env:COPILOT_PROVIDER_API_KEY_COMMAND -ErrorAction SilentlyContinue

if ($secureEndpointCredential) {
   $secureEndpointCredential.Dispose()
}

Chiudi la sessione PowerShell dopo che la pulizia è stata eseguita. La stringa di testo $endpointCredential in chiaro immutabile rimane in memoria fino all'uscita del processo.

  1. Avvia la CLI di GitHub Copilot ed esegui i passaggi di verifica in un try blocco in modo che PowerShell rimuova le variabili dell'ambiente di autenticazione del provider e smalti il SecureString valore quando esci o quando il comando fallisce:

    try {
       copilot
    }
    finally {
       if ($requestParameters) {
          $requestParameters.Headers = $null
       }
    
       Remove-Item Env:COPILOT_PROVIDER_API_KEY, Env:COPILOT_PROVIDER_BEARER_TOKEN, Env:COPILOT_PROVIDER_API_KEY_COMMAND -ErrorAction SilentlyContinue
    
       if ($secureEndpointCredential) {
          $secureEndpointCredential.Dispose()
       }
    }
    
  2. Conferma il prompt della directory attendibile. Fidati della directory per le sessioni future solo se controlli i suoi contenuti e ti aspetti che rimanga affidabile.

  3. Se la CLI di GitHub Copilot ti chiede, inserisci /login e segui le istruzioni per autenticarti su GitHub. L'autenticazione GitHub è separata dalla chiave API che autentica l'endpoint di inferenza.

  4. Immetti questo prompt di test:

    Reply with exactly: Local inference test succeeded
    

    Il modello configurato sull'endpoint di Windows Server restituisce Local inference test succeeded senza errore di fornitore, autenticazione o compatibilità del modello. Dopo aver chiuso la CLI di GitHub Copilot, PowerShell esegue il blocco finally. PowerShell non può cancellare in modo affidabile la stringa di testo $endpointCredential in chiaro immutabile dalla memoria, quindi chiudi la sessione PowerShell dopo il termine del comando per liberare la memoria del processo.

Risolvere i problemi relativi alle connessioni della CLI di GitHub Copilot a un endpoint di inferenza di Windows Server

Problema Controlli da eseguire
La richiesta del modello non può raggiungere l'endpoint Verifica l'URL base dell'endpoint, la risoluzione DNS, la porta, la rotta di rete, lo stato del servizio e la fiducia dei certificati TLS. L'URL base dovrebbe includere il prefisso API fornito dall'operatore endpoint, come /v1.
I modelli richiedono i rendimenti 401 o 403 Verifica che l'abilitazione sia valida. Per l'autenticazione tramite chiave API, usa preferibilmente COPILOT_PROVIDER_API_KEY_COMMAND con un comando approvato per l'archiviazione dei segreti. Usalo COPILOT_PROVIDER_API_KEY solo come soluzione di ricambio di breve durata. Per l'autenticazione del bearer-token, impostare COPILOT_PROVIDER_BEARER_TOKEN, come specifica l'operatore endpoint.
La CLI di GitHub Copilot utilizza un provider o modello diverso Imposta il tipo di provider, l'URL base, il modello e la variabile di autenticazione selezionata nella stessa sessione PowerShell che avvia copilot. Usa l'ID esatto del modello che l'endpoint restituisce. Controlla $HOME\.copilot\providers.jsonanche ; le dichiarazioni di provider o modello di quel file hanno la precedenza sulle COPILOT_PROVIDER_* variabili.
La CLI di GitHub Copilot non riesce a trovare il modello Interroga $BaseUrl/models di nuovo e confronta il COPILOT_MODEL valore con quello id restituito dall'endpoint, inclusi maiuscole e punteggiatura.
Il prompt fallisce dopo che l'endpoint accetta la richiesta Conferma che il modello e l'endpoint supportino sia lo streaming che la chiamata di strumenti o funzioni. Rivedi i log endpoint per un campo di richiesta non supportato, uno schema dello strumento, un limite contestuale o un formato di risposta.