Skip to main content

Сравнение моделей ИИ с помощью различных задач

Изучите реальные примеры распространенных задач разработчика вместе с примерами запросов, ответов и рекомендаций, которые помогут вам выбрать подходящую модель ИИ для рабочего процесса.

Обзор

Каждая модель ИИ, поддерживаемая в Copilot Chat, имеет разные преимущества. Чтобы помочь вам решить, какую модель следует использовать, в этой статье приведены реальные примеры распространенных задач разработчика, а также примеры запросов, ответов и рекомендации по тому, почему конкретная модель является хорошей.

В этих примерах показано, как модели зависят от стиля причины, глубины отклика и возможности обработки визуальных входных данных. Используйте их для сравнения качества выходных данных и выбора подходящей модели для конкретного рабочего процесса.

Полный список поддерживаемых моделей и параллельных сравнений функций см. в разделе Выбор подходящей модели ИИ для задачи.

GPT-4o

GPT-4o — это надежный выбор по умолчанию для распространенных задач разработки, которые пользуются скоростью, скоростью реагирования и обоснованием общего назначения. Если вы работаете над задачами, которые требуют широких знаний, быстрой итерации или базового понимания кода, GPT-4o, скорее всего, лучшей моделью для использования.

Пример сценария

Рассмотрим сценарий, в котором вы пишете вспомогательные функции для управления доступом в службе Python. Вы хотите добавить документы, чтобы уточнить назначение функции.

Ниже приведена вспомогающая функция, которая предоставляет редактору доступ к документу:

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
    )

Пример запроса

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

Пример отклика

Note

Следующий ответ является примером. Ответы Copilot Chat являются недетерминированными, поэтому вы можете получить другой ответ, показанный здесь.

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
    )

Почему GPT-4o хорошо подходит

  • Функция является короткой и автономной, что делает ее идеальной для быстрого создания документации.
  • GPT-4o может распознать шаблон и предоставить четкое краткое объяснение.
  • Задача не требует глубокой логики или логики.

o3-mini

OpenAI o3-mini — это быстрая и эффективная модель разработки, предназначенная для обеспечения производительности кода при сохранении низкой задержки и использования ресурсов. o3-mini outperforms o1 для тестирования кода с временем отклика, которые сравнимы с o1-mini. Copilot настроен для использования "средних" причин OpenAI.

Пример сценария

Рассмотрим сценарий, в котором вы работаете над системой лицензирования программного обеспечения. У вас есть список записей пользователей, каждый из которых хранится в виде словаря с такими полями, как name, activeи signup_date. Вы хотите найти только активных пользователей, отсортированных по дате регистрации, чтобы последние пользователи отображались.

Ниже приведен список пользователей, с которыми вы работаете:

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

Пример запроса

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

Пример отклика

Note

Следующий ответ является примером. Ответы Copilot Chat являются недетерминированными, поэтому вы можете получить другой ответ, показанный здесь.

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

Почему o3-mini является хорошим подходом

  • Задача включает простую фильтрацию и сортировку, которая не требует глубокой рассудки.
  • Его быстрые ответы делают его идеальным для быстрой итерации во время разработки.

Gemini 2.0 Flash

Gemini 2.0 Flash поддерживает ввод изображений, чтобы разработчики могли выполнять задачи визуального контекста, такие как проверка пользовательского интерфейса, анализ схемы или отладка макета. Это делает Gemini 2.0 Flash особенно полезным для сценариев, когда входные данные на основе изображений повышают решение проблем, например запрос Copilot для анализа снимка экрана пользовательского интерфейса для проблем со специальными возможностями или помогают понять визуальную ошибку в макете.

Пример сценария

Вы разрабатываете систему корзины для покупок и имеете схему классов UML, которая описывает связи между Cart, Product``Userи Order. Вместо написания системы с нуля вы хотите отправить изображение схемы и попросить Copilot создать классы.

Снимок экрана: схема UML для корзины покупок, показывающая сведения о классе для корзины, продукта, пользователя и заказа.

Пример запроса

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

Пример отклика

Note

Следующий ответ является примером. Ответы Copilot Chat являются недетерминированными, поэтому вы можете получить другой ответ, показанный здесь.

Copilot создаст класс для каждого класса на схеме, включая связи между ними. Ниже приведен пример кода, созданного 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)

Почему Gemini 2.0 Flash является хорошим подходом

  • Он может интерпретировать визуальные ресурсы, такие как схемы UML, проводные кадры или блок-схемы, чтобы создать шаблон кода или предложить архитектуру.
  • Это может быть полезно для просмотра снимков экрана макетов пользовательского интерфейса или макетов форм и создания.

Клод 3.5 Соннет

Клод 3.5 Соннет — это хороший выбор для повседневной поддержки написания кода, включая написание документации, ответы на вопросы, относящиеся к языку, или создание стандартного кода. Он предлагает полезные, прямые ответы без чрезмерного усложнения задачи. Если вы работаете в пределах ограничений затрат, рекомендуется использовать Клод 3.5 Соннет, так как он обеспечивает надежную производительность для многих из этих же задач, что и Клод 3.7 Соннет, но при значительно более низком использовании ресурсов.

Пример сценария

Рассмотрим сценарий, в котором вы реализуете модульные тесты и тесты интеграции для приложения. Вы хотите убедиться, что тесты являются исчерпывающими и охватывают все пограничные случаи, о которых вы можете и не думали.

Полное пошаговое руководство по сценарию см. в разделе Написание тестов с помощью GitHub Copilot.

Почему Клод 3.5 Соннет является хорошим подходом

  • Он хорошо работает на повседневных задачах программирования, таких как создание тестов, шаблонный шаблон и логика проверки.
  • Задача опирается на многофакторную причину, но по-прежнему остается в зоне доверия менее расширенной модели, потому что логика не слишком глубока.

Клод 3.7 Соннет

Клод 3.7 Соннет в течение жизненного цикла разработки программного обеспечения, от первоначального проектирования до исправлений ошибок, обслуживания до оптимизации. Он особенно хорошо подходит для рефакторинга нескольких файлов или планирования архитектуры, где важно понимание контекста между компонентами.

Пример сценария

Рассмотрим сценарий, в котором вы модернизируете устаревшее приложение COBOL, перезаписав его в Node.js. Проект включает понимание незнакомого исходного кода, преобразование логики на разных языках, итеративное построение замены и проверку правильности с помощью набора тестов.

Полное пошаговое руководство по сценарию см. в разделе Модернизация устаревшего кода с помощью GitHub Copilot.

Почему Клод 3.7 Соннет является хорошим подходом

  • Клод 3.7 Соннет хорошо обрабатывает сложный контекст, что подходит для рабочих процессов, охватывающих несколько файлов или языков.
  • Его гибридная архитектура рассуждений позволяет переключаться между быстрыми ответами и более глубокими, пошаговые решения проблем.

Дополнительные материалы