Hubungkan CLI GitHub Copilot ke endpoint inferensi Windows Server

GitHub Copilot CLI adalah agen pengkode AI yang dapat mengirim permintaan model dari klien Windows yang didukung ke endpoint inferensi kompatibel OpenAI yang dihosting di Windows Server. Konfigurasi ini memungkinkan Anda menggunakan model yang dihosting organisasi dari terminal Anda sementara Windows Server memusatkan hosting model dan komputasi.

Artikel ini menunjukkan cara mengonfigurasi koneksi klien dan memverifikasi bahwa model yang dikonfigurasi merespons. Layanan inferensi tidak dideploy atau diamankan.

Prerequisites

  • Komputer klien yang menjalankan versi Windows yang didukung GitHub Copilot CLI, dengan:
  • Langganan GitHub Copilot aktif. Jika sebuah organisasi atau perusahaan menyediakan langganan Anda, administratornya harus mengizinkan GitHub Copilot CLI.
  • Sebuah direktori kerja tepercaya yang digunakan untuk memulai GitHub Copilot CLI.
  • Endpoint yang sudah ada dan kompatibel dengan OpenAI di Windows Server yang:
    • Dapat diakses dari komputer klien.
    • Memerlukan autentikasi. Prosedur ini berlaku untuk koneksi Windows Server jarak jauh. Sediakan endpoint tanpa autentikasi hanya untuk skenario loopback di luar prosedur ini.
    • Mendengarkan hanya pada antarmuka jaringan server yang dimaksud, hanya mengizinkan koneksi masuk dari komputer klien atau subnet yang sah, dan tidak menerima koneksi langsung dari internet publik.
    • Mendukung streaming dan pemanggilan alat atau fungsi. Kompatibilitas OpenAI saja tidak menjamin dukungan untuk setiap kemampuan CLI GitHub Copilot. Verifikasi endpoint dan kemampuan model yang dipilih dengan operator endpoint.
  • Koneksi jaringan Windows-klien-ke-Windows-Server yang memiliki:
    • Nama DNS untuk endpoint inferensi Windows Server yang dapat diresolusikan dari komputer klien.
    • Rute jaringan dan aturan firewall yang hanya mengizinkan klien atau subnet yang berwenang untuk terhubung ke port endpoint.
    • Sertifikat HTTPS yang dipercaya klien dan nama subjek atau nama alternatif subjeknya cocok dengan nama DNS endpoint.
  • URL dasar endpoint, seperti https://inference.contoso.com/v1.
  • Kredensial endpoint dan tipe autentikasi yang ditentukan oleh operator endpoint.

Instal GitHub Copilot CLI

  1. Buka PowerShell.

  2. Instal paket CLI GitHub Copilot yang stabil:

    winget install GitHub.Copilot
    
  3. Konfirmasi bahwa instalasi berhasil:

    copilot --version
    

    Perintah ini mengembalikan versi CLI GitHub Copilot yang terpasang.

Dapatkan ID model dari endpoint inferensi Windows Server

  1. Atur URL dasar yang diberikan operator endpoint:

    $BaseUrl = 'https://inference.contoso.com/v1'
    
  2. Masukkan kunci API atau token pembawa yang ditentukan oleh operator endpoint. Gunakan kredensial yang berumur pendek dan memiliki hak istimewa paling sedikit. Jika organisasi Anda menyediakan perintah secret-store yang telah disetujui, gunakan perintah tersebut untuk mengambil kredensial alih-alih memasukkan kredensial secara langsung. Perintah berikut mengubah SecureString nilai menjadi nilai plaintext $endpointCredential , yang tetap berada di memori untuk sesi PowerShell ini.

    $secureEndpointCredential = Read-Host 'Enter the endpoint credential' -AsSecureString
    $endpointCredential = [System.Net.NetworkCredential]::new('', $secureEndpointCredential).Password
    
  3. Kirim permintaan GET ke $BaseUrl/models. Sertakan $endpointCredential dalam header Authorization: Bearer , dan baca setiap ID model dari array respons 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
    }
    

    Perintah ini mengembalikan satu atau lebih ID model. Salin ID tepat dari model yang mendukung streaming dan pemanggilan alat atau fungsi.

Konfigurasikan penyedia dan model CLI GitHub Copilot

  1. Atur $BaseUrl ke URL dasar endpoint Windows Server dan $endpointCredential ke kunci API atau token pembawanya. Dalam sesi PowerShell yang sama, atur tipe provider, URL dasar endpoint, dan ID model yang tepat. Ganti <MODEL_ID> dengan ID yang dikembalikan oleh endpoint Windows Server.

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

    Tipe openai penyedia mendukung endpoint yang kompatibel dengan OpenAI, termasuk vLLM.

  2. Hapus variabel otentikasi penyedia yang diwarisi oleh sesi PowerShell saat ini:

    Remove-Item Env:COPILOT_PROVIDER_API_KEY, Env:COPILOT_PROVIDER_BEARER_TOKEN, Env:COPILOT_PROVIDER_API_KEY_COMMAND -ErrorAction SilentlyContinue
    
  3. Konfigurasikan metode autentikasi yang ditentukan operator endpoint:

    • Untuk autentikasi kunci API OpenAI standar, gunakan perintah secret-store yang disetujui oleh organisasi jika tersedia:

      $env:COPILOT_PROVIDER_API_KEY_COMMAND = '<APPROVED_SECRET_STORE_COMMAND>'
      

      Perintah harus mengambil kredensial dari penyimpanan rahasia yang telah disetujui, hanya menampilkan kredensial, dan tidak mencatatnya ke log atau menyimpannya. COPILOT_PROVIDER_API_KEY_COMMAND lebih diutamakan daripada COPILOT_PROVIDER_API_KEY.

    • Jika tidak ada perintah secret-store yang disetujui tersedia, atur kunci API secara langsung sebagai cadangan singkat untuk sesi PowerShell saat ini:

      $env:COPILOT_PROVIDER_API_KEY = $endpointCredential
      
    • Untuk autentikasi bearer-token, atur bearer token:

      $env:COPILOT_PROVIDER_BEARER_TOKEN = $endpointCredential
      

    Important

    Jangan masukkan kunci API ke dalam skrip, kontrol sumber, atau contoh perintah. copilot dan proses apa pun yang dijalankannya mewarisi variabel lingkungan autentikasi provider. Gunakan kredensial yang berumur pendek dengan hak istimewa paling sedikit, dan hapus variabel setelah Anda keluar dari GitHub Copilot CLI.

  4. Tinjau variabel penyedia yang didukung dalam versi yang Anda terpasang:

    copilot help providers
    

Mulai dan verifikasi CLI GitHub Copilot

  1. Ubah ke direktori yang file-nya Anda percaya:

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

Important

Jika Anda berhenti sebelum memulai copilot, atau perintah sebelumnya gagal, hapus variabel autentikasi penyedia, hapus header permintaan, dan buang kredensial aman sebelum Anda menutup 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()
}

Tutup sesi PowerShell setelah pembersihan dijalankan. String plaintext $endpointCredential yang tidak dapat diubah tetap berada di memori sampai proses keluar.

  1. Mulai GitHub Copilot CLI dan jalankan langkah verifikasi dalam blok try sehingga PowerShell menghapus variabel lingkungan autentikasi penyedia dan membuang SecureString nilai saat Anda keluar atau perintah gagal:

    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. Konfirmasi permintaan direktori tepercaya. Percayakan direktori untuk sesi berikutnya hanya jika Anda mengontrol isinya dan mengharapkan direktori tetap dipercaya.

  3. Jika CLI GitHub Copilot meminta Anda, masukkan /login dan ikuti instruksi untuk mengautentikasi ke GitHub. Autentikasi GitHub terpisah dari kunci API yang mengautentikasi ke endpoint inferensi.

  4. Masukkan prompt uji ini:

    Reply with exactly: Local inference test succeeded
    

    Model yang dikonfigurasi pada endpoint Windows Server mengembalikan Local inference test succeeded tanpa kesalahan provider, autentikasi, atau kompatibilitas model. Setelah Anda keluar dari GitHub Copilot CLI, PowerShell menjalankan blok tersebutfinally. PowerShell tidak dapat menghapus string plaintext $endpointCredential yang tidak dapat diubah dari memori secara andal, jadi tutup sesi PowerShell setelah perintah selesai untuk melepaskan memori proses.

Mengatasi masalah koneksi CLI GitHub Copilot ke endpoint inferensi di Windows Server

Masalah Apa yang harus diperiksa
Permintaan model tidak dapat menjangkau endpoint Verifikasi URL dasar endpoint, resolusi DNS, port, rute jaringan, status layanan, dan kepercayaan sertifikat TLS. URL dasar harus mencakup awalan API yang disediakan operator endpoint, seperti /v1.
Permintaan model mengembalikan 401 atau 403 Verifikasi bahwa kredensial valid. Untuk autentikasi kunci API, pilih COPILOT_PROVIDER_API_KEY_COMMAND dengan perintah secret-store yang disetujui. Gunakan COPILOT_PROVIDER_API_KEY hanya sebagai cadangan singkat. Untuk autentikasi bearer-token, atur COPILOT_PROVIDER_BEARER_TOKEN, sesuai dengan spesifikasi operator endpoint.
GitHub Copilot CLI menggunakan penyedia atau model yang berbeda Atur tipe provider, URL dasar, model, dan variabel autentikasi yang dipilih dalam sesi PowerShell yang sama yang dimulai copilot. Gunakan ID model yang persis dikembalikan oleh endpoint. Juga periksa $HOME\.copilot\providers.json; deklarasi penyedia atau model file tersebut lebih diutamakan daripada COPILOT_PROVIDER_* variabel.
GitHub Copilot CLI tidak dapat menemukan modelnya Query $BaseUrl/models lagi dan bandingkan nilai COPILOT_MODEL dengan nilai id yang dikembalikan oleh endpoint, termasuk kapitalisasi dan tanda baca.
Prompt gagal setelah endpoint menerima permintaan Pastikan model dan endpoint mendukung streaming serta pemanggilan alat atau fungsi. Tinjau log endpoint untuk bidang permintaan yang tidak didukung, skema alat, batas konteks, atau format respons.