github-copilot ruft die GitHub-Copilot-API mit den Modellen auf,
die Ihr Copilot-Plan enthält (Free, Pro, Pro+, Max, Business oder Enterprise).
Die Nutzung wird mit den GitHub AI Credits des Plans abgerechnet, nicht über
den API-Key eines Modellanbieters.
Der Typ heißt github-copilot, nicht copilot, damit er nicht mit Microsoft
Copilot verwechselt wird.
Konfiguration
Die Zugangsdaten sind ein GitHub-OAuth-Token (gho_...) für ein Konto mit
Copilot-Zugang:
config.yaml:
Ein Token beschaffen
Jedes GitHub-OAuth-Token des Kontos funktioniert, zum Beispiel:model_not_supported, auch
wenn /models es auflistet.
Business und Enterprise
Die Einzelpläne (Free, Pro, Pro+, Max) nutzen die Standard-Base-URLhttps://api.githubcopilot.com. Ein Business- oder Enterprise-Platz kann über
einen anderen Endpunkt bedient werden; setzen Sie ihn, wenn Requests mit 401
oder model_not_supported fehlschlagen:
endpoints.api in der Antwort von
curl -H "Authorization: Bearer $GITHUB_COPILOT_API_KEY" https://api.github.com/copilot_internal/user.
Modelle
GoModel listet die Modelle aus Copilots/models. Modelle, die Ihr Plan
auflistet, die im Konto aber nicht aktiviert sind (Policy disabled), werden
weggelassen; aktivieren Sie sie in Ihren
Copilot-Einstellungen, dann
erscheinen sie bei der nächsten Aktualisierung der Modelle.
Um nur einen Teil davon anzubieten,
filtern Sie die
Liste:
GITHUB_COPILOT_MODELS ist eine Fallback-Liste, die nur verwendet wird, wenn
/models fehlschlägt oder leer ist; CONFIGURED_PROVIDER_MODELS_MODE=allowlist
macht sie zur einzigen Liste und überspringt /models.
Chat Completions und Responses für jedes Modell
Copilot bedient GPT-5 und neuer nur über/responses, Claude, Kimi und ältere
GPT-Modelle nur über /chat/completions. GoModel liest die Endpunkte jedes
Modells aus /models und bietet beide APIs für jedes Modell an:
Solange GoModel die Endpunkte eines Modells noch nicht gelesen hat, etwa weil
/models nicht erreichbar ist, wird das Modell an /chat/completions
gesendet.
Ein Chat-Request an ein reines Responses-Modell wird mit 400 abgelehnt, wenn
er ein Feld enthält, das die Übersetzung nicht exakt abbilden kann (zum
Beispiel logit_bias); senden Sie ihn stattdessen an /v1/responses.
Embeddings (text-embedding-3-small) werden unterstützt. Copilot akzeptiert
als input nur eine Liste, daher wird ein einzelner String in eine Liste mit
einem Element verpackt.