Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
GitHub Copilot CLI es un agente de programación con IA que puede enviar solicitudes al modelo desde un cliente de Windows compatible a un extremo de inferencia compatible con OpenAI alojado en Windows Server. Esta configuración te permite usar un modelo alojado en la organización desde tu terminal, mientras que Windows Server centraliza el alojamiento y el cálculo del modelo.
Este artículo te muestra cómo configurar la conexión del cliente y verificar que el modelo configurado responde. No despliega ni asegura el servicio de inferencia.
Prerequisites
- Un ordenador cliente que ejecuta una versión de Windows que soporta la CLI de GitHub Copilot, con:
- PowerShell 6 o posterior.
- Windows Administrador de paquetes (WinGet).
- Una suscripción de GitHub Copilot activa. Si una organización o empresa proporciona tu suscripción, su administrador debe permitir la CLI de GitHub Copilot.
- Un directorio de trabajo confiable desde el que iniciar la CLI de GitHub Copilot.
- Un endpoint compatible con OpenAI existente en Windows Server que:
- Es accesible desde el ordenador cliente.
- Requiere autenticación. Este procedimiento se aplica a conexiones remotas de Windows Server. Reserve los puntos de conexión sin autenticación para escenarios exclusivos de bucle local fuera de este procedimiento.
- Solo escucha en la interfaz de red del servidor prevista, permite conexiones entrantes solo desde ordenadores o subredes clientes autorizados, y no acepta conexiones directas desde internet público.
- Soporta streaming y llamadas a herramientas o funciones. La compatibilidad con OpenAI por sí sola no garantiza soporte para todas las capacidades de CLI de GitHub Copilot. Verifica las capacidades del endpoint y del modelo seleccionado con el operador del endpoint.
- Una conexión de red entre un cliente Windows y un servidor Windows que tiene:
- Un nombre DNS para el endpoint de inferencia de Windows Server que se resuelve desde el ordenador cliente.
- Una ruta de red y reglas de cortafuegos que permiten solo a clientes autorizados o subredes conectarse al puerto del endpoint.
- Un certificado HTTPS en el que el cliente confía y cuyo nombre de sujeto o nombre alternativo coincide con el nombre DNS del endpoint.
- La URL base del endpoint, como
https://inference.contoso.com/v1. - La credencial y el tipo de autenticación del endpoint especificados por el operador del endpoint.
Instalar la CLI de GitHub Copilot
Abra PowerShell.
Instala el paquete CLI estable de GitHub Copilot:
winget install GitHub.CopilotConfirma que la instalación ha sido exitosa:
copilot --versionEl comando devuelve la versión instalada de GitHub Copilot CLI.
Obtén un ID de modelo desde el endpoint de inferencia de Windows Server
Establece la URL base que proporcionó el operador del endpoint:
$BaseUrl = 'https://inference.contoso.com/v1'Introduce la clave API o el token portador que especifique el operador del endpoint. Utiliza una credencial de corta duración y de menor privilegio. Cuando tu organización proporcione un comando aprobado para la tienda secreta, úsalo para recuperar la credencial en lugar de introducirla directamente. El siguiente comando convierte el
SecureStringvalor en el valor del texto$endpointCredentialplano, que permanece en memoria para esta sesión de PowerShell.$secureEndpointCredential = Read-Host 'Enter the endpoint credential' -AsSecureString $endpointCredential = [System.Net.NetworkCredential]::new('', $secureEndpointCredential).PasswordEnvía una
GETsolicitud a$BaseUrl/models. Incluye$endpointCredentialen un encabezadoAuthorization: Bearery lee cada ID de modelo de la matrizdatade la respuesta:$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 }El comando devuelve uno o más IDs de modelo. Copia el ID exacto de un modelo que soporta streaming y llamada a herramientas o funciones.
Configura el proveedor y modelo de CLI de GitHub Copilot
Configura
$BaseUrlcomo la URL base del endpoint de Windows Server y$endpointCredentialcomo su clave de API o token de portador. En la misma sesión de PowerShell, establece el tipo de proveedor, la URL base del endpoint y el ID exacto del modelo. Sustituye<MODEL_ID>por un ID que devuelva el endpoint de Windows Server.$env:COPILOT_PROVIDER_TYPE = 'openai' $env:COPILOT_PROVIDER_BASE_URL = $BaseUrl $env:COPILOT_MODEL = '<MODEL_ID>'El
openaitipo de proveedor soporta endpoints compatibles con OpenAI, incluido vLLM.Borra cualquier variable de autenticación del proveedor que haya heredado la sesión actual de PowerShell:
Remove-Item Env:COPILOT_PROVIDER_API_KEY, Env:COPILOT_PROVIDER_BEARER_TOKEN, Env:COPILOT_PROVIDER_API_KEY_COMMAND -ErrorAction SilentlyContinueConfigura el método de autenticación que especificó el operador del endpoint:
Para la autenticación estándar de la clave API de OpenAI, utiliza un comando secret-store aprobado por la organización siempre que haya uno disponible:
$env:COPILOT_PROVIDER_API_KEY_COMMAND = '<APPROVED_SECRET_STORE_COMMAND>'El comando debe recuperar la credencial de un almacén secreto aprobado, generar solo la credencial y no registrarla ni persistirla.
COPILOT_PROVIDER_API_KEY_COMMANDtiene prioridad sobreCOPILOT_PROVIDER_API_KEY.Si no hay disponible ningún comando aprobado para el almacén de secretos, establece la clave de API directamente como alternativa temporal para la sesión actual de PowerShell:
$env:COPILOT_PROVIDER_API_KEY = $endpointCredentialPara la autenticación mediante bearer token, configura el bearer token:
$env:COPILOT_PROVIDER_BEARER_TOKEN = $endpointCredential
Importante
No pongas claves API en scripts, control de versiones ni ejemplos de comandos.
copiloty cualquier proceso que inicie hereda variables del entorno de autenticación del proveedor. Utiliza credenciales de corta duración y con el menor privilegio, y elimina las variables después de salir de la CLI de GitHub Copilot.Revisa las variables de proveedor soportadas en tu versión instalada:
copilot help providers
Inicia y verifica la CLI de GitHub Copilot
Cambia a un directorio cuyos archivos confías:
Set-Location 'C:\path\to\trusted-project'
Importante
Si paras antes de empezar copilot, o falla un comando anterior, elimina las variables de autenticación del proveedor, borra las cabeceras de la solicitud y elimina la credencial segura antes de cerrar 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()
}
Cierra la sesión de PowerShell después de que se ejecute la limpieza. La cadena de texto $endpointCredential plano inmutable permanece en memoria hasta que el proceso termina.
Inicia la CLI de GitHub Copilot y ejecuta los pasos de verificación en un
trybloque para que PowerShell elimine las variables del entorno de autenticación del proveedor y elimine elSecureStringvalor cuando cierras o falle el comando: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() } }Confirma el aviso del directorio de confianza. Confía en el directorio para futuras sesiones solo si controlas su contenido y esperas que siga siendo confiable.
Si la CLI de GitHub Copilot te lo indica, introduce
/loginy sigue las instrucciones para autenticarte en GitHub. La autenticación en GitHub es independiente de la clave API que autentica el endpoint de inferencia.Introduce este mensaje de prueba:
Reply with exactly: Local inference test succeededEl modelo configurado en el endpoint de Windows Server devuelve
Local inference test succeededsin error de proveedor, autenticación ni compatibilidad de modelo. Después de salir de la CLI de GitHub Copilot, PowerShell ejecuta elfinallybloque. PowerShell no puede borrar de forma fiable la cadena de texto$endpointCredentialplano inmutable de la memoria, así que cierra la sesión de PowerShell después de que termine el comando para liberar la memoria del proceso.
Solucionar el problema de las conexiones CLI de GitHub Copilot a un punto final de inferencia de Windows Server
| Problema | Elementos que se deben comprobar |
|---|---|
| La solicitud de modelos no puede llegar al endpoint | Verifica la URL base del endpoint, la resolución DNS, el puerto, la ruta de red, el estado del servicio y la confianza del certificado TLS. La URL base debe incluir el prefijo API que proporciona el operador de endpoint, como /v1. |
Los modelos solicitan retornos 401 o 403 |
Verifica que la credencial sea válida. Para la autenticación por clave API, prefiero COPILOT_PROVIDER_API_KEY_COMMAND con un comando de almacenamiento secreto aprobado. Utiliza COPILOT_PROVIDER_API_KEY solo como solución provisional de corta duración. Para la autenticación mediante bearer token, configure COPILOT_PROVIDER_BEARER_TOKEN según especifique el operador del punto de conexión. |
| La CLI de GitHub Copilot utiliza un proveedor o modelo diferente | Establezca el tipo de proveedor, la URL base, el modelo y la variable de autenticación seleccionada en la misma sesión de PowerShell que inicia copilot. Utiliza el ID exacto del modelo que devuelve el endpoint. También comprueba $HOME\.copilot\providers.json; las declaraciones de proveedor o modelo de ese archivo tienen prioridad sobre las COPILOT_PROVIDER_* variables. |
| La CLI de GitHub Copilot no encuentra el modelo | Consulta $BaseUrl/models de nuevo y compara el valor COPILOT_MODEL con el valor id que devuelve el extremo, incluidas las mayúsculas y la puntuación. |
| El prompt falla después de que el endpoint acepta la solicitud | Confirma que el modelo y el endpoint soportan tanto streaming como llamada a herramientas o funciones. Revisa los registros de endpoint para detectar un campo de solicitud, esquema de herramienta, límite de contexto o formato de respuesta no soportado. |