Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
GitHub Copilot CLI — это ИИ-кодный агент, который может отправлять запросы на модель от поддерживаемого клиента Windows на совместимую с OpenAI конечную точку вывода, размещённую на Windows Server. Эта конфигурация позволяет использовать модель, размещённую в организации, из вашего терминала, в то время как Windows Server централизует хостинг и вычислительные вычисления.
В этой статье показано, как настроить клиентское соединение и проверить, что настроенная модель отвечает. Он не развёртает и не защищает службу вывода.
Prerequisites
- Клиентский компьютер, на котором установлена поддерживаемая GitHub Copilot CLI версия Windows, с:
- PowerShell 6 или новее.
- Windows диспетчер пакетов (WinGet).
- Активная GitHub Copilot подписка. Если организация или предприятие предоставляет вашу подписку, её администратор должен разрешить GitHub Copilot CLI.
- Надёжный рабочий каталог для запуска GitHub Copilot CLI.
- Существующая совместимая с OpenAI конечная точка на Windows Server, которая:
- Доступен с клиентского компьютера.
- Требуется проверка подлинности. Эта процедура применяется к удалёным соединениям Windows Server. Резервируйте эндпоинты без аутентификации только для сценариев с loopback-интерфейсом за пределами этой процедуры.
- Прослушивается только на сетевом интерфейсе заданного сервера, разрешает входящие соединения только с авторизованных клиентских компьютеров или подсетей и не принимает прямые подключения из публичного интернета.
- Поддерживает стриминг и вызов инструментов или функций. Совместимость с OpenAI сама по себе не гарантирует поддержку всех возможностей CLI GitHub Copilot. Проверьте возможности конечной точки и выбранной модели с оператором конечной точки.
- Сетевое соединение между клиентом Windows и сервером Windows со следующими характеристиками:
- DNS-имя для конечной точки вывода Windows Server, которая разрешается с клиентского компьютера.
- Сетевой маршрут и правила межсетевого экрана, позволяющие подключаться только авторизованным клиентам или подсетям к порту конечной точки.
- HTTPS-сертификат, которому клиент доверяет и чьё имя субъекта или альтернативное имя субъекта совпадает с именем DNS конечной точки.
- Базовый URL-адрес конечной точки, например
https://inference.contoso.com/v1. - Тип учетных данных и аутентификации конечной точки, который указывает оператор конечной точки.
Установка GitHub Copilot CLI
Откройте PowerShell.
Установите стабильный пакет GitHub Copilot CLI:
winget install GitHub.CopilotУбедитесь, что установка прошла успешно:
copilot --versionКоманда возвращает установленную версию GitHub Copilot CLI.
Получите идентификатор модели из конечной точки вывода Windows Server
Задайте базовый URL, который предоставил оператор конечной точки:
$BaseUrl = 'https://inference.contoso.com/v1'Введите ключ API или токен носителя, который указывает оператор конечной точки. Используйте кратковременный, наименее привилегированный учётный код. Когда в вашей организации предусмотрена утверждённая команда для работы с хранилищем секретов, используйте её, чтобы получить учётные данные, вместо того чтобы вводить их вручную. Следующая команда преобразует значение
SecureStringв открытый текст$endpointCredential, который остаётся в памяти для этой сессии PowerShell.$secureEndpointCredential = Read-Host 'Enter the endpoint credential' -AsSecureString $endpointCredential = [System.Net.NetworkCredential]::new('', $secureEndpointCredential).PasswordОтправьте
GETзапрос на$BaseUrl/models. Включите$endpointCredentialвAuthorization: Bearerзаголовок и прочитайте каждый ID модели из массива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 }Команда возвращает один или несколько идентификаторов моделей. Скопируйте точный идентификатор модели, поддерживающей потоковую трансляцию и вызов инструментов или функций.
Настройте поставщика и модель CLI GitHub Copilot
Установите для
$BaseUrlбазовый URL конечной точки Windows Server, а для$endpointCredential— её ключ API или токен bearer. В той же сессии PowerShell укажите тип провайдера, базовый URL конечной точки и точный идентификатор модели. Замените<MODEL_ID>на ID, который возвращает конечная точка Windows Server.$env:COPILOT_PROVIDER_TYPE = 'openai' $env:COPILOT_PROVIDER_BASE_URL = $BaseUrl $env:COPILOT_MODEL = '<MODEL_ID>'Тип провайдера
openaiподдерживает конечные точки, совместимые с OpenAI, включая vLLM.Удалите все переменные аутентификации провайдера, которые унаследовала текущая сессия PowerShell:
Remove-Item Env:COPILOT_PROVIDER_API_KEY, Env:COPILOT_PROVIDER_BEARER_TOKEN, Env:COPILOT_PROVIDER_API_KEY_COMMAND -ErrorAction SilentlyContinueНастройте метод аутентификации, указанный оператором конечной точки:
Для стандартной аутентификации API-ключа OpenAI используйте одобренную организацией команду секретного хранилища, когда она доступна:
$env:COPILOT_PROVIDER_API_KEY_COMMAND = '<APPROVED_SECRET_STORE_COMMAND>'Команда должна извлечь учетные данные из одобренного хранилища секретов, вывести только их и не записывать их в журнал и не сохранять.
COPILOT_PROVIDER_API_KEY_COMMANDимеет больший приоритет, чемCOPILOT_PROVIDER_API_KEY.Если одобренная команда secret-store недоступна, установите ключ API напрямую как кратковременный запасной вариант для текущей сессии PowerShell:
$env:COPILOT_PROVIDER_API_KEY = $endpointCredentialДля аутентификации токена носителя установите токен носителя:
$env:COPILOT_PROVIDER_BEARER_TOKEN = $endpointCredential
Important
Не добавляйте API-ключи в скрипты, систему контроля версий или примеры команд.
copilotи любые процессы, которые он запускает, наследуют переменные среды аутентификации провайдера. Используйте кратковременные, наименее привилегированные учетные данные и удаляйте переменные после выхода из GitHub Copilot CLI.Ознакомьтесь с поддерживаемыми переменными провайдера в вашей установленной версии:
copilot help providers
Запустите и проверьте GitHub Copilot CLI
Переключитесь на папку, чьи файлы вы доверяете:
Set-Location 'C:\path\to\trusted-project'
Important
Если вы остановились до начала copilotили предыдущая команда не работает, удалите аутентификационные переменные провайдера, очистите заголовки запроса и устраните защищённые учетные данные перед закрытием 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()
}
Закройте сеанс PowerShell после завершения очистки. Неизменяемая строка открытого текста $endpointCredential остаётся в памяти до окончания процесса.
Запустите GitHub Copilot CLI и выполните этапы верификации в блоке
try, чтобы PowerShell удалял переменные среды аутентификации провайдера и устранял значениеSecureStringпри выходе или невыполнении команды: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() } }Подтвердите запрос о доверенном каталоге. Доверяйте этому каталогу в дальнейшем, только если вы контролируете его содержимое и рассчитываете, что он и дальше будет оставаться доверенным.
Если GitHub Copilot CLI подспрашивает, введите
/loginи следуйте инструкциям для аутентификации в GitHub. Аутентификация GitHub не связана с ключом API, который используется для аутентификации на конечной точке инференса.Вводите этот тестовый запрос:
Reply with exactly: Local inference test succeededНастроенная модель на конечной точке Windows Server возвращает
Local inference test succeededбез ошибок, связанных с провайдером, аутентификацией или совместимостью модели. После выхода из GitHub Copilot CLI PowerShell выполняет блокfinally. PowerShell не может надёжно стереть неизменяемую строку открытого текста$endpointCredentialиз памяти, поэтому закройте сессию PowerShell после завершения команды, чтобы освободить память процесса.
Устранение неполадок при подключении GitHub Copilot CLI к конечной точке вывода на Windows Server
| Проблема | Что требуется проверить |
|---|---|
| Запрос модели не может достичь конечной точки | Проверьте базовый URL конечной точки, разрешение DNS, порт, маршрут сети, статус сервиса и доверие к сертификату TLS. Базовый URL должен включать префикс API, который предоставляет оператор конечной точки, например /v1. |
Модели запрашивают возвраты 401 или 403 |
Убедитесь, что учетные данные действительны. Для аутентификации с помощью API-ключа используйте COPILOT_PROVIDER_API_KEY_COMMAND с утверждённой командой для хранилища секретов. Используйте COPILOT_PROVIDER_API_KEY только как кратковременный запасной вариант. Для аутентификации с токеном носителя установите COPILOT_PROVIDER_BEARER_TOKEN, как указывает оператор конечной точки. |
| GitHub Copilot CLI использует другого провайдера или модель | Задайте тип провайдера, базовый URL, модель и выбранную переменную аутентификации в той же сессии PowerShell, которая запускается copilot. Используйте точный идентификатор модели, который возвращает конечная точка. Также проверьте $HOME\.copilot\providers.json; объявления провайдера или модели этого файла имеют приоритет над переменными COPILOT_PROVIDER_* . |
| GitHub Copilot CLI не может найти модель | Запросите $BaseUrl/models снова и сравните COPILOT_MODEL значение с id результатом, которое приносит конечная точка, включая заглавные буквы и пунктуацию. |
| Промпт завершается сбоем после того, как конечная точка принимает запрос | Убедитесь, что модель и конечная точка поддерживают как стриминг, так и вызов инструментов или функций. Проверьте журналы конечных точек на наличие неподдерживаемого поля запроса, схемы инструмента, ограничения контекста или формата ответа. |