Skip to main content

Tarjeta de la aplicación: funciones de IA de GitHub para seguridad y calidad

Use las características de seguridad de código y calidad de código con tecnología de inteligencia artificial de GitHub de forma responsable mediante la comprensión de sus propósitos, funcionalidades y limitaciones.

¿Qué es una tarjeta de aplicación?

GitHub’s application and platform cards are intended to help you understand how our AI technology works, the choices application owners can make that influence application performance and behavior, and the importance of considering the whole application, including the technology, the people, and the environment. Application cards are created for AI applications and platform cards are created for AI platform services. These resources can support the development or deployment of your own applications and can be shared with users or stakeholders impacted by them.

As part of its commitment to responsible AI, GitHub adheres to Microsoft's six core principles: fairness, reliability and safety, privacy and security, inclusiveness, transparency, and accountability. These principles are embedded in the Responsible AI Standard, which guides teams in designing, building, and testing AI applications. Application and Platform Cards play a key role in operationalizing these principles by offering transparency around capabilities, intended uses, and limitations. For further insight, readers are encouraged to explore Microsoft’s Responsible AI Transparency Report and Términos de GitHub.

1. Información general

la plataforma de seguridad y calidad de GitHub incluye varias funcionalidades con tecnología de inteligencia artificial que ayudan a los desarrolladores a encontrar y corregir vulnerabilidades de seguridad, detectar secretos filtrados y mejorar la calidad del código. Esta tarjeta de aplicación cubre las siguientes experiencias:

  • Copilot Autofix para el análisis de código: genera automáticamente sugerencias de corrección para las alertas de CodeQL en las solicitudes de extracción y la rama predeterminada.
  • Detección de secretos genéricos: usa un modelo para identificar secretos no estructurados en el código fuente que la coincidencia de patrones determinista no puede encontrar.
  • Generador de regex para patrones personalizados: usa IA para generar expresiones regulares para patrones personalizados de escaneo de secretos a partir de descripciones en lenguaje natural.
  • GitHub Code Quality: detecta problemas de calidad del código y ofrece sugerencias de corrección impulsadas por LLM en las pull requests y en la rama predeterminada.

Copilot Autofix es una expansión del examen de código que proporciona a los usuarios recomendaciones dirigidas para ayudarles a corregir alertas de examen de código, evitando la introducción de nuevas vulnerabilidades de seguridad. Las posibles correcciones se generan automáticamente mediante modelos de lenguaje de gran tamaño (LLM) a partir de datos de la base de código y del análisis de código. Copilot Autofix está disponible para el análisis de CodeQL y no requiere una suscripción de GitHub Copilot.

Los usuarios que examinan código ya pueden ver alertas de seguridad en sus solicitudes de incorporación de cambios. Sin embargo, los desarrolladores suelen tener poco entrenamiento en codificación segura, por lo que la corrección de estas alertas requiere un esfuerzo considerable. Copilot Autofix reduce la barrera de entrada al combinar información sobre buenas prácticas con información de la base de código y de la alerta para sugerir una posible corrección. En lugar de empezar con una búsqueda de información sobre la vulnerabilidad, el desarrollador comienza con una sugerencia de código que muestra una posible solución para el código base. El desarrollador evalúa la posible corrección para determinar si es la mejor solución para el código base y para asegurarse de que mantiene el comportamiento previsto.

La detección genérica de secretos del análisis de secretos es una ampliación impulsada por IA que identifica secretos no estructurados en el código fuente u otras áreas de GitHub y genera una alerta. Los usuarios de GitHub Secret Protection y GitHub Advanced Security ya pueden recibir alertas de análisis de secretos para patrones personalizados o de partners detectados en su código fuente, pero los secretos no estructurados no son fáciles de detectar. El análisis de secretos utiliza modelos para identificar dichos secretos. Cuando se detecta una búsqueda, se muestra una alerta en la lista "Genérica" de alertas de examen de secretos (en la pestaña Seguridad y calidad del repositorio, organización o empresa), de modo que los mantenedores y administradores de seguridad puedan revisar la alerta y, cuando sea necesario, quitar la credencial o implementar una corrección. La detección genérica de secretos no requiere una suscripción a GitHub Copilot.

El generador de expresiones regulares para patrones personalizados del análisis de secretos permite definir patrones personalizados de análisis de secretos sin necesidad de conocer expresiones regulares. Los usuarios escriben una descripción del lenguaje natural de lo que quieren detectar, junto con cadenas de ejemplo opcionales, y el generador genera hasta tres expresiones regulares candidatas. Estos patrones se pueden validar a través del mecanismo de ejecución seca antes de implementarse como patrones personalizados. El generador de expresiones regulares no requiere una suscripción de GitHub Copilot.

GitHub Code Quality ayuda a los usuarios a mejorar la fiabilidad, la mantenibilidad y el estado general del proyecto al mostrar comentarios prácticos y ofrecer correcciones automáticas para los hallazgos detectados en las solicitudes de extracción y en la rama predeterminada. Cuando la calidad del código está habilitada, dos tipos de análisis se ejecutan: las consultas de calidad de CodeQL identifican problemas con la capacidad de mantenimiento, confiabilidad o estilo de código, y el análisis con tecnología LLM proporciona información adicional más allá de lo que los motores deterministas pueden encontrar. Cuando se detecta un problema de calidad, Copilot Autofix sugiere una corrección pertinente. En las solicitudes de extracción, los resultados se muestran como comentarios dejados por el bot github-code-quality. En la rama predeterminada, los hallazgos impulsados por LLM se muestran en el panel Hallazgos de IA en la pestaña Seguridad y calidad.

El idioma principal admitido para las características de inteligencia artificial de seguridad de código de GitHub es inglés.

2. Términos clave

La siguiente lista proporciona un glosario de términos clave relacionados con las funciones de IA de GitHub Code Security:

  • CodeQL: motor de análisis de código semántico de GitHub para identificar vulnerabilidades de seguridad en el código fuente.
  • Copilot Autofix: característica con tecnología LLM de GitHub que genera automáticamente sugerencias de corrección para alertas de análisis de código. Copilot Autofix está disponible para el análisis de CodeQL y no requiere una suscripción de GitHub Copilot.
  • Modelo de lenguaje grande (LLM): un tipo de red neuronal entrenada en un gran cuerpo de datos de texto que puede generar, analizar y transformar el lenguaje natural y el código. Copilot Autofix usa una o varias LLM para procesar alertas de análisis de código y generar sugerencias de corrección.
  • Detección de inteligencia artificial para el examen de secretos: funcionalidades con tecnología de inteligencia artificial que amplían el examen de secretos, incluida la detección genérica de secretos. No requiere una suscripción de GitHub Copilot.
  • Detección de secretos genéricos: identificación mediante IA de secretos no estructurados (como contraseñas) que no están cubiertos por patrones de socios o personalizados. La detección de secretos genérico usa modelos para buscar cadenas similares a contraseñas en el código fuente.
  • Patrón personalizado: expresión regular definida por el usuario que usa el examen de secretos para detectar secretos que coinciden con un formato específico. El generador de expresiones regulares de patrón personalizado ayuda a crear estos patrones a partir de descripciones de lenguaje natural.
  • SARIF: Formato de intercambio de resultados de análisis estáticos: el formato estándar CodeQL usa para notificar los resultados del examen de código, incluidas las ubicaciones de alerta y las descripciones.
  • GitHub Calidad del código: característica que expone problemas de calidad de código y ofrece correcciones con tecnología LLM. La calidad del código combina consultas de calidad de CodeQL con análisis con tecnología LLM para identificar problemas de mantenimiento, confiabilidad y estilo.
  • Conclusiones de IA: el panel de la pestaña Seguridad y calidad donde se muestran los resultados de calidad de código con tecnología LLM para la rama predeterminada.

3. Características o funcionalidades clave

Las características y capacidades clave que se describen aquí explican para qué están diseñadas las funciones de IA de GitHub Code Security y cómo funcionan en las tareas compatibles.

  • ** Sugerencias de corrección automática para alertas de seguridad**: Copilot Autofix genera automáticamente sugerencias de cambio de código para las alertas de CodeQL que se encuentran en las solicitudes de incorporación de cambios y en la rama predeterminada. Cada sugerencia incluye tanto el cambio de código propuesto como una explicación del lenguaje natural de la corrección.
  • Alert-to-fix translation: Copilot Autofix traduce la descripción y la ubicación de una alerta de examen de código en cambios de código accionables que pueden resolver la vulnerabilidad de seguridad subyacente. El sistema usa datos de alertas de CodeQL en formato SARIF, fragmentos de código circundantes y texto de ayuda de consulta para generar correcciones pertinentes.
  • Compatibilidad multilingüe: Copilot Autofix admite generar correcciones para un subconjunto de consultas incluidas en los conjuntos de consultas de CodeQL predeterminados y ampliados de seguridad para C#, C/C++, Go, Java/Kotlin, Swift, JavaScript/TypeScript, Python, Ruby y Rust. Para obtener más información sobre estos conjuntos de consultas, consulte Conjuntos de consultas codeQL.
  • Detección de contraseñas impulsada por IA: la detección genérica de secretos analiza el contenido del repositorio mediante IA para identificar secretos no estructurados (como contraseñas) que la coincidencia determinista de patrones no puede encontrar. Los secretos detectados se muestran como alertas en la lista de alertas de detección de secretos, en la pestaña Seguridad y calidad.
  • Generación de expresiones regulares con tecnología de IA: el generador de expresiones regulares del análisis de secretos toma una descripción del lenguaje natural del patrón que desea detectar, junto con cadenas de ejemplo opcionales, y genera hasta tres expresiones regulares candidatas. Cada resultado incluye una descripción en lenguaje claro generada por IA, y puede validar los patrones mediante una prueba en seco antes del despliegue.
  • Detección de problemas de calidad del código: GitHub Code Quality ejecuta consultas de CodeQL para la calidad del código sobre el código modificado en las solicitudes de extracción y periódicamente sobre la totalidad de la rama predeterminada. Estas consultas identifican problemas de mantenimiento, confiabilidad y estilo.
  • Análisis de calidad de código con tecnología LLM: después de cada inserción en la rama predeterminada, un LLM analiza los archivos modificados recientemente para problemas de calidad más allá de lo que los motores deterministas pueden encontrar. Los resultados se muestran en el panel de conclusiones de IA .
  • ** Sugerencias de corrección automática para los resultados de calidad**: cuando se detecta un problema de calidad por cualquier tipo de análisis, Copilot Autofix genera una sugerencia de corrección. En las solicitudes de incorporación de cambios, el github-code-quality bot publica un comentario con el cambio sugerido.

4. Usos previstos

Las funciones de IA de GitHub Code Security se pueden usar en múltiples escenarios de una amplia variedad de industrias. Algunos ejemplos de casos de uso incluyen:

  • Acelerar la corrección de las vulnerabilidades de seguridad: Utiliza Copilot Autofix para generar rápidamente sugerencias de corrección para las alertas de CodeQL, lo que reduce el tiempo y los conocimientos especializados necesarios para abordar los problemas de seguridad detectados durante el análisis de código.
  • ** Reducir la barrera para proteger la codificación**: Copilot Autofix ayuda a los desarrolladores con un entrenamiento limitado de codificación segura. En lugar de investigar vulnerabilidades de forma independiente, los desarrolladores comienzan con una sugerencia de código que muestra una posible solución para su código base.
  • Agilización de la revisión de solicitudes de extracción: Cuando el análisis de código detecta alertas en una solicitud de extracción, Copilot Autofix proporciona sugerencias de corrección en línea, lo que ayuda a los desarrolladores a resolver problemas de seguridad antes de fusionarla.
  • Corrección de alertas en la rama predeterminada: Copilot Autofix también puede generar sugerencias de corrección para las alertas existentes en la rama predeterminada, lo que ayuda a los equipos a reducir la acumulación de hallazgos de seguridad pendientes.
  • Detección de contraseñas filtradas en el código fuente: use la detección de secretos genéricos para buscar secretos no estructurados en repositorios que se encuentran fuera de la cobertura de patrones de análisis de secretos personalizados y asociados.
  • Evaluar las credenciales con alertas contextuales: cuando se detecta una contraseña, se muestra una alerta con contexto de detección de IA en la lista de alertas, lo que permite a los mantenedores y administradores de seguridad revisar la búsqueda y tomar medidas.
  • Crear patrones personalizados de análisis de secretos sin conocimientos de expresiones regulares: Use el generador de expresiones regulares para definir patrones personalizados describiendo lo que desea detectar en lenguaje natural, sin necesidad de escribir expresiones regulares manualmente.
  • Validación de patrones generados antes de la implementación: después de generar expresiones regulares, use el mecanismo de ejecución seca para probar patrones en el repositorio u organización antes de implementarlos como patrones personalizados.
  • ** Problemas de calidad del código en un repositorio**: Use GitHub Code Quality para identificar problemas de mantenimiento, confiabilidad y estilo para que los desarrolladores y administradores puedan priorizar rápidamente áreas de riesgo.
  • Acelerar la corrección de las incidencias de calidad del código: Copilot Autofix sugiere correcciones para las incidencias de calidad, combinando información sobre buenas prácticas con detalles de la base de código para proponer una posible corrección directamente en la pull request o en el panel de incidencias de IA.
  • Proporcionar comentarios prácticos sobre las solicitudes de extracción: el bot github-code-quality publica comentarios con correcciones sugeridas en las solicitudes de extracción, lo que ayuda a los desarrolladores a abordar problemas de calidad antes de fusionarlas.

5. Modelos y datos de entrenamiento

Copilot Autofix usa las API internas de GitHub Copilot, que se comunican con los modelos de lenguaje de gran tamaño y generan tanto correcciones de código sugeridas como texto explicativo para esas correcciones.

La detección de secretos genérico usa modelos para buscar secretos no estructurados.

El generador de expresiones regulares de patrón personalizado usa LLMs y la API de GitHub Copilot para generar expresiones regulares que coincidan con las descripciones y ejemplos proporcionados por el usuario.

El análisis impulsado por LLM de GitHub Code Quality usa los modelos de lenguaje de Copilot para analizar los archivos modificados recientemente en busca de problemas de calidad. El componente de consultas de calidad CodeQL no usa un LLM. Copilot Autofix para los hallazgos de calidad del código usa el mismo flujo de LLM que Copilot Autofix para el análisis de código.

Para obtener una comparación de los modelos disponibles para Copilot, consulte Comparación de modelos de IA. Para obtener la lista completa de modelos admitidos, consulte Modelos de IA admitidos en GitHub Copilot. Para obtener información sobre dónde se hospedan los modelos, consulte Hospedaje de modelos para GitHub Copilot. Para obtener más información sobre los datos utilizados para entrenar los modelos fundacionales que sustentan las funciones de seguridad y calidad de GitHub, consulte ¿Con qué datos se ha entrenado GitHub Copilot? en las Preguntas frecuentes de GitHub Copilot.

Los datos que administra Copilot Autofix no se emplean con fines de entrenamiento de LLM. El uso de esta característica se rige por los términos y condiciones existentes asociados a GitHub Advanced Security. Para obtener más información, consulte Términos de GitHub para productos y funciones adicionales en la documentación de Free, Pro y Team.

6. Rendimiento

Cuando Copilot Autofix está habilitado para un repositorio, las alertas de análisis de código se procesan mediante la siguiente canalización:

  1. Procesamiento de entrada: cuando se identifica una alerta de análisis de código, GitHub reúne los datos pertinentes en una instrucción para el modelo de lenguaje. Estos datos incluyen lo siguiente:
    • Datos de alertas de CodeQL en formato SARIF
    • Código de la versión actual de la rama, incluidos fragmentos cortos alrededor de cada ubicación de origen, ubicación de destino y cualquier ubicación a la que se haga referencia en el mensaje de alerta o la ruta de flujo.
    • Las primeras ~10 líneas de cada archivo involucrado en alguna de esas ubicaciones
    • Texto de ayuda de la consulta CodeQL que identificó el problema
  2. Análisis del modelo de lenguaje: la solicitud ensamblada se envía al modelo de lenguaje, que analiza el contexto de alerta, la estructura de código y la información de ayuda de consulta.
  3. Generación de respuesta: el modelo genera una posible corrección, incluido el cambio de código propuesto y un texto explicativo que describe la corrección.
  4. Formato de salida: La sugerencia se almacena en el back-end del análisis de código y se muestra como una sugerencia en línea en la solicitud de extracción o en la página de detalles de la alerta. No se necesita ninguna interacción del usuario más allá de habilitar el examen de código en el código base y crear una solicitud de incorporación de cambios.

Diferencias por experiencia

La detección de secretos de IA procesa la entrada y genera la salida de la siguiente manera:

  1. Procesamiento de entrada: La entrada se limita al texto (normalmente, código) que un usuario ha registrado en un repositorio. El sistema proporciona este texto al modelo junto con un mensaje meta que pide al modelo que busque secretos no estructurados dentro del ámbito de la entrada. El usuario no interactúa directamente con el modelo. Se pueden usar varios modelos para validar una única búsqueda.
  2. Análisis de modelos: el modelo examina las cadenas que se asemejan a secretos no estructurados como contraseñas.
  3. Generación de respuesta: el modelo comprueba que las cadenas identificadas incluidas en la respuesta existen realmente en la entrada.
  4. Formato de salida: las cadenas detectadas aparecen como alertas en la página de alertas de análisis de secretos, en una lista separada de la de las alertas habituales de análisis de secretos. Cada alerta indica que se detectó con IA. Para obtener información sobre cómo ver alertas de secretos genéricos, consulte Visualización y filtrado de alertas del análisis de secretos.

El generador de regex de patrones personalizados procesa la entrada y genera la salida de la siguiente manera:

  1. Procesamiento de entrada: los usuarios escriben una descripción de texto de lenguaje natural del patrón que desean detectar, junto con cadenas de ejemplo opcionales que deben coincidir.
  2. Language model analysis: La descripción y los ejemplos se envían al LLM a través de la API de GitHub Copilot, que genera expresiones regulares que coinciden con la entrada.
  3. Generación de respuesta: el modelo devuelve hasta tres expresiones regulares candidatas. Cada resultado incluye una descripción en lenguaje claro generada por IA. Algunos resultados pueden ser bastante similares y es posible que algunos no coincidan con todas las instancias del patrón previsto.
  4. Formato de salida: los resultados se muestran en el formulario de definición de patrón personalizado. Al hacer clic en Usar resultado, la expresión y los ejemplos se copian en el formulario de patrón personalizado principal, donde puede realizar una ejecución seca para validar el patrón en el repositorio o la organización. Para obtener más información, vea Definición de patrones personalizados para el examen de secretos.

Análisis de calidad del código basado en LLM de GitHub procesa la entrada y genera resultados de la siguiente manera:

  1. Procesamiento de la entrada: Después de cada push a la rama predeterminada, los archivos modificados recientemente se combinan con otra información contextual relevante para formar un prompt. El mensaje se envía a un modelo de lenguaje Copilot.
  2. Análisis del modelo de lenguaje: el modelo de lenguaje analiza el código para mejorar el mantenimiento, la confiabilidad y otros problemas de calidad.
  3. Generación de respuesta: el modelo genera una respuesta que puede incluir sugerencias de lenguaje natural y sugerencias de código vinculadas a líneas específicas.
  4. Formato de salida: los resultados se muestran en el panel de conclusiones de IA en la pestaña Seguridad y calidad . Donde La calidad del código proporciona una sugerencia de código, se presenta como un cambio sugerido que se puede aplicar con un par de clics.

Corrección automática de Copilot para hallazgos de calidad del código en las solicitudes de extracción:

  1. Procesamiento de entrada: los resultados de calidad del código del análisis de CodeQL en una solicitud de incorporación de cambios se envían al LLM junto con el contexto de código circundante.
  2. Análisis de modelos de lenguaje: LLM analiza la búsqueda y genera una posible corrección.
  3. Generación de respuestas: si LLM puede generar una corrección, genera un cambio de código sugerido.
  4. Formato de salida: el github-code-quality bot publica un comentario en la solicitud de incorporación de cambios con el cambio sugerido. Los usuarios también pueden solicitar la generación de correcciones automáticas para los resultados de la rama predeterminada.

7. Limitaciones

Comprender las limitaciones de las funciones de inteligencia artificial de GitHub Code Security es fundamental para determinar si se utilizan dentro de límites seguros y eficaces. Aunque animamos a los clientes a aprovechar las características de inteligencia artificial de seguridad de código GitHub en sus soluciones o aplicaciones innovadoras, es importante tener en cuenta que GitHub características de inteligencia artificial de seguridad de código no se diseñó para todos los escenarios posibles. Animamos a los usuarios a hacer referencia a Términos de GitHub , así como a las siguientes consideraciones al elegir un caso de uso:

  • Non-determinism: Copilot Autofix usa un modelo generativo que no es determinista. Incluso con la misma alerta y código, podría no generar una sugerencia viable, o la sugerencia puede variar en todos los intentos.
  • Complejidad y contexto del problema: algunas alertas de seguridad, como las que requieren un flujo de datos de seguimiento en un código base complejo, de varios archivos o aquellos que representan errores de lógica sutiles, podrían ser difíciles de resolver.
  • Tamaño del archivo: si el código afectado está dentro de un archivo o repositorio muy grande, el contexto proporcionado al LLM se puede truncar. Cuando el contexto está limitado, la característica no intentará corregirla.
  • Cobertura de idiomas y marcos de trabajo: Aunque Copilot Autofix admite una lista creciente de idiomas y alertas de CodeQL, no cubre todos los posibles tipos de alertas ni todos los idiomas.
  • Capacidad operativa de LLM: la generación de correcciones está sujeta a la capacidad operativa de LLM. Si no hay ninguna sugerencia disponible o si una corrección sugerida produce un error en las pruebas internas, no se muestra ninguna sugerencia.
  • Datos centrados en inglés: el sistema usa principalmente datos en inglés, incluidos los avisos, el código de los conjuntos de datos de entrenamiento de LLM y los casos de prueba usados para la evaluación interna. Las sugerencias pueden tener una tasa de éxito menor para el código fuente y los comentarios en otros idiomas.
  • Errores de sintaxis: el sistema puede sugerir correcciones que no son sintácticamente correctos cambios de código.
  • Errores de ubicación: el sistema puede sugerir correcciones en ubicaciones incorrectas. Aceptar este tipo de corrección sin editar la ubicación puede presentar un error de sintaxis.
  • Errores semánticos: el sistema puede sugerir correcciones que son válidas sintácticamente, pero cambian la semántica del programa. El sistema no entiende la intención del programador.
  • Vulnerabilidades de seguridad y correcciones engañosas: el sistema puede sugerir correcciones que no corrigen la vulnerabilidad subyacente o introducen nuevas vulnerabilidades.
  • Correcciones parciales: el sistema puede sugerir correcciones que solo abordan parcialmente la vulnerabilidad de seguridad o solo conservan parcialmente la funcionalidad de código prevista.
  • Cambios de dependencia: las correcciones sugeridas pueden incluir agregar o actualizar dependencias de software. El sistema no sabe qué versiones de dependencia son compatibles o seguras, y puede sugerir dependencias fabricadas publicadas en nombres estadísticamente probables. Compruebe siempre los cambios de dependencia antes de la combinación.

Limitaciones específicas de la detección de secretos de IA

  • Notificación incompleta: la detección de secretos mediante IA puede no detectar casos de credenciales confirmadas en un repositorio. La detección de inteligencia artificial para secretos mejorará con el tiempo. Eres el único responsable de garantizar la seguridad de tu código.
  • Código de prueba: es posible que la detección de secretos de IA no detecte secretos en el código de prueba. El análisis de secretos omite las detecciones cuando se cumplen determinadas condiciones, como:
    • La ruta de acceso del archivo contiene "test", "mock" o "spec"
    • La extensión del archivo es .cs, .go, .java, .js, .kt, .php, .py, .rb, .scala, .swift o .ts.

Limitaciones específicas del generador de expresiones regulares de patrones personalizados

  • Cobertura de patrones incompleta: es posible que las expresiones regulares generadas no coincidan con todos los tokens previstos. La calidad de los resultados depende de la especificidad y claridad de la descripción de entrada.
  • Resultados no válidos o inadecuados: el generador puede producir expresiones regulares que no sean válidas o inapropiadas para el caso de uso previsto.
  • Solo patrones estructurados: el generador de expresiones regulares solo es adecuado para crear patrones para detectar formatos estructurados y predecibles, no coincidencias de texto de forma libre.
  • Rendimiento centrado en el inglés: El modelo se entrenó principalmente con contenido en inglés. El rendimiento puede ser menor al proporcionar mensajes de entrada de lenguaje natural en idiomas distintos del inglés.
  • Resultados similares: algunas de las expresiones regulares devueltas pueden ser bastante similares entre sí, lo que reduce el número efectivo de patrones candidatos distintos.

Limitaciones específicas de la calidad del código de GitHub

  • ** Limitaciones compartidas con Copilot revisión de código**: el análisis basado en LLM de Code Quality usa el mismo modelo de lenguaje subyacente y motor de análisis que Copilot revisión de código. Comparte limitaciones similares, incluida la detección incompleta, falsos positivos, precisión de sugerencias de código y posibles sesgos. Para obtener más información, vea Tarjeta de aplicación: agentes de GitHub Copilot.
  • Corrección automática en la medida de lo posible: Copilot Autofix para las incidencias de calidad del código opera en la medida de lo posible y no se garantiza que genere una corrección para cada incidencia.
  • Revisión obligatoria: siempre debe revisar las sugerencias de Copilot Autofix y modificar los cambios según sea necesario antes de aceptarlos.

8. Evaluaciones

Las evaluaciones de rendimiento y seguridad evalúan si las aplicaciones de inteligencia artificial funcionan de forma confiable y segura mediante el examen de factores como la base, la relevancia y la coherencia, a la vez que se identifican los riesgos de generar contenido dañino. Las siguientes evaluaciones se llevaron a cabo con componentes de seguridad ya implementados, que también se describen en 9. Componentes y mitigaciones de seguridad.

Evaluaciones de rendimiento y calidad

Las funciones de IA de seguridad de GitHub se evalúan en todas sus superficies compatibles mediante una combinación de pruebas comparativas estándar del sector (por ejemplo, SWE-Bench) y conjuntos de evaluación desarrollados internamente. Las tareas comparativas se obtienen de repositorios públicos de código abierto y escenarios sintéticos; no se usan consultas de usuario reales ni código de cliente sin permiso. Cada evaluación incluye varias ejecuciones independientes para tener en cuenta el no determinismo en las salidas del modelo. Entre las métricas clave se incluyen la tasa de resolución (porcentaje de tareas completadas correctamente), la eficacia del token, la latencia y la confiabilidad de las llamadas a herramientas. Los modelos se vuelven a evaluar cuando se realizan y supervisan las actualizaciones continuamente en producción a través de tasas de error, latencia de respuesta y patrones de uso agregados.

Métodos de evaluación de rendimiento y calidad

Los nuevos modelos se someten a un proceso de evaluación preconfigurado antes de la implementación en Seguridad de código, Calidad del código y Protección de secretos. Los equipos integradores ejecutan conjuntos de pruebas comparativas específicos de su superficie, probando el modelo en tareas de codificación representativas, como correcciones de errores, generación de código y refactorización de varios archivos. Los resultados se revisan con respecto a las líneas base establecidas y los modelos de producción existentes. Los modelos deben cumplir o superar el rendimiento de línea base en métricas clave, como la tasa de resolución, la eficacia del token y la latencia, antes de avanzar a la siguiente fase.

Evaluaciones de riesgos y seguridad

La evaluación de posibles riesgos asociados con el contenido generado por IA es esencial para protegerse frente a los riesgos de contenido con distintos grados de gravedad. Esto incluye la evaluación de la predisposición de una aplicación de inteligencia artificial hacia la generación de contenido dañino o la prueba de vulnerabilidades a ataques de jailbreak. Para GitHub, realizamos evaluaciones de rendimiento, incluidas las adaptadas para fines de codificación de Microsoft Foundry:

  • Odio e injusticia
  • Sexual
  • Violencia
  • Auto-daño
  • Material protegido
  • Desbloqueo
  • Vulnerabilidad de código

Datos de evaluación para la calidad y la seguridad

Nuestros datos de evaluación están personalizados para evaluar el rendimiento de las aplicaciones de inteligencia artificial en áreas clave de seguridad y calidad, simulando escenarios y riesgos reales. Empezamos por identificar los aspectos de evaluación pertinentes basados en la investigación multidisciplinaria y la aportación de expertos. Estas preocupaciones se traducen en objetivos de evaluación específicos y guían la formulación de las métricas de evaluación. Para safety, creamos avisos adversarios para evitar respuestas no deseadas o de casos perimetrales, que luego se puntúan mediante anotadores asistidos por IA entrenados para evaluar la alineación con los estándares de GitHub. Para la calidad, elaboramos instrucciones basadas en rúbricas adaptadas a escenarios, incluida la evaluación de aplicaciones y agentes de generación aumentada con recuperación (RAG). Los conjuntos de datos se recopilan de diversos orígenes, incluidos los conjuntos de datos sintéticos y públicos, para simular escenarios de usuario reales. Con los conjuntos de datos seleccionados, ambas evaluaciones se someten a refinamiento iterativo y ajuste humano para mejorar la confiabilidad y eficacia de las métricas. Esta metodología constituye la base de evaluaciones repetibles y rigurosas que reflejan cómo los clientes usan las evaluaciones para crear una mejor inteligencia artificial.

Evaluaciones personalizadas

GitHub usa un entorno automatizado de pruebas para supervisar continuamente la calidad de las sugerencias de Copilot Autofix. La herramienta de ejecución de pruebas incluye más de 2300 alertas de un conjunto diverso de repositorios públicos en los que el código resaltado tiene cobertura de pruebas. Las sugerencias para estas alertas se evalúan para determinar cuánta edición necesitaría un desarrollador antes de incorporarlas a la base de código. Para muchas de las alertas de prueba, las sugerencias generadas por el LLM podrían integrarse tal cual para corregir la alerta y seguir superando correctamente todas las pruebas existentes de CI.

GitHub comprueba la eficacia de las sugerencias mediante la combinación de todos los cambios sugeridos, sin editar, antes de ejecutar el examen de código y las pruebas unitarias del repositorio en el código resultante:

  1. ¿Se ha corregido la alerta de análisis de código con la sugerencia?
  2. ¿Ha introducido la corrección alguna nueva alerta de examen de código?
  3. ¿Se ha corregido algún error de sintaxis que el examen de código puede detectar?
  4. ¿Ha cambiado la corrección la salida de cualquiera de las pruebas del repositorio?

Además, GitHub realiza comprobaciones puntuales de muchas sugerencias aceptadas y verifica que corrigen la alerta sin introducir nuevos problemas. Cuando se produce un error en una o varias de estas comprobaciones, la evaluación manual mostró que, en muchos casos, la corrección propuesta era casi correcta, pero necesitaba algunas modificaciones menores que un usuario podía identificar y realizar manualmente.

El sistema también se somete a pruebas de resistencia para detectar posibles daños (red teaming), y un sistema de filtrado en el modelo de lenguaje (LLM) ayuda a impedir que se muestren a los usuarios sugerencias potencialmente dañinas.

La detección de secretos mediante IA ha sido sometida a ejercicios de red teaming de IA responsable, y GitHub sigue supervisando la eficacia y la seguridad de la función con el tiempo.

Los resultados del generador de expresiones regulares de patrones personalizados se validan mediante el mecanismo de ejecución en seco, lo que permite a los usuarios probar patrones generados en su repositorio u organización antes de implementarlos como patrones personalizados. Este paso de validación integrado ayuda a garantizar que las expresiones regulares generadas funcionen según lo previsto antes de que se usen en producción.

El análisis impulsado por LLM de GitHub Code Quality comparte el marco de evaluación de la revisión de código de Copilot. Las sugerencias de corrección automática de Copilot para los hallazgos de calidad del código siguen la misma infraestructura de pruebas que Copilot Autofix para el análisis de código.

9. Componentes de seguridad y mitigaciones

  • ** Human-in-the-loop review**: Copilot Autofix presenta todas las sugerencias como cambios de código propuestos que requieren revisión y aceptación explícitas del desarrollador antes de aplicarse. Los desarrolladores deben evaluar cada sugerencia y comprobar que mantiene el comportamiento previsto del código base.
  • Filtrado de contenido: un sistema de filtrado en LLM detecta y evita que se muestren sugerencias potencialmente perjudiciales a los usuarios. El sistema se somete a pruebas de resistencia mediante ejercicios de red teaming para identificar posibles vulnerabilidades.
  • Pruebas de calidad internas: no se muestran sugerencias que producen errores en las pruebas internas a los usuarios. La generación de correcciones solo se muestra cuando el sistema tiene suficiente confianza en la calidad de la sugerencia.
  • Opt-in/opt-out controls: Copilot Autofix está permitido de forma predeterminada y habilitado para cada repositorio mediante CodeQL, pero los administradores pueden deshabilitar Copilot Autofijo en los niveles de empresa, organización y repositorio. Para obtener más información, vea Deshabilitación de la corrección automática de Copilot para alertas de seguridad de escaneo de código.
  • No entrenamiento en datos de clientes: los datos administrados por Copilot Autofix no se emplean con fines de aprendizaje de LLM. El uso de esta característica se rige por los términos y condiciones existentes asociados a GitHub Advanced Security.
  • Bucle de retroalimentación de falsos positivos: Cuando los usuarios cierran una alerta genérica de detección de secretos y marcan el motivo como "Falso positivo", GitHub usa la cantidad de falsos positivos para mejorar el modelo. GitHub no tiene acceso a los propios literales secretos.
  • Validación de ejecución seca para patrones generados: las expresiones regulares generadas del generador de expresiones regulares de patrones personalizados deben pasar por un paso de validación de ejecución seca antes de la implementación. Los usuarios importan explícitamente un resultado en el formulario de patrón personalizado y lo prueban en su repositorio u organización, lo que garantiza que los patrones funcionen según lo previsto antes de que se usen en producción.
  • Acción de usuario explícita necesaria: el generador de expresiones regulares no implementa automáticamente patrones. Los usuarios deben hacer clic en Usar resultado para copiar una expresión generada en el formulario de patrón personalizado y, a continuación, guardar y habilitar manualmente el patrón.
  • Mecanismo de comentarios sobre la calidad del código: Los usuarios pueden enviar comentarios sobre las sugerencias de calidad del código mediante los botones de pulgar arriba y pulgar abajo en los comentarios del bot github-code-quality, lo que ayuda a GitHub a mejorar la calidad de las sugerencias.
  • Disponibilidad limitada en versión preliminar: GitHub Code Quality está disponible como versión preliminar, lo que permite a las organizaciones evaluar la función antes de una adopción más generalizada.

10. Procedimientos recomendados para implementar y adoptar características de inteligencia artificial de seguridad de código de GitHub

La inteligencia artificial responsable es un compromiso compartido entre GitHub y sus clientes. Aunque GitHub crea aplicaciones de inteligencia artificial con seguridad, imparcialidad y transparencia en el núcleo, los clientes desempeñan un papel fundamental en la implementación y el uso de estas tecnologías de forma responsable dentro de sus propios contextos. Para admitir esta asociación, ofrecemos los siguientes procedimientos recomendados para los implementadores y los usuarios finales con el fin de ayudar a los clientes a implementar la inteligencia artificial responsable de forma eficaz.

  • Exercise precaución y evaluación de los resultados al usar características de inteligencia artificial de seguridad de GitHub para tomar decisiones consecuentes o en dominios confidenciales: Las decisiones consecuentes son aquellas que pueden tener un impacto legal o significativo en el acceso de una persona a la educación, el empleo, las plataformas financieras, los beneficios gubernamentales, la salud, la vivienda, el seguro, las plataformas legales o que podrían dar lugar a daños físicos, psicológicos o financieros. Los dominios confidenciales, como las plataformas financieras, la atención sanitaria y la vivienda, requieren atención especial debido al potencial de impacto desproporcionada en diferentes grupos de personas. Al usar la inteligencia artificial para tomar decisiones en estas áreas, asegúrese de que las partes interesadas afectadas puedan comprender cómo se toman las decisiones, apelar decisiones y actualizar los datos de entrada pertinentes.
  • Evaluar consideraciones legales y normativas: Los clientes deben evaluar posibles obligaciones legales y normativas específicas al usar cualquier plataforma y soluciones de inteligencia artificial, que puede que no sean adecuadas para su uso en todos los sectores o escenarios. Además, las plataformas o soluciones de inteligencia artificial no están diseñadas para y pueden no usarse de maneras prohibidas en términos de servicio aplicables y códigos de conducta pertinentes.
  • Revise siempre las sugerencias antes de aceptar: evalúe el cambio de código propuesto para asegurarse de que corrige correctamente la vulnerabilidad de seguridad sin cambiar el comportamiento previsto del código. Tener una buena cobertura de pruebas ayuda a comprobar que una corrección no cambia el comportamiento del código base.
  • Comprobar que se superan las pruebas de CI: después de confirmar una corrección sugerida o modificada, compruebe siempre que las pruebas de integración continua (CI) para el código base siguen superándose y que la alerta se muestra como resuelta antes de combinar la solicitud de incorporación de cambios.
  • Revise detenidamente los cambios de dependencia: si una corrección sugerida incluye cambios en las dependencias, compruebe que las dependencias agregadas o actualizadas son seguras, compatibles y mantienen el comportamiento previsto del código base. Use soluciones de administración de dependencias, como la API de revisión de dependencias y la acción, para evaluar los cambios. Para obtener más información, vea Revisión de dependencias.
  • Cierre las alertas de falsos positivos adecuadamente: dado que la detección de secretos de IA puede generar más falsos positivos que la detección de patrones de asociados, revise la precisión de cada alerta. Cuando compruebe que una alerta sea un falso positivo, cierre la alerta y marque el motivo como "Falso positivo" en la interfaz de usuario de GitHub. Estos comentarios ayudan a mejorar el modelo.
  • Validar patrones regex generados con una ejecución seca: al usar el generador de expresiones regulares de patrón personalizado, realice siempre una ejecución en seco en repositorios representativos antes de implementar un patrón generado en toda la organización.
  • Ser específico con descripciones: para mejorar la calidad de las expresiones regulares generadas, sea lo más específico posible con las descripciones del lenguaje natural e incluya diversas cadenas de ejemplo que representen los patrones que desea detectar.
  • Revise todos los patrones generados: revise cuidadosamente cada una de las expresiones regulares generadas, incluidas las descripciones de lenguaje sin formato generadas por IA, y considere la posibilidad de modificar los resultados para satisfacer más sus necesidades. En última instancia, la responsabilidad de los patrones personalizados que decidas usar recae sobre ti.
  • Revise los resultados de la calidad del código antes de aplicar correcciones: compruebe siempre la precisión y aplicabilidad de los resultados de calidad del código y las sugerencias de autofijo al código base antes de aceptarlas.
  • Enviar comentarios sobre las sugerencias de calidad del código: use los botones de pulgar hacia arriba y de pulgar hacia abajo en los comentarios del bot github-code-quality para ayudar a mejorar la herramienta y abordar cualquier problema o limitación.
  • Ejercicio de la supervisión humana cuando proceda: la supervisión humana es una protección importante al interactuar con las aplicaciones de inteligencia artificial. Aunque mejoramos continuamente nuestras aplicaciones de inteligencia artificial, la inteligencia artificial podría cometer errores. Los resultados generados pueden ser inexactos, incompletos, sesgados, desalineados o irrelevantes para los objetivos previstos. Esto podría ocurrir debido a varias razones, como la ambigüedad en las entradas o limitaciones de los modelos subyacentes. Por lo tanto, los usuarios deben revisar las respuestas generadas por GitHub características de inteligencia artificial de seguridad de código y comprobar que cumplen sus expectativas y requisitos.
  • Tenga en cuenta el riesgo de sobrecarga: La dependencia excesiva de la inteligencia artificial se produce cuando los usuarios aceptan salidas de IA incorrectas o incompletas, principalmente porque los errores en las salidas de IA pueden ser difíciles de detectar. Para el usuario final, el exceso de dependencia podría dar lugar a una disminución de la productividad, la pérdida de confianza, el abandono de aplicaciones, la pérdida financiera, daños psicológicos, daños físicos, entre otros. (por ejemplo, un médico acepta una salida de IA incorrecta).
  • Tenga cuidado al diseñar inteligencia artificial agente en dominios confidenciales: Los usuarios deben tener precaución al diseñar o implementar aplicaciones de inteligencia artificial agente en dominios confidenciales en los que las acciones del agente son irreversibles o muy consecuentes. También se deben tomar precauciones adicionales al crear inteligencia artificial agente autónoma, tal como se describe más adelante en autotitle.
  • Habilite las pruebas de CI en las solicitudes de incorporación de cambios: Asegúrese de que las pruebas de integración continua estén configuradas antes de habilitar Copilot Autofix, para que los requisitos funcionales se verifiquen después de que los desarrolladores apliquen las correcciones.
  • Utilice soluciones de gestión de dependencias: habilite la revisión de dependencias en las solicitudes de extracción para detectar cambios potencialmente arriesgados en las dependencias introducidos por las sugerencias de corrección automática.
  • Revisar las métricas del resumen de seguridad: Use el panel del resumen de seguridad de su organización para ver el número total de sugerencias de Copilot Autofix generadas en solicitudes de cambios abiertas y cerradas durante un período determinado. Para obtener más información, vea Visualización de información de seguridad.
  • Evaluar el volumen de falsos positivos para la detección de secretos: evalúe el volumen de falsos positivos y establezca procesos de evaluación de prioridades para la lista de alertas.
  • Supervisar el volumen y la calidad de las sugerencias de calidad del código: evalúe el volumen y la calidad de las sugerencias de calidad del código y ajuste la habilitación según corresponda para su organización.

11. Más información sobre las características de inteligencia artificial de seguridad de GitHub

Para obtener instrucciones adicionales sobre el uso responsable de las características de GitHub Security AI, se recomienda revisar la siguiente documentación:

Obtener más información sobre la IA responsable