개요
Copilot Chat에서 지원되는 각 AI 모델에는 서로 다른 장점이 있습니다. 사용할 모델을 결정하는 데 도움이 되도록 이 문서에서는 특정 모델이 적합한 이유에 대한 샘플 프롬프트, 응답, 지침과 함께 일반적인 개발자 작업의 실제 예제를 제공합니다.
이러한 예제에서는 모델이 추론 스타일, 응답 깊이, 시각적 입력을 처리하는 능력에 따라 어떻게 달라지는지 보여 줍니다. 이를 사용하여 출력 품질을 비교하고 특정 워크플로에 적합한 모델을 선택할 수 있습니다.
지원되는 모델의 전체 목록과 나란히 표시된 기능 비교는 작업에 적합한 AI 모델 선택을(를) 참조하세요.
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는 코딩 벤치마크에서 o1-mini와 비슷한 응답 시간으로 o1을 능가합니다. 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는 개발자가 UI 검사, 다이어그램 분석, 레이아웃 디버깅과 같은 작업에 시각적 컨텍스트를 가져올 수 있도록 이미지 입력을 지원합니다. 이를 통해 Gemini 2.0 Flash는 Copilot에게 접근성 문제에 대한 UI 스크린샷을 분석하거나 레이아웃의 시각적 버그를 이해하도록 요청하는 등 이미지 기반 입력이 문제 해결을 향상시키는 시나리오에 특히 유용합니다.
예제 시나리오
쇼핑 장바구니 시스템을 디자인하고 있으며 Cart
, Product
, User
, Order
간의 관계를 간략하게 설명하는 UML 클래스 다이어그램이 있습니다. 시스템을 처음부터 작성하는 대신, 다이어그램 이미지를 업로드하고 Copilot에게 클래스를 생성하도록 요청하려고 합니다.
예시 프롬프트
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는 초기 설계부터 버그 수정, 유지 관리, 최적화에 이르기까지 전체 소프트웨어 개발 수명 주기 전반에 걸쳐 탁월합니다. 구성 요소 간 컨텍스트를 이해하는 것이 중요한 다중 파일 리팩터링 또는 아키텍처 계획에 특히 적합합니다.
예제 시나리오
레거시 COBOL 애플리케이션을 Node.js로 다시 작성하여 현대화하는 시나리오를 생각해 보겠습니다. 이 프로젝트에는 익숙하지 않은 소스 코드를 이해하고, 언어 간에 논리를 변환하고, 반복적으로 대체 코드를 빌드하고, 테스트 제품군을 통해 정확성을 확인하는 작업이 포함됩니다.
시나리오의 전체 설명은 GitHub Copilot을 사용하여 레거시 코드 현대화을(를) 참조하세요.
Claude 3.7 Sonnet가 적합한 이유
- Claude 3.7 Sonnet는 복잡한 컨텍스트를 잘 처리하므로 여러 파일 또는 언어에 걸쳐 있는 워크플로에 적합합니다.
- 하이브리드 추론 아키텍처를 사용하면 빠른 답변과 더 심층적인 단계별 문제 해결 간 서로 전환할 수 있습니다.