Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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:
- PowerShell 6 o versione successiva.
- Windows Gestione pacchetti (WinGet).
- 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
Aprire PowerShell.
Installa il pacchetto CLI stabile di GitHub Copilot:
winget install GitHub.CopilotConferma che l'installazione abbia avuto successo:
copilot --versionIl comando restituisce la versione CLI installata di GitHub Copilot.
Ottieni un ID modello dall'endpoint inference di Windows Server
Imposta l'URL base fornito dall'operatore endpoint:
$BaseUrl = 'https://inference.contoso.com/v1'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
SecureStringnel 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).PasswordInvia una
GETrichiesta a$BaseUrl/models. Includi$endpointCredentialnell'intestazioneAuthorization: Bearere leggi ogni ID modello dall'arraydatadella 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
Imposta
$BaseUrlsull'URL base dell'endpoint di Windows Server e$endpointCredentialsulla 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
openaisupporta endpoint compatibili con OpenAI, tra cui vLLM.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 SilentlyContinueConfigura 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_COMMANDha la precedenza rispetto aCOPILOT_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 = $endpointCredentialPer 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.
copilote 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.Esamina le variabili del provider supportate nella versione installata:
copilot help providers
Avvia e verifica la CLI di GitHub Copilot
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.
Avvia la CLI di GitHub Copilot ed esegui i passaggi di verifica in un
tryblocco in modo che PowerShell rimuova le variabili dell'ambiente di autenticazione del provider e smalti ilSecureStringvalore 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() } }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.
Se la CLI di GitHub Copilot ti chiede, inserisci
/logine segui le istruzioni per autenticarti su GitHub. L'autenticazione GitHub è separata dalla chiave API che autentica l'endpoint di inferenza.Immetti questo prompt di test:
Reply with exactly: Local inference test succeededIl modello configurato sull'endpoint di Windows Server restituisce
Local inference test succeededsenza errore di fornitore, autenticazione o compatibilità del modello. Dopo aver chiuso la CLI di GitHub Copilot, PowerShell esegue il bloccofinally. PowerShell non può cancellare in modo affidabile la stringa di testo$endpointCredentialin 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. |