Skip to main content

Comparación de modelos de IA mediante diferentes tareas

Explora ejemplos reales de tareas comunes para desarrolladores junto con mensajes de ejemplo, respuestas e instrucciones para ayudarte a elegir el modelo de inteligencia artificial adecuado para tu flujo de trabajo.

Información general

Cada modelo de IA de admitido en Copilot Chat tiene diferentes ventajas. Para ayudarte a decidir qué modelo usar, en este artículo se proporcionan ejemplos reales de tareas comunes para desarrolladores junto con mensajes de ejemplo, respuestas e instrucciones sobre por qué un modelo determinado es una buena opción.

En estos ejemplos se muestra cómo los modelos varían en su estilo de razonamiento, profundidad de respuesta y capacidad para controlar la entrada visual. Úsalos para comparar la calidad de salida y elegir el modelo adecuado para tu flujo de trabajo específico.

Para obtener una lista completa de los modelos admitidos y comparaciones de características en paralelo, consulta Elección del modelo de IA adecuado para la tarea.

GPT-4o

GPT-4o es una opción predeterminada sólida para las tareas de desarrollo comunes que se benefician de la velocidad, la capacidad de respuesta y el razonamiento de uso general. Si trabajas en tareas que necesitan un amplio conocimiento, iteración rápida o comprensión básica del código, es probable que GPT-4o sea el mejor modelo.

Escenario de ejemplo

Imagina un escenario en el que escribes funciones auxiliares para el control de acceso en un servicio de Python. Quieres agregar docstrings para aclarar el propósito de la función.

A continuación se muestra la función auxiliar que concede al editor acceso a un documento:

def grant_editor_access(user_id, doc_id):
    access = AccessManager()
    access.assign_role(
        resource_type="document",
        resource_id=doc_id,
        role="editor",
        user_id=user_id
    )

Ejemplos de indicaciones

Add a docstring to the function that explains what it does.

Respuesta de ejemplo

Note

La respuesta siguiente es un ejemplo. Las respuestas de Copilot Chat no son deterministas, por lo que puedes obtener una respuesta diferente a la aquí mostrada.

def grant_editor_access(user_id, doc_id):
    """
    Grants editor access to a specific document for a given user.

    This function uses the AccessManager to assign the "editor" role
    to the specified user for the provided document ID.

    Args:
        user_id (str): The ID of the user to grant access to.
        doc_id (str): The ID of the document to which access is being granted.
    """
    access = AccessManager()
    access.assign_role(
        resource_type="document",
        resource_id=doc_id,
        role="editor",
        user_id=user_id
    )

¿Por qué GPT-4o es una buena opción?

  • La función es corta e independiente, lo que lo convierte en ideal para la generación rápida de docstring.
  • GPT-4o puede reconocer el patrón y proporcionar una explicación clara y concisa.
  • La tarea no necesita un razonamiento profundo ni una lógica compleja.

o3-mini

OpenAI o3-mini es un modelo de razonamiento rápido y rentable diseñado para ofrecer un rendimiento de codificación al tiempo que mantiene una menor latencia y uso de recursos. o3-mini supera o1 en pruebas comparativas de codificación con tiempos de respuesta que son comparables a los de o1-mini. Copilot está configurado para usar el esfuerzo de razonamiento "medio" de OpenAI.

Escenario de ejemplo

Imagine un escenario en el que trabajas en un sistema de licencias de software. Tienes una lista de registros de usuario, cada uno almacenado como un diccionario con campos como name, active y signup_date. Solo quieres buscar los usuarios activos, ordenados por su fecha de registro, de modo que los usuarios más recientes aparezcan en último lugar.

A continuación se muestra la lista de usuarios con los que trabajas:

users = [
    {"name": "Alice", "active": True, "signup_date": "2023-12-10"},
    {"name": "Bob", "active": False, "signup_date": "2023-11-05"},
    {"name": "Charlie", "active": True, "signup_date": "2024-01-15"}
]

Ejemplos de indicaciones

Filter the list of users to only include active users, and sort them by signup_date.

Respuesta de ejemplo

Note

La respuesta siguiente es un ejemplo. Las respuestas de Copilot Chat no son deterministas, por lo que puedes obtener una respuesta diferente a la aquí mostrada.

# Filter to only include active users
active_users = [user for user in users if user["active"]]

# Sort active users by signup_date
active_users_sorted = sorted(active_users, key=lambda user: user["signup_date"])

print(active_users_sorted)

¿Por qué o3-mini es una buena opción?

  • La tarea implica operaciones sencillas de filtrado y ordenación, para lo que no se necesita un razonamiento profundo.
  • Sus respuestas rápidas hacen que sea ideal para la iteración rápida durante el desarrollo.

Gemini 2.0 Flash

Gemini 2.0 Flash admite la entrada de imágenes para que los desarrolladores puedan incluir contexto visual en tareas como las inspección de la interfaz de usuario, análisis de diagramas o depuración de diseño. Esto hace que Gemini 2.0 Flash sea especialmente útil para escenarios en los que la entrada basada en imágenes mejora la resolución de problemas, como pedirle a Copilot que analice una captura de pantalla de la interfaz de usuario en busca de problemas de accesibilidad o para ayudar a comprender un error visual en un diseño.

Escenario de ejemplo

Vas a diseñar un sistema de carro de la compra y tienes un diagrama de clases UML en el que se describen las relaciones entre Cart, Product, User y Order. En lugar de escribir el sistema desde cero, quieres cargar la imagen del diagrama y pedirle a Copilot que genere las clases.

Recorte de pantalla de un diagrama UML del carro de la compra, en el que se muestran los detalles de las clases Cart, Product, User y Order.

Ejemplos de indicaciones

Use this UML diagram to generate the classes for a shopping cart system.

Respuesta de ejemplo

Note

La respuesta siguiente es un ejemplo. Las respuestas de Copilot Chat no son deterministas, por lo que puedes obtener una respuesta diferente a la aquí mostrada.

Copilot generará una clase para cada una de las clases del diagrama, incluidas las relaciones entre ellas. Este es el código de ejemplo generado para la clase Cart:

from cart_item import CartItem
from order import Order

class Cart:
    def __init__(self, cart_id, user_id):
        self.cart_id = cart_id
        self.user_id = user_id
        self.items = []

    def add_item(self, item):
        self.items.append(item)

    def remove_item(self, item):
        self.items = [i for i in self.items if i != item]

    def calculate_total(self):
        return sum(item.quantity * item.product.price for item in self.items)

    def place_order(self):
        # Implementation for placing an order
        return Order("", None, 0)

¿Por qué es Gemini 2.0 Flash es una buena opción?

  • Puede interpretar recursos visuales, como diagramas UML, esquemas de página o diagramas de flujo, para generar scaffolding de código o sugerir arquitectura.
  • Puede ser útil para revisar recortes de pantalla de diseños de interfaz de usuario o diseños de formulario y generar.

Claude 3.5 Sonnet

Claude 3.5 Sonnet es una buena opción para la compatibilidad con la programación diaria, incluida la escritura de documentación, la respuesta a preguntas específicas del lenguaje o la generación de código reutilizable. Ofrece respuestas útiles y directas sin complicar la tarea en exceso. Si trabajas con restricciones de costos, se recomienda Claude 3.5 Sonnet ya que ofrece un rendimiento sólido en muchas de las mismas tareas que Claude 3.7 Sonnet, pero con un uso de los recursos significativamente menor.

Escenario de ejemplo

Imagina un escenario en el que vas a implementar pruebas unitarias y de integración para una aplicación. Quieres asegurarte de que las pruebas sean completas y cubren los casos perimetrales en los que puedas haber pensado y no.

Para obtener un tutorial completo del escenario, consulta Escritura de pruebas con GitHub Copilot.

¿Por qué Claude 3.5 Sonnet es una buena opción?

  • Funciona bien en tareas de programación diarias, como las de generación de pruebas, scaffolding reutilizable y lógica de validación.
  • La tarea se inclina hacia el razonamiento de varios pasos, pero sigue dentro de la zona de confianza de un modelo menos avanzado porque la lógica no es demasiado profunda.

Claude 3.7 Sonnet

Claude 3.7 Sonnet destaca durante todo el ciclo de vida de desarrollo de software, desde el diseño inicial hasta las correcciones de errores, pasando por el mantenimiento y las optimizaciones. Es especialmente adecuado para la refactorización de varios archivos o la planificación arquitectónica, donde es importante comprender el contexto entre componentes.

Escenario de ejemplo

Imagina un escenario en el que vas a modernizar una aplicación COBOL heredada y reescribirla en Node.js. El proyecto implica comprender código fuente desconocido, convertir lógica entre lenguajes, compilar de forma iterativa el reemplazo y comprobar la corrección mediante un conjunto de pruebas.

Para obtener un tutorial completo del escenario, consulta Modernización del código heredado con GitHub Copilot.

¿Por qué Claude 3.7 Sonnet es una buena opción?

  • Claude 3.7 Sonnet controla bien los contextos complejos, lo que hace que sea adecuado para flujos de trabajo que abarcan varios archivos o lenguajes.
  • Su arquitectura de razonamiento híbrida le permite cambiar entre respuestas rápidas y una solución de problemas paso a paso más profunda.

Información adicional