Verbind GitHub Copilot CLI met een Windows Server inferentie-endpoint

GitHub Copilot CLI is een AI-codeeragent die modelverzoeken van een ondersteunde Windows-client kan sturen naar een OpenAI-compatibel inferentie-eindpunt dat wordt gehost op Windows Server. Deze configuratie stelt je in staat een organisatie-gehost model vanaf je terminal te gebruiken, terwijl Windows Server het hosten en rekenen van het model centraliseert.

Dit artikel laat zien hoe je de clientverbinding configureert en verifieert dat het geconfigureerde model reageert. Het implementeert of beveiligt de inferentiedienst niet.

Prerequisites

  • Een clientcomputer die een Windows-versie draait die GitHub Copilot CLI ondersteunt, met:
  • Een actief GitHub Copilot-abonnement. Als een organisatie of onderneming je abonnement aanbiedt, moet de beheerder GitHub Copilot CLI toestaan.
  • Een vertrouwde werkmap van waaruit u GitHub Copilot CLI kunt starten.
  • Een bestaand OpenAI-compatibel eindpunt op Windows Server dat:
    • Is bereikbaar vanaf de clientcomputer.
    • Hiervoor is verificatie vereist. Deze procedure geldt voor externe Windows Server-verbindingen. Reserveer eindpunten zonder authenticatie voor loopback-only scenario's buiten deze procedure.
    • Luistert alleen op de beoogde servernetwerkinterface, staat inkomende verbindingen alleen toe vanaf geautoriseerde clientcomputers of subnetten, en accepteert geen directe verbindingen van het publieke internet.
    • Ondersteunt streaming en tool- of functiecalling. OpenAI-compatibiliteit alleen garandeert geen ondersteuning voor elke GitHub Copilot CLI-functionaliteit. Controleer de endpoint- en geselecteerde modelmogelijkheden met de endpointoperator.
  • Een Windows-client-naar-Windows-Server netwerkverbinding die het volgende heeft:
    • Een DNS-naam voor het inferentie-eindpunt van Windows Server dat wordt opgelost vanaf de clientcomputer.
    • Een netwerkroute en firewallregels die alleen geautoriseerde clients of subnetten toestaan om verbinding te maken met de endpointpoort.
    • Een HTTPS-certificaat dat de client vertrouwt en waarvan de onderwerpnaam of alternatieve onderwerpnaam overeenkomt met de DNS-naam van het eindpunt.
  • De basis-URL van het eindpunt, zoals https://inference.contoso.com/v1.
  • Het endpoint-credential en authenticatietype dat door de endpointoperator wordt gespecificeerd.

Installeer GitHub Copilot CLI

  1. Open PowerShell.

  2. Installeer het stabiele GitHub Copilot CLI-pakket:

    winget install GitHub.Copilot
    
  3. Bevestig dat de installatie slaagt:

    copilot --version
    

    Het commando geeft de geïnstalleerde GitHub Copilot CLI-versie terug.

Haal een model-ID op van het Windows Server inferentie-eindpunt

  1. Stel de basis-URL in die de eindpuntoperator heeft geleverd:

    $BaseUrl = 'https://inference.contoso.com/v1'
    
  2. Voer de API-sleutel of draagtoken in die door de eindpuntoperator wordt gespecificeerd. Gebruik een tijdelijk inloggegeven met minimale rechten. Wanneer je organisatie een goedgekeurd secret-store-commando geeft, gebruik dit dan om het inloggegevens op te halen in plaats van het direct in te voeren. Het volgende commando zet de SecureString waarde om in de platte tekstwaarde $endpointCredential , die voor deze PowerShell-sessie in het geheugen blijft.

    $secureEndpointCredential = Read-Host 'Enter the endpoint credential' -AsSecureString
    $endpointCredential = [System.Net.NetworkCredential]::new('', $secureEndpointCredential).Password
    
  3. Stuur een GET verzoek naar $BaseUrl/models. Neem $endpointCredential op in een Authorization: Bearer-header en lees elke model-ID uit de data-array van het antwoord:

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

    Het commando geeft één of meer model-ID's terug. Kopieer de exacte ID van een model dat streaming en tool- of functieaanroepen ondersteunt.

GitHub Copilot CLI-provider en -model configureren

  1. Stel $BaseUrl in op de basis-URL van het Windows Server-eindpunt en $endpointCredential op de API-sleutel of bearer-token. Stel in dezelfde PowerShell-sessie het providertype, de endpointbasis-URL en de exacte model-ID in. Vervang <MODEL_ID> het door een ID die het Windows Server-eindpunt teruggeeft.

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

    Het openai providertype ondersteunt OpenAI-compatibele eindpunten, inclusief vLLM.

  2. Maak alle provider-authenticatievariabelen die de huidige PowerShell-sessie heeft geërfd, op:

    Remove-Item Env:COPILOT_PROVIDER_API_KEY, Env:COPILOT_PROVIDER_BEARER_TOKEN, Env:COPILOT_PROVIDER_API_KEY_COMMAND -ErrorAction SilentlyContinue
    
  3. Configureer de authenticatiemethode die de eindpuntoperator heeft gespecificeerd:

    • Voor standaard OpenAI API-sleutel authenticatie gebruik een door de organisatie goedgekeurde secret-store-commando wanneer er een beschikbaar is:

      $env:COPILOT_PROVIDER_API_KEY_COMMAND = '<APPROVED_SECRET_STORE_COMMAND>'
      

      Het commando moet het inloggegevens ophalen uit een goedgekeurde geheime opslag, alleen het inloggegevens uitvoeren en het niet loggen of behouden. COPILOT_PROVIDER_API_KEY_COMMAND heeft voorrang op COPILOT_PROVIDER_API_KEY.

    • Als er geen goedgekeurde secret-store-opdracht beschikbaar is, stel dan de API-sleutel direct in als een kortstondige fallback voor de huidige PowerShell-sessie:

      $env:COPILOT_PROVIDER_API_KEY = $endpointCredential
      
    • Voor bearer-token authenticatie stelt u het bearer token in:

      $env:COPILOT_PROVIDER_BEARER_TOKEN = $endpointCredential
      

    Important

    Plaats geen API-sleutels in scripts, bronbeheer of commandovoorbeelden. copilot en alle processen die het start, erven de omgevingsvariabelen van providerauthenticatie. Gebruik kortstondige, minst privilege inloggegevens en verwijder de variabelen nadat je de GitHub Copilot CLI hebt verlaten.

  4. Bekijk de ondersteunende providervariabelen in je geïnstalleerde versie:

    copilot help providers
    

Start en verifieer GitHub Copilot CLI

  1. Verander naar een map waarvan je de bestanden vertrouwt:

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

Important

Als je stopt voordat je start copilot, of een eerder commando faalt, verwijder dan de provider-authenticatievariabelen, verwijder de requestheaders en verwijder de beveiligde credential voordat je PowerShell sluit:

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()
}

Sluit de PowerShell-sessie nadat de opruiming is uitgevoerd. De onveranderlijke plaintextstring $endpointCredential blijft in het geheugen totdat het proces wordt afgesloten.

  1. Start GitHub Copilot CLI en voer de verificatiestappen uit in een try blok zodat PowerShell de variabelen van de providerauthenticatieomgeving verwijdert en de SecureString waarde verwijdert wanneer je afsluit of het commando faalt:

    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. Bevestig de prompt voor vertrouwde mappen. Vertrouw de map alleen in toekomstige sessies als je volledige controle hebt over de inhoud en verwacht dat deze betrouwbaar blijft.

  3. Als GitHub Copilot CLI je hierom vraagt, voer je /login in en volg je de instructies om je aan te melden bij GitHub. GitHub-authenticatie staat los van de API-sleutel die authenticeert naar het inferentie-endpoint.

  4. Voer deze testprompt in:

    Reply with exactly: Local inference test succeeded
    

    Het geconfigureerde model op het Windows Server-eindpunt geeft geen provider-, authenticatie- of modelcompatibiliteitsfout terugLocal inference test succeeded. Nadat je de GitHub Copilot CLI hebt verlaten, voert PowerShell de blokkade finally uit. PowerShell kan de onveranderlijke plaintextstring $endpointCredential niet betrouwbaar uit het geheugen wissen, dus sluit de PowerShell-sessie nadat het commando is voltooid om het procesgeheugen vrij te geven.

Problemen met verbindingen van de GitHub Copilot CLI met een Windows Server-inferentie-eindpunt oplossen

Probleem Wat u moet controleren
Het verzoek van het model kan het eindpunt niet bereiken Controleer de endpointbasis-URL, DNS-resolutie, poort, netwerkroute, servicestatus en TLS-certificaatvertrouwen. De basis-URL moet het API-voorvoegsel bevatten dat de endpointoperator aangeeft, zoals /v1.
De modellenaanvraag retourneert 401 of 403 Controleer of het certificaat geldig is. Voor API-sleutelauthenticatie heeft COPILOT_PROVIDER_API_KEY_COMMAND met een goedgekeurd secret-store-commando de voorkeur. Gebruik COPILOT_PROVIDER_API_KEY alleen als tijdelijk vangnet. Voor bearer-tokenverificatie stelt u COPILOT_PROVIDER_BEARER_TOKEN in, zoals de beheerder van het eindpunt aangeeft.
GitHub Copilot CLI gebruikt een andere provider of model Stel het type provider, basis-URL, model en geselecteerde authenticatievariabele in in dezelfde PowerShell-sessie die start copilot. Gebruik de exacte model-ID die het eindpunt teruggeeft. Controleer ook $HOME\.copilot\providers.json; de provider- of modelverklaringen van dat bestand krijgen voorrang boven de variabelen COPILOT_PROVIDER_* .
GitHub Copilot CLI kan het model niet vinden Vraag $BaseUrl/models opnieuw op en vergelijk de COPILOT_MODEL waarde met de id waarde die het eindpunt teruggeeft, inclusief hoofdletters en interpunctie.
De prompt faalt nadat het eindpunt het verzoek accepteert Bevestig dat het model en het eindpunt zowel streaming als tool- of functieaanroepen ondersteunen. Bekijk de eindpuntlogboeken op een niet-ondersteund verzoekveld, toolschema, contextlimiet of responsformaat.