Koppla GitHub Copilot CLI till en Windows Server-inferenspunkt

GitHub Copilot CLI är en AI-kodningsagent som kan skicka modellförfrågningar från en stödd Windows-klient till en OpenAI-kompatibel inferenspunkt som är värd på Windows Server. Denna konfiguration låter dig använda en organisationshostad modell från din terminal medan Windows Server centraliserar modellhosting och beräkning.

Den här artikeln visar hur du konfigurerar klientanslutningen och verifierar att den konfigurerade modellen svarar. Den implementerar eller säkrar inte inferenstjänsten.

Prerequisites

  • En klientdator som kör en Windows-version som GitHub Copilot CLI stödjer, med:
  • En aktiv GitHub Copilot-prenumeration. Om en organisation eller företag tillhandahåller din prenumeration måste dess administratör tillåta GitHub Copilot CLI.
  • En betrodd arbetskatalog för att starta GitHub Copilot CLI.
  • En befintlig OpenAI-kompatibel endpoint på Windows Server som:
    • Är nåbart från klientdatorn.
    • Kräver autentisering. Denna procedur gäller för fjärranslutningar till Windows Server. Reservera slutpunkter utan autentisering för loopback-scenarier utanför denna procedur.
    • Lyssnar endast på det avsedda servernätverksgränssnittet, tillåter inkommande anslutningar endast från auktoriserade klientdatorer eller subnät, och accepterar inte direkta anslutningar från det publika internet.
    • Stöder streaming och anrop av verktyg eller funktioner. OpenAI-kompatibilitet garanterar inte stöd för alla GitHub Copilot CLI-funktioner. Kontrollera ändpunktens och funktionerna i den valda modellens kapacitet med ändpunktsoperatören.
  • En nätverksanslutning från Windows klient tillWindows-Server som har:
    • Ett DNS-namn för Windows Server inferensändpunkt som löses från klientdatorn.
    • En nätverksrutt och brandväggsregler som endast tillåter auktoriserade klienter eller subnät att ansluta till slutpunktsporten.
    • Ett HTTPS-certifikat som klienten litar på och vars ämnesnamn eller ämnesalternativ matchar endpointens DNS-namn.
  • Bas-URL för slutpunkten, till exempel https://inference.contoso.com/v1.
  • Endpoint-legitimation och autentiseringstyp som endpoint-operatorn specificerar.

Installera GitHub Copilot CLI

  1. Öppna PowerShell.

  2. Installera det stabila GitHub Copilot CLI-paketet:

    winget install GitHub.Copilot
    
  3. Bekräfta att installationen lyckas:

    copilot --version
    

    Kommandot visar versionen av GitHub Copilot CLI som är installerad.

Få ett modell-ID från slutpunkten för inferens i Windows Server

  1. Ställ in bas-URL:en som ändpunktsoperatorn gav:

    $BaseUrl = 'https://inference.contoso.com/v1'
    
  2. Ange API-nyckeln eller bärartoken som endpoint-operatorn specificerar. Använd en kortlivad legitimation med minst privilegier. När din organisation tillhandahåller ett godkänt secret-store-kommando, använd det för att hämta legitimationen istället för att mata in den direkt. Följande kommando konverterar SecureString värdet till klartextvärdet $endpointCredential , som stannar kvar i minnet under denna PowerShell-session.

    $secureEndpointCredential = Read-Host 'Enter the endpoint credential' -AsSecureString
    $endpointCredential = [System.Net.NetworkCredential]::new('', $secureEndpointCredential).Password
    
  3. Skicka en GET förfrågan till $BaseUrl/models. Inkludera $endpointCredential i en Authorization: Bearer header och läs varje modell-ID från svarets array:data

    $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
    }
    

    Kommandot returnerar en eller flera modell-ID:n. Kopiera det exakta ID:t för en modell som stödjer streaming och anrop av verktyg eller funktioner.

Konfigurera GitHub Copilot CLI-leverantör och modell

  1. Ange $BaseUrl som bas-URL:en för Windows Server-slutpunkten och $endpointCredential som dess API-nyckel eller åtkomsttoken. I samma PowerShell-session, ställ in leverantörstyp, endpoint-bas-URL och exakt modell-ID. Ersätt <MODEL_ID> med ett ID som Windows Server-endpointen returnerar.

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

    Leverantörstypen openai stödjer OpenAI-kompatibla ändpunkter, inklusive vLLM.

  2. Rensa alla leverantörsautentiseringsvariabler som den nuvarande PowerShell-sessionen ärvt:

    Remove-Item Env:COPILOT_PROVIDER_API_KEY, Env:COPILOT_PROVIDER_BEARER_TOKEN, Env:COPILOT_PROVIDER_API_KEY_COMMAND -ErrorAction SilentlyContinue
    
  3. Konfigurera autentiseringsmetoden som slutpunktsoperatören angav:

    • För standard OpenAI API-nyckelautentisering, använd ett av organisationen godkänt secret-store-kommando när ett sådant finns tillgängligt:

      $env:COPILOT_PROVIDER_API_KEY_COMMAND = '<APPROVED_SECRET_STORE_COMMAND>'
      

      Kommandot måste hämta inloggingsinformationen från en godkänd hemlig lagring, bara skriva ut inloggingsinformationen och inte logga eller behålla den. COPILOT_PROVIDER_API_KEY_COMMAND har företräde framför COPILOT_PROVIDER_API_KEY.

    • Om inget godkänt secret-store-kommando finns tillgängligt, sätt API-nyckeln direkt som en kortlivad reservplan för den aktuella PowerShell-sessionen:

      $env:COPILOT_PROVIDER_API_KEY = $endpointCredential
      
    • För bärartokenautentisering, ställ in bärartokenen:

      $env:COPILOT_PROVIDER_BEARER_TOKEN = $endpointCredential
      

    Important

    Lägg inte API-nycklar i skript, versionshantering eller kommandoexempel. copilot och alla processer som startas ärver miljövariabler för leverantörsautentisering. Använd kortlivade, minst privilegierade inloggningsuppgifter och ta bort variablerna efter att du har lämnat GitHub Copilot CLI.

  4. Gå igenom de stödda leverantörsvariablerna i din installerade version:

    copilot help providers
    

Starta och verifiera GitHub Copilot CLI

  1. Byt till en katalog vars filer du litar på:

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

Important

Om du slutar innan du startar copilot, eller om ett tidigare kommando misslyckas, ta bort leverantörsautentiseringsvariablerna, rensa förfrågningsheaders och släng den säkra inloggningsinformationen innan du stänger 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()
}

Stäng PowerShell-sessionen när rensningen har slutförts. Den oföränderliga klartextsträngen $endpointCredential finns kvar i minnet tills processen avslutas.

  1. Starta GitHub Copilot CLI och kör verifieringsstegen i ett try-block så att PowerShell tar bort leverantörens autentiseringsmiljövariabler och frigör värdet SecureString när du avslutar eller om kommandot misslyckas:

    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. Bekräfta uppmaningen om betrodd katalog. Lita på katalogen för framtida sessioner endast om du kontrollerar dess innehåll och förväntar dig att den förblir betrodd.

  3. Om GitHub Copilot CLI uppmanar dig, ange /login och följ instruktionerna för att autentisera dig till GitHub. GitHub-autentisering är separat från API-nyckeln som autentiserar sig mot inferensändpunkten.

  4. Ange den här testuppmaningen:

    Reply with exactly: Local inference test succeeded
    

    Den konfigurerade modellen på Windows Server-endpointen returnerar Local inference test succeeded utan ett fel från leverantör, autentisering eller modellkompatibilitet. När du avslutar GitHub Copilot CLI kör PowerShell finally-blocket. PowerShell kan inte pålitligt radera den oföränderliga klartextsträngen $endpointCredential från minnet, så stäng PowerShell-sessionen efter att kommandot är klart för att frigöra processens minne.

Felsök GitHub Copilot CLI-anslutningar till en Windows Server-inferenspunkt

Frågan Vad du bör kontrollera
Modellens begäran kan inte nå endpointen Verifiera endpointens bas-URL, DNS-upplösning, port, nätverksrutt, tjänstestatus och TLS-certifikatförtroende. Bas-URL:en bör inkludera API-prefixet som endpoint-operatorn tillhandahåller, såsom /v1.
Modellerna begär returer 401 eller 403 Verifiera att legitimationen är giltig. För API-nyckelautentisering, föredra COPILOT_PROVIDER_API_KEY_COMMAND med ett godkänt secret-store-kommando. Använd COPILOT_PROVIDER_API_KEY endast som en kortlivad reservplan. För bärartokenautentisering, sätt COPILOT_PROVIDER_BEARER_TOKEN, som ändpunktsoperatorn specificerar.
GitHub Copilot CLI använder en annan leverantör eller modell Ställ in leverantörstyp, bas-URL, modell och vald autentiseringsvariabel i samma PowerShell-session som startar copilot. Använd exakt det modell-ID som ändpunkten returnerar. Kontrollera $HOME\.copilot\providers.jsonockså ; filens leverantörs- eller modelldeklarationer har företräde framför variablerna COPILOT_PROVIDER_* .
GitHub Copilot CLI kan inte hitta modellen Fråga $BaseUrl/models igen och jämför COPILOT_MODEL värdet med det id värde som ändpunkten returnerar, inklusive versaler och skiljetecken.
Prompten misslyckas efter att slutpunkten accepterat förfrågan Bekräfta att modellen och slutpunkten stödjer både streaming och anrop av verktyg eller funktioner. Gå igenom slutpunktsloggarna för ett icke-stödd förfrågningsfält, verktygsschema, kontextgräns eller svarsformat.