Skip to main content

使用不同任务比较 AI 模型

探索常见开发人员任务的真实示例以及示例提示、响应和指导,以帮助你为工作流选择合适的 AI 模型。

概述

Copilot Chat 中支持的每个 AI 模型都有不同的优势。 为帮助确定要使用的模型,本文提供了常见开发人员任务的真实示例,以及示例提示、响应和指导,说明特定模型为何适合。

这些示例演示模型在推理样式、响应深度和处理视觉输入的能力方面的差异。 使用它们比较输出质量,并为特定工作流选择合适的模型。

有关支持的模型和并排功能比较的完整列表,请参阅“为任务选择合适的 AI 模型”。

GPT-4o

GPT-4o 是常见开发任务(受益于速度、响应能力和常规用途推理)的强大默认选项。 如果你正在处理需要广泛知识、快速迭代或基本代码理解的任务,GPT-4o 可能是最适合的模型。

示例方案

假设你在 Python 服务中编写用于访问控制的帮助程序函数。 你想要添加 docstring 来阐明函数的用途。

下面是为编辑器授予文档访问权限的帮助程序函数:

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 为何适合

  • 该函数简短且独立,因此非常适合快速生成 docstring。
  • GPT-4o 可以识别模式并提供清晰、简洁的说明。
  • 该任务不需要深层推理或复杂逻辑。

o3-mini

OpenAI o3-mini 是一种快速且具有成本效益的推理模型,旨在提供编码性能,同时保持较低的延迟和资源使用率。 o3-mini 在编码基准的表现上优于 o1,响应时间与 o1-mini 相当。 Copilot 配置为使用 OpenAI 的“中等”推理能力。

示例方案

假设你正在使用软件许可系统。 你有一个用户记录列表,每个记录都存储为包含字段(例如 nameactivesignup_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 支持图像输入,开发人员可以在执行 UI 检查、图表分析或布局调试等任务时引入视觉对象上下文。 这使得 Gemini 2.0 Flash 特别适用于需要图像增强问题解决的场景,例如请求 Copilot 分析 UI 截图中的辅助功能问题,或帮助理解布局中的视觉对象 Bug。

示例方案

你正在设计购物车系统,并且有一个 UML 类关系图,它概述了 CartProductUserOrder 之间的关系。 你希望上传关系图的图像,并要求 Copilot 生成类,而不是从头开始编写系统。

购物车 UML 关系图的屏幕截图,其中显示了 Cart、Product、User 和 Order 的类详细信息。

示例提示

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 关系图、线框或流程图,以生成代码基架或建议体系结构。
  • 它可用于查看 UI 布局或窗体设计和生成的屏幕截图。

Claude 3.5 Sonnet

Claude 3.5 Sonnet 是获得日常编码支持的不错的选择,包括编写文档、回答特定于语言的问题或生成样板代码。 它提供有用的直接答案,不会过度复杂化任务。 如果你的工作存在成本约束,则建议使用 Claude 3.5 Sonnet,因为它为与 Claude 3.7 Sonnet 相同的许多任务提供可靠的性能,但资源使用显著降低。

示例方案

假设你要为应用程序实现单元测试和集成测试。 你希望确保测试全面并涵盖你可能想到或没想到的任何边缘情况。

有关该场景的完整演练,请参阅“使用 GitHub Copilot 编写测试”。

Claude 3.5 Sonnet 为何适合

  • 它擅长执行日常编码任务,例如测试生成、样板基架和验证逻辑。
  • 该任务倾向于进行多步骤推理,但由于逻辑并不深入,因此仍位于高级程度一般的模型的置信度区域内。

Claude 3.7 Sonnet

Claude 3.7 Sonnet 在软件开发生命周期的各个阶段(从初始设计、错误修复、维护到性能优化)均表现出色。 它特别适合用于多文件重构或架构规划等需要理解跨组件上下文的场景。

示例方案

假设你在 Node.js 中通过重写旧 COBOL 应用程序来将其现代化。 该项目涉及理解不熟悉的源代码、跨语言转换逻辑、迭代生成替换项以及通过测试套件验证正确性。

有关该场景的完整演练,请参阅“使用 GitHub Copilot 实现旧代码现代化”。

Claude 3.7 Sonnet 为何适合

  • Claude 3.7 Sonnet 擅长处理复杂的上下文,使其适用于跨多个文件或语言的工作流。
  • 它采用混合推理体系结构,可在快速答案与更深入的分步解决问题之间切换。

其他阅读材料