github-copilot wywołuje API GitHub Copilot z modelami, które obejmuje
Twój plan Copilot (Free, Pro, Pro+, Max, Business lub Enterprise). Użycie jest
rozliczane z GitHub AI Credits planu, a nie z klucza API dostawcy modelu.
Typ nazywa się github-copilot, a nie copilot, żeby nie mylił się z
Microsoft Copilot.
Konfiguracja
Danymi uwierzytelniającymi jest token OAuth GitHuba (gho_...) dla konta z
dostępem do Copilota:
config.yaml:
Skąd wziąć token
Działa dowolny token OAuth GitHuba dla tego konta, na przykład:model_not_supported, nawet jeśli
/models go wymienia.
Business i Enterprise
Plany indywidualne (Free, Pro, Pro+, Max) używają domyślnego base URL,https://api.githubcopilot.com. Miejsce w planie Business lub Enterprise może
być obsługiwane przez inny endpoint; ustaw go, gdy requesty kończą się błędem
401 lub model_not_supported:
endpoints.api w odpowiedzi na
curl -H "Authorization: Bearer $GITHUB_COPILOT_API_KEY" https://api.github.com/copilot_internal/user.
Modele
GoModel pobiera listę modeli z/models Copilota. Modele, które Twój plan
wymienia, ale które nie są włączone na koncie (policy disabled), są
pomijane; włącz je w
ustawieniach Copilota, a
pojawią się przy następnym odświeżeniu modeli.
Aby udostępniać tylko część z nich,
przefiltruj listę:
GITHUB_COPILOT_MODELS to lista zapasowa, używana tylko wtedy, gdy /models
zawodzi lub zwraca pustą listę; CONFIGURED_PROVIDER_MODELS_MODE=allowlist
czyni ją jedyną listą i pomija /models.
Chat completions i Responses dla każdego modelu
Copilot obsługuje GPT-5 i nowsze wyłącznie przez/responses, a Claude, Kimi
i starsze modele GPT wyłącznie przez /chat/completions. GoModel odczytuje
endpointy każdego modelu z /models i udostępnia oba API dla każdego modelu:
Dopóki GoModel nie odczyta endpointów modelu, na przykład gdy
/models jest
nieosiągalne, model jest wysyłany do /chat/completions.
Request czatu do modelu dostępnego tylko przez Responses jest odrzucany z kodem
400, gdy zawiera pole, którego tłumaczenie nie odwzoruje dokładnie (na
przykład logit_bias); wyślij go wtedy do /v1/responses.
Embeddingi (text-embedding-3-small) są obsługiwane. Copilot przyjmuje jako
input tylko listę, więc pojedynczy string jest opakowywany w listę z jednym
elementem.