Skip to main content

Comparação de modelos de IA usando tarefas diferentes

Explore exemplos reais de tarefas comuns do desenvolvedor, juntamente com exemplos de prompts, respostas e diretrizes para ajudar você a escolher o modelo de IA certo para seu fluxo de trabalho.

Visão geral

Cada modelo de IA com suporte no Copilot Chat tem vantagens diferentes. Para ajudar você a decidir qual modelo usar, este artigo fornece exemplos reais de tarefas comuns do desenvolvedor, juntamente com prompts de exemplo, respostas e diretrizes sobre por que um modelo específico é uma boa opção.

Esses exemplos mostram como os modelos variam em seu estilo de raciocínio, profundidade de resposta e capacidade de lidar com a entrada visual. Use-os para comparar a qualidade da saída e escolher o modelo certo para seu fluxo de trabalho específico.

Para obter uma lista completa de modelos com suporte e comparações de recursos lado a lado, confira Comparação de modelos de IA.

GPT-4o

O GPT-4o é uma boa opção para tarefas comuns de desenvolvimento que se beneficiam de velocidade, capacidade de resposta e raciocínio de uso geral. Se você está trabalhando em tarefas que exigem conhecimento amplo, iteração rápida ou compreensão básica de código, o GPT-4o provavelmente é o modelo a ser usado.

Cenário de exemplo

Considere um cenário em que você está escrevendo funções auxiliares para controle de acesso em um serviço Python. Você deseja adicionar docstrings para esclarecer a finalidade da função.

Abaixo está a função auxiliar que concede ao editor acesso a um 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
    )

Solicitação de exemplo

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

Exemplo de resposta

Observação

A resposta a seguir é um exemplo. Respostas do Copilot Chat são não determinísticas, portanto, você pode obter uma resposta diferente da mostrada aqui.

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 que o GPT-4o é uma boa opção

  • A função é curta e autocontida, tornando-a ideal para a geração rápida de docstring.
  • O GPT-4o pode reconhecer o padrão e fornecer uma explicação clara e concisa.
  • A tarefa não requer raciocínio profundo ou lógica complexa.

o4-mini

O o4-mini da OpenAI é um modelo rápido e econômico projetado para tarefas de codificação simples ou repetitivas. Ele fornece respostas confiáveis e concisas com latência muito baixa, tornando-o ideal para sugestões em tempo real e fluxos de trabalho de desenvolvimento leves. O o4-mini é otimizado para velocidade e capacidade de resposta, para que você possa iterar rapidamente em pequenas alterações de código ou obter comentários instantâneos sobre prompts simples.

Cenário de exemplo

Suponha que você esteja criando o script de um utilitário e precise filtrar uma lista de registros de usuário para incluir apenas usuários ativos, classificados pela data de inscrição. A tarefa é simples e não requer raciocínio profundo nem lógica de várias etapas.

Aqui está uma lista de amostra de usuários:

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"}
]

Solicitação de exemplo

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

Exemplo de resposta

Observação

A resposta a seguir é um exemplo. Respostas do Copilot Chat são não determinísticas, portanto, você pode obter uma resposta diferente da mostrada aqui.

# 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 que o o4-mini é uma boa opção?

  • A tarefa é simples e se beneficia de respostas rápidas e de baixa latência.
  • O o4-mini é otimizado para custo e velocidade, tornando-o ideal para edições rápidas, criação de protótipos e código de utilitário.
  • Use esse modelo quando quiser respostas confiáveis para perguntas de codificação simples sem esperar por profundidade desnecessária.

Gemini 2.0 Flash

O Gemini 2.0 Flash dá suporte à entrada de imagem para que os desenvolvedores possam colocar o contexto visual em tarefas como inspeção de interface do usuário, análise de diagrama ou depuração de layout. Isso torna o Gemini 2.0 Flash particularmente útil para cenários em que a entrada baseada em imagem aprimora a solução de problemas, como solicitar que o Copilot analise uma captura de tela da interface do usuário quanto a problemas de acessibilidade ou ajude a entender um bug visual em um layout.

Cenário de exemplo

Você está criando um sistema de carrinhos de compras e tem um diagrama de classe UML que descreve as relações entre Cart, Product, Usere Order. Em vez de escrever o sistema do zero, você deseja carregar a imagem do diagrama e solicitar que o Copilot gere as classes.

Captura de tela de um diagrama UML do carrinho de compras, mostrando os detalhes da classe para Cart, Product, User e Order.

Solicitação de exemplo

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

Exemplo de resposta

Observação

A resposta a seguir é um exemplo. Respostas do Copilot Chat são não determinísticas, portanto, você pode obter uma resposta diferente da mostrada aqui.

O Copilot gerará uma classe para cada uma das classes no diagrama, incluindo as relações entre elas. Aqui está o código de exemplo gerado para a classe 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 que o Gemini 2.0 Flash é uma boa opção?

  • Ele pode interpretar ativos visuais, como diagramas UML, wireframes ou fluxogramas, para gerar scaffolding de código ou sugerir arquitetura.
  • Pode ser útil para revisar capturas de tela de layouts de interface do usuário ou designs de formulário e gerar.

Claude Sonnet 3.5

O Claude Sonnet 3.5 é uma boa opção para o suporte de codificação diária, incluindo escrever documentação, responder perguntas específicas a um idioma ou gerar código clichê. Ele oferece respostas úteis e diretas sem complicar demais a tarefa. Se você estiver com restrições de custo, o Claude Sonnet 3.5 é recomendado, pois oferece um desempenho sólido em muitas das mesmas tarefas que o Claude Sonnet 3.7, mas com um uso de recurso significativamente menor.

Cenário de exemplo

Considere um cenário em que você está implementando testes de unidade e testes de integração para um aplicativo. Você deseja garantir que os testes sejam amplos e abranjam casos de borda que você tenha ou não pensado.

Para obter um passo a passo completo do cenário, confira Como escrever testes com o GitHub Copilot.

Por que o Claude Sonnet 3.5 é uma boa opção?

  • Ele tem um bom desempenho em tarefas de codificação diárias, como geração de teste, scaffolding clichê e lógica de validação.
  • A tarefa tende para o raciocínio de várias etapas, mas ainda permanece dentro da zona de confiança de um modelo menos avançado porque a lógica não é muito profunda.

Claude Sonnet 3.7

O Claude Sonnet 3.7 se destaca no ciclo de vida de desenvolvimento de software, do design inicial às correções de bugs, à manutenção e às otimizações. Ele é particularmente adequado para refatoração de vários arquivos ou planejamento arquitetônico, em que a compreensão do contexto entre componentes é importante.

Cenário de exemplo

Considere um cenário em que você está modernizando um aplicativo COBOL herdado reescrevendo-o em Node.js. O projeto envolve a compreensão do código-fonte desconhecido, a conversão de lógica entre linguagens, a criação iterativa da substituição e a verificação da correção por meio de um conjunto de testes.

Para obter um passo a passo completo do cenário, confira Modernizar o código herdado com o GitHub Copilot.

Por que o Claude Sonnet 3.7 é uma boa opção?

  • O Claude Sonnet 3.7 manipula bem o contexto complexo, tornando-o adequado para fluxos de trabalho que abrangem vários arquivos ou linguagens.
  • Sua arquitetura de raciocínio híbrido permite alternar entre respostas rápidas e solução de problemas passo a passo mais profunda.

Leitura adicional