GitHub Copilot

GitHub Copilot

GitHub Copilot의 모델을 Docker Agent에서 사용하는 방법을 설명해요. 유료 Copilot 구독만 있으면 별도 API 키 없이 기존 권한을 그대로 활용할 수 있어요.

출처: 문서

본문

GitHub Copilot은 https://api.githubcopilot.com에서 OpenAI 호환 Chat Completions API를 노출해요. Docker Agent는 이를 github-copilot 프로바이더로 기본 제공하고 있어서, 유료 GitHub Copilot 구독 사용자는 누구나 Docker Agent에서 자신의 권한을 재사용할 수 있어요.

사전 준비

  • 활성화된 GitHub Copilot 구독(Individual, Business 또는 Enterprise).
export GITHUB_TOKEN="ghp_..."

평가(Eval) 실행하기

평가 케이스(docker agent eval)는 격리된 컨테이너에서 실행돼요. 전용 프로바이더 API 키와 달리 GITHUB_TOKEN과 GH_TOKEN은 평가 컨테이너에 자동으로 전달되지 않아요. GitHub 토큰은 모델 API 키보다 훨씬 넓은 접근 권한을 주기 때문이에요. 토큰을 명시적으로 전달하세요:

docker agent eval agent.yaml ./evals -e GITHUB_TOKEN

--env-from-file 동작을 포함한 자세한 내용은 평가(Evaluation) 문서를 참고하세요.

구성

인라인

agents:
  root:
    model: github-copilot/gpt-4o
    instruction: You are a helpful assistant.

네임드 모델

models:
  copilot:
    provider: github-copilot
    model: gpt-4o
    temperature: 0.7
    max_tokens: 4000

agents:
  root:
    model: copilot

사용 가능한 모델

호출할 수 있는 정확한 모델 집합은 Copilot 요금제에 따라 달라져요. 오늘날 가장 흔한 것들은:

모델 용도
gpt-4o 멀티모달, 균형 잡힌 성능
gpt-4o-mini 빠르고 저렴
claude-sonnet-4 강력한 코딩과 분석
gemini-2.5-pro Google의 플래그십, 대형 컨텍스트
o3-mini 추론 중심

현재 모델 목록은 GitHub Copilot 문서에서 확인하세요.

Copilot-Integration-Id 헤더

GitHub의 Copilot API는 Copilot-Integration-Id 헤더가 없는 요청을 Bad Request 오류로 거부해요. Docker Agent는 github-copilot 프로바이더에 대해 자동으로 copilot-developer-cli를 보내므로, PAT 기반 사용은 기본으로 동작해요.

우리가 특히 copilot-developer-cli(예컨대 vscode-chat 대신)를 고른 이유는, 그것이 OAuth 토큰과 Personal Access Token 양쪽 모두에서 Copilot API가 받아들이는 integration id이기 때문이에요. 대부분의 Docker Agent 사용자는 GITHUB_TOKEN으로 내보낸 PAT로 인증하고, 그런 토큰에는 vscode-chat이 거부돼요.

다른 integration id를 보내야 한다면 — 예를 들어 조직이 특정 값을 허용 목록에 넣은 경우 — provider_opts.http_headers로 덮어쓸 수 있어요:

models:
  copilot:
    provider: github-copilot
    model: gpt-4o
    provider_opts:
      http_headers:
        Copilot-Integration-Id: my-custom-integration

헤더 이름은 대소문자를 구분하지 않게 매칭되므로 copilot-integration-id도 동작해요.

Chat Completions vs Responses API

GitHub Copilot은 OpenAI 모델을 두 엔드포인트 뒤에서 프록시해요: 레거시 /chat/completions와 최신 /responses. 최신 모델(gpt-5 계열, Codex 변형 등)은 /responses로만 제공되고, /chat/completions는 400 Bad Request로 거부해요. Docker Agent는 모델별로 올바른 엔드포인트를 자동 선택하므로 일반적인 경우 설정이 필요 없어요. 어느 한쪽을 강제해야 한다면 api_type을 명시적으로 설정하세요:

models:
  copilot:
    provider: github-copilot
    model: gpt-5
    provider_opts:
      api_type: openai_responses # 또는 openai_chatcompletions

커스텀 HTTP 헤더

provider_opts.http_headers는 GitHub Copilot뿐 아니라 어떤 OpenAI 호환 프로바이더에서도 동작하는 범용 탈출구예요. 모든 키/값 쌍이 모든 나가는 요청에 추가돼요:

models:
  my_model:
    provider: openai
    model: gpt-4o
    provider_opts:
      http_headers:
        X-Request-Source: docker-agent
        X-Tenant-Id: my-team

동작 방식

GitHub Copilot은 Docker Agent의 기본 제공 alias로 구현돼 있어요:

  • API 유형: OpenAI 호환(Chat Completions)
  • 기본 URL: https://api.githubcopilot.com
  • 토큰 변수: GITHUB_TOKEN
  • 기본 헤더: Copilot-Integration-Id: copilot-developer-cli

즉 OpenAI와 같은 클라이언트를 사용하기 때문에, Docker Agent가 지원하는 모든 OpenAI 기능(도구 호출, 구조화된 출력, 멀티모달 입력 등)이 기반 모델이 지원하는 한 사용 가능해요.

더 알아보기 (Learn more)