1
0
mirror of synced 2025-12-20 10:28:40 -05:00
Files
docs/content/copilot/tutorials/comparing-ai-models-using-different-tasks.md
Jules c0e0886c65 Removes o3-mini model references (#56411)
Co-authored-by: Jules Porter <jules-p@users.noreply.github.com>
Co-authored-by: Kevin Heis <heiskr@users.noreply.github.com>
Co-authored-by: Sunbrye Ly <56200261+sunbrye@users.noreply.github.com>
Co-authored-by: sunbrye <sunbrye@github.com>
Co-authored-by: Sophie <29382425+sophietheking@users.noreply.github.com>
2025-07-21 18:44:20 +00:00

8.4 KiB
Raw Blame History

title, shortTitle, intro, versions, topics, redirect_from
title shortTitle intro versions topics redirect_from
Comparing AI models using different tasks Examples for AI model comparison Explore real-world examples of common developer tasks along with sample prompts, responses, and guidance to help you choose the right AI model for your workflow.
feature
copilot
Copilot
/copilot/using-github-copilot/ai-models/examples-for-ai-model-comparison
/copilot/using-github-copilot/ai-models/comparing-ai-models-using-different-tasks

Overview

Each AI model supported in {% data variables.copilot.copilot_chat_short %} has different strengths. To help you decide which model to use, this article provides real-world examples of common developer tasks along with sample prompts, responses, and guidance on why a particular model is a good fit.

These examples show how models vary in their reasoning style, response depth, and ability to handle visual input. Use them to compare output quality and choose the right model for your specific workflow.

For a full list of supported models and side-by-side feature comparisons, see AUTOTITLE.

{% data variables.copilot.copilot_gpt_4o %}

{% data reusables.copilot.model-use-cases.gpt-4o %}

Example scenario

Consider a scenario where you are writing helper functions for access control in a Python service. You want to add docstrings to clarify the purpose of the function.

Below is the helper function that grants editor access to a document:

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
    )

Example prompt

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

Example response

{% data reusables.copilot.example-prompts.response-is-an-example %}

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
    )

Why {% data variables.copilot.copilot_gpt_4o %} is a good fit

  • The function is short and self-contained, making it ideal for quick docstring generation.
  • {% data variables.copilot.copilot_gpt_4o %} can recognize the pattern and provide a clear, concise explanation.
  • The task doesn't require deep reasoning or complex logic.

{% data variables.copilot.copilot_o4_mini %}

OpenAI {% data variables.copilot.copilot_o4_mini %} is a fast, cost-efficient model designed for simple or repetitive coding tasks. It delivers reliable, concise answers with very low latency, making it ideal for real-time suggestions and lightweight development workflows. {% data variables.copilot.copilot_o4_mini %} is optimized for speed and responsiveness, so you can quickly iterate on small code changes or get instant feedback on straightforward prompts.

Example scenario

Suppose you are building a utility script and need to filter a list of user records to include only active users, sorted by their signup date. The task is simple and doesnt require deep reasoning or multi-step logic.

Heres a sample list of users:

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

Example prompt

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

Example response

{% data reusables.copilot.example-prompts.response-is-an-example %}

# 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)

Why {% data variables.copilot.copilot_o4_mini %} is a good fit

  • The task is straightforward and benefits from fast, low-latency responses.
  • {% data variables.copilot.copilot_o4_mini %} is optimized for cost and speed, making it ideal for quick edits, prototyping, and utility code.
  • Use this model when you want reliable answers for simple coding questions without waiting for unnecessary depth.

{% data variables.copilot.copilot_gemini_flash %}

{% data reusables.copilot.model-use-cases.gemini-20-flash %}

Example scenario

Youre designing a shopping cart system and have a UML class diagram that outlines the relationships between Cart, Product, User, and Order. Instead of writing out the system from scratch, you want to upload the image of the diagram and ask {% data variables.product.prodname_copilot_short %} to generate the classes.

Screenshot of a shopping cart UML diagram, showing the class details for Cart, Product, User, and Order.

Example prompt

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

Example response

{% data reusables.copilot.example-prompts.response-is-an-example %}

{% data variables.product.prodname_copilot_short %} will generate a class for each of the classes in the diagram, including the relationships between them. Heres the example code generated for the Cart class:

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)

Why {% data variables.copilot.copilot_gemini_flash %} is a good fit

  • It can interpret visual assets, such as UML diagrams, wireframes, or flowcharts, to generate code scaffolding or suggest architecture.
  • It can be useful for reviewing screenshots of UI layouts or form designs and generating.

{% data variables.copilot.copilot_claude_sonnet_35 %}

{% data reusables.copilot.model-use-cases.claude-35-sonnet %}

Example scenario

Consider a scenario where you are implementing both unit tests and integration tests for an application. You want to ensure that the tests are comprehensive and cover any edge cases that you may and may not have thought of.

For a complete walkthrough of the scenario, see AUTOTITLE.

Why {% data variables.copilot.copilot_claude_sonnet_35 %} is a good fit

  • It performs well on everyday coding tasks like test generation, boilerplate scaffolding, and validation logic.
  • The task leans into multi-step reasoning, but still stays within the confidence zone of a less advanced model because the logic isnt too deep.

{% data variables.copilot.copilot_claude_sonnet_37 %}

{% data reusables.copilot.model-use-cases.claude-37-sonnet %}

Example scenario

Consider a scenario where you're modernizing a legacy COBOL application by rewriting it in Node.js. The project involves understanding unfamiliar source code, converting logic across languages, iteratively building the replacement, and verifying correctness through a test suite.

For a complete walkthrough of the scenario, see AUTOTITLE.

Why {% data variables.copilot.copilot_claude_sonnet_37 %} is a good fit

  • {% data variables.copilot.copilot_claude_sonnet_37 %} handles complex context well, making it suited for workflows that span multiple files or languages.
  • Its hybrid reasoning architecture allows it to switch between quick answers and deeper, step-by-step problem-solving.

Further reading