Übersicht
Jedes in Copilot Chat unterstützte KI-Modell hat seine eigenen Stärken. Um die Entscheidung für ein bestimmtes Modell zu erleichtern, enthält dieser Artikel Beispiele aus der Praxis für gängige Entwickleraufgaben sowie Musterprompts, Antworten und Hinweise, warum ein bestimmtes Modell gut geeignet ist.
Anhand dieser Beispiele wird deutlich, dass sich die Modelle je nach Begründungsstil, Antworttiefe und der Fähigkeit, visuelle Eingaben zu verarbeiten, unterscheiden. Vergleiche damit die Ausgabequalität, und wähle das für deinen Workflow geeignete Modell aus.
Eine umfassende Liste mit unterstützten Modellen und eine Gegenüberstellung der Features findest du unter Auswählen des richtigen KI-Modells für deine Aufgabe.
GPT-4o
GPT-4o ist eine starke Standardoption für allgemeine Programmieraufgaben, die von Geschwindigkeit, Reaktionsfähigkeit und allgemeinem logischen Denken profitieren. Wenn deine Arbeit ein breites Wissen, schnelle Iterationen oder ein grundlegendes Codeverständnis erfordert, ist GPT-4o wahrscheinlich die beste Modellwahl.
Beispielszenario
Stelle dir vor, dass du Hilfsfunktionen für die Zugriffssteuerung in einem Python-Dienst schreiben möchtest. Du möchtest Docstrings hinzufügen, um den Zweck der Funktion zu beschreiben.
Nachfolgend findest du die Hilfsfunktion, mit der Editorzugriff auf ein Dokument gewährt wird:
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
)
Beispiel für Prompt
Add a docstring to the function that explains what it does.
Beispielantwort
Note
Die folgende Antwort ist ein Beispiel. Da die Copilot Chat-Antworten nicht deterministisch sind, erhältst du möglicherweise eine andere Antwort als die hier beschriebene.
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
)
Warum GPT-4o eine gute Wahl ist
- Die Funktion ist kurz und in sich geschlossen. Deshalb ist sie ideal für die schnelle Erstellung von Docstrings.
- GPT-4o kann das Muster erkennen und eine klare, prägnante Erklärung liefern.
- Für die Aufgabe ist keine tiefgehende Begründung oder komplexe Logik erforderlich.
o3-mini
OpenAI o3-mini ist ein schnelles, kostengünstiges Begründungsmodell, das Programmierleistung bei geringerer Latenz und Ressourcennutzung liefert. o3-mini übertrifft o1 bei den Programmierbenchmarks mit Antwortzeiten, die mit o1-mini vergleichbar sind. Copilot ist für die Verwendung des „mittleren“ Begründungsaufwands von OpenAI konfiguriert.
Beispielszenario
Stelle dir vor, dass du an einem Lizenzierungssystem für Software arbeitest. Du hast eine Liste von Benutzerdatensätzen, die jeweils als Wörterbuch mit Feldern wie name
, active
und signup_date
gespeichert sind. Du möchtest nur die aktiven Benutzer finden, sortiert nach ihrem Anmeldedatum, sodass die neuesten Benutzer zuletzt angezeigt werden.
Nachfolgend findest du eine Liste der Benutzer, mit denen du arbeitest:
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"}
]
Beispiel für Prompt
Filter the list of users to only include active users, and sort them by signup_date.
Beispielantwort
Note
Die folgende Antwort ist ein Beispiel. Da die Copilot Chat-Antworten nicht deterministisch sind, erhältst du möglicherweise eine andere Antwort als die hier beschriebene.
# 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)
Warum o3-mini eine gute Wahl ist
- Die Aufgabe umfasst einfaches Filtern und Sortieren, das keine tiefgehenden Begründungen erfordert.
- Dank der kurzen Reaktionszeiten ist es ideal für schnelle Iterationen während der Entwicklung.
Gemini 2.0 Flash
Gemini 2.0 Flash unterstützt Bildeingaben, sodass visueller Kontext bei der Entwicklung in Aufgaben wie Benutzeroberflächeninspektion, Diagrammanalyse oder Layoutdebugging integriert werden kann. Dadurch ist Gemini 2.0 Flash besonders nützlich für Szenarios, in denen bildbasierte Eingaben die Problemlösung erleichtern. So kann Copilot z. B. gebeten werden, den Screenshot einer Benutzeroberfläche auf Probleme hinsichtlich der Barrierefreiheit zu analysieren oder bei der Analyse eines visuellen Fehlers zu helfen.
Beispielszenario
Du entwirfst ein Einkaufswagensystem und hast ein UML-Klassendiagramm, das die Beziehungen zwischen Cart
, Product
, User
und Order
beschreibt. Anstatt das System von Grund auf neu zu schreiben, möchtest du das Bild des Diagramms hochladen und Copilot bitten, die Klassen zu generieren.
Beispiel für Prompt
Use this UML diagram to generate the classes for a shopping cart system.
Beispielantwort
Note
Die folgende Antwort ist ein Beispiel. Da die Copilot Chat-Antworten nicht deterministisch sind, erhältst du möglicherweise eine andere Antwort als die hier beschriebene.
% data variables.product.prodname_copilot_short %} generiert für jede Klasse im Diagramm eine Klasse sowie die Beziehungen zwischen den Klassen. Im Folgenden findest du den für die Cart
-Klasse generierten Beispielcode:
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)
Warum Gemini 2.0 Flash eine gute Wahl ist
- Das Modell kann visuelle Elemente wie UML-Diagramme, Wireframes oder Flussdiagramme interpretieren und so ein Codegerüst erstellen oder eine Architektur vorschlagen.
- Das Modell eignet sich für die Bewertung von Screenshots von UI-Layouts oder Formularentwürfen und deren Erstellung.
Claude 3.5 Sonnet
Claude 3.5 Sonnet ist eine gute Unterstützung für tägliche Programmieraufgaben wie dem Schreiben von Dokumentationen, dem Beantworten sprachspezifischer Fragen oder dem Generieren von Codebausteinen. Es bietet hilfreiche, direkte Antworten, ohne eine Aufgabe übermäßig zu verkomplizieren. Bei Kosteneinschränkungen arbeiten, wird Claude 3.5 Sonnet empfohlen, weil das Modell bei vielen der gleichen Tasks eine genauso solide Leistung wie Claude 3.7 Sonnet bietet, jedoch mit deutlich geringerer Ressourcennutzung.
Beispielszenario
Stelle dir vor, dass du sowohl Komponententests als auch Integrationstests für eine Anwendung implementierst. Du möchtest sicherstellen, dass die Tests umfassend sind und alle Randfälle abdecken, an die du vielleicht noch nicht gedacht hast.
Eine ausführliche Beschreibung des Szenarios findest du unter Schreiben von Tests mit GitHub Copilot.
Warum Claude 3.5 Sonnet eine gute Wahl ist
- Das Modell eignet sich gut für alltägliche Programmieraufgaben wie das Generieren von Tests, eines Gerüsts für Codebausteine und Validierungslogik.
- Die Aufgabe lehnt sich an mehrstufige Begründungen an, bleibt aber immer noch innerhalb der Konfidenzzone eines weniger anspruchsvollen Modells, da die Logik nicht zu tiefgehend ist.
Claude 3.7 Sonnet
Claude 3.7 Sonnet eignet sich hervorragend für den gesamten Lebenszyklus der Softwareentwicklung – von ersten Entwürfen über Bugfixes und Wartung bis hin zu Optimierungen. Das Modell eignet sich besonders gut für das Refactoring von mehreren Dateien oder die Architekturplanung, bei diesen Aufgaben ist ein komponentenübergreifendes Kontextverständnis unerlässlich.
Beispielszenario
Stelle dir vor, dass du eine Legacy-Anwendung in COBOL modernisieren möchtest, indem du sie in Node.js neu schreibst. Im Rahmen des Projekts musst du den unbekannten Quellcode verstehen, die Logik in verschiedene Sprachen konvertieren, den Ersatz iterativ erstellen und die Korrektheit durch eine Testreihe überprüfen.
Eine ausführliche Beschreibung des Szenarios findest du unter Modernisieren von Legacycode mit GitHub Copilot.
Warum Claude 3.7 Sonnet eine gute Wahl ist
- Claude 3.7 Sonnet kann gut mit komplexen Zusammenhängen umgehen und eignet sich daher für Workflows, die mehrere Dateien oder Sprachen umfassen.
- Dank der hybriden Begründungsarchitektur kann das Modell zwischen schnellen Antworten und tiefergehender, schrittweiser Problemlösung wechseln.