Claude Code auf Microsoft Foundry
Erfahren Sie, wie Sie Claude Code über Microsoft Foundry konfigurieren, einschließlich Setup, Konfiguration und Fehlerbehebung.
export const ContactSalesCard = ({surface}) => {
const utm = content => utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content};
const iconArrowRight = (size = 13) => ;
const STYLES = .cc-cs { --cs-slate: #141413; --cs-clay: #d97757; --cs-clay-deep: #c6613f; --cs-gray-000: #ffffff; --cs-gray-700: #3d3d3a; --cs-border-default: rgba(31, 30, 29, 0.15); font-family: inherit; } .dark .cc-cs { --cs-slate: #f0eee6; --cs-gray-000: #262624; --cs-gray-700: #bfbdb4; --cs-border-default: rgba(240, 238, 230, 0.14); } .cc-cs-card { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 16px; margin: 0; background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default); border-radius: 8px; flex-wrap: wrap; } .cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; } .cc-cs-text strong { font-weight: 550; color: var(--cs-slate); } .cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; } .cc-cs-btn-clay { display: inline-flex; align-items: center; gap: 8px; background: var(--cs-clay-deep); color: #fff; border: none; border-radius: 8px; padding: 8px 14px; font-size: 13px; font-weight: 500; transition: background-color 0.15s; white-space: nowrap; } .cc-cs-btn-clay:hover { background: var(--cs-clay); } .cc-cs-btn-ghost { display: inline-flex; align-items: center; gap: 8px; background: transparent; color: var(--cs-gray-700); border: 0.5px solid var(--cs-border-default); border-radius: 8px; padding: 8px 14px; font-size: 13px; font-weight: 500; } .cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); } .dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); } @media (max-width: 720px) { .cc-cs-actions { width: 100%; } };
return
https://claude.com/pricing?${utm('view_plans')}#plans-business} className="cc-cs-btn-ghost">
View plans
<a href={https://claude.com/contact-sales?${utm('contact_sales')}} className="cc-cs-btn-clay">
Contact sales {iconArrowRight()}
export const Experiment = ({flag, treatment, children}) => {
const VID_KEY = 'exp_vid';
const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);
const fnv1a = s => {
let h = 0x811c9dc5;
for (let i = 0; i < s.length; i++) {
h ^= s.charCodeAt(i);
h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);
}
return h >>> 0;
};
const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';
const [decision] = useState(() => {
const params = new URLSearchParams(location.search);
const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];
const force = params.get('gb-force');
if (force) {
for (const p of force.split(',')) {
const [k, v] = p.split(':');
if (k === flag) return {
variant: v || 'treatment',
track: false
};
}
}
if (navigator.globalPrivacyControl) {
return {
variant: 'control',
track: false
};
}
const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);
if (prefsMatch) {
try {
if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {
return {
variant: 'control',
track: false
};
}
} catch {
return {
variant: 'control',
track: false
};
}
} else {
const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];
if (!country || CONSENT_COUNTRIES.has(country)) {
return {
variant: 'control',
track: false
};
}
}
let vid;
try {
const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);
if (ajsMatch) {
vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');
} else {
vid = localStorage.getItem(VID_KEY);
if (!vid) {
vid = crypto.randomUUID();
}
document.cookie = ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000;
}
try {
localStorage.setItem(VID_KEY, vid);
} catch {}
} catch {
return {
variant: 'control',
track: false
};
}
const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);
return {
variant,
track: true,
vid
};
});
useEffect(() => {
if (!decision.track) return;
fetch('https://api.anthropic.com/api/event_logging/v2/batch', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-service-name': 'claude_code_docs'
},
body: JSON.stringify({
events: [{
event_type: 'GrowthbookExperimentEvent',
event_data: {
device_id: decision.vid,
anonymous_id: decision.vid,
timestamp: new Date().toISOString(),
experiment_id: flag,
variation_id: decision.variant === 'treatment' ? 1 : 0,
environment: 'production'
}
}]
}),
keepalive: true
}).catch(() => {});
}, []);
return decision.variant === 'treatment' ? treatment : children;
};
<Experiment flag="docs-contact-sales-cta" treatment={
Voraussetzungen
Bevor Sie Claude Code mit Microsoft Foundry konfigurieren, stellen Sie sicher, dass Sie über Folgendes verfügen:
- Ein Azure-Abonnement mit Zugriff auf Microsoft Foundry
- RBAC-Berechtigungen zum Erstellen von Microsoft Foundry-Ressourcen und Bereitstellungen
- Azure CLI installiert und konfiguriert (optional - nur erforderlich, wenn Sie keinen anderen Mechanismus zum Abrufen von Anmeldedaten haben)
Wenn Sie Claude Code für mehrere Benutzer bereitstellen, fixieren Sie Ihre Modellversionen, um Fehler zu vermeiden, wenn Anthropic neue Modelle veröffentlicht.
Setup
1. Microsoft Foundry-Ressource bereitstellen
Erstellen Sie zunächst eine Claude-Ressource in Azure:
- Navigieren Sie zum Microsoft Foundry-Portal
- Erstellen Sie eine neue Ressource und notieren Sie sich Ihren Ressourcennamen
- Erstellen Sie Bereitstellungen für die Claude-Modelle:
- Claude Opus
- Claude Sonnet
- Claude Haiku
2. Azure-Anmeldedaten konfigurieren
Claude Code unterstützt zwei Authentifizierungsmethoden für Microsoft Foundry. Wählen Sie die Methode, die Ihren Sicherheitsanforderungen am besten entspricht.
Option A: API-Schlüssel-Authentifizierung
- Navigieren Sie zu Ihrer Ressource im Microsoft Foundry-Portal
- Gehen Sie zum Abschnitt Endpunkte und Schlüssel
- Kopieren Sie API-Schlüssel
- Legen Sie die Umgebungsvariable fest:
export ANTHROPIC_FOUNDRY_API_KEY=your-azure-api-key
Option B: Microsoft Entra ID-Authentifizierung
Wenn ANTHROPIC_FOUNDRY_API_KEY nicht gesetzt ist, verwendet Claude Code automatisch die Azure SDK Standard-Anmeldekette.
Dies unterstützt eine Vielzahl von Methoden zur Authentifizierung lokaler und Remote-Workloads.
In lokalen Umgebungen können Sie häufig die Azure CLI verwenden:
az login
Bei Verwendung von Microsoft Foundry sind die Befehle /login und /logout deaktiviert, da die Authentifizierung über Azure-Anmeldedaten erfolgt.
3. Claude Code konfigurieren
Legen Sie die folgenden Umgebungsvariablen fest, um Microsoft Foundry zu aktivieren:
# Microsoft Foundry-Integration aktivieren
export CLAUDE_CODE_USE_FOUNDRY=1
# Azure-Ressourcenname (ersetzen Sie {resource} durch Ihren Ressourcennamen)
export ANTHROPIC_FOUNDRY_RESOURCE={resource}
# Oder geben Sie die vollständige Basis-URL an:
# export ANTHROPIC_FOUNDRY_BASE_URL=https://{resource}.services.ai.azure.com/anthropic
4. Modellversionen fixieren
Fixieren Sie spezifische Modellversionen für jede Bereitstellung. Wenn Sie Modellaliase (sonnet, opus, haiku) ohne Fixierung verwenden, kann Claude Code versuchen, eine neuere Modellversion zu verwenden, die nicht in Ihrem Foundry-Konto verfügbar ist, was bestehende Benutzer bricht, wenn Anthropic Updates veröffentlicht. Wenn Sie Azure-Bereitstellungen erstellen, wählen Sie eine spezifische Modellversion anstelle von „automatisch auf die neueste Version aktualisieren".
Legen Sie die Modellvariablen so fest, dass sie den Bereitstellungsnamen entsprechen, die Sie in Schritt 1 erstellt haben.
Ohne ANTHROPIC_DEFAULT_OPUS_MODEL wird der opus-Alias auf Foundry zu Opus 4.6 aufgelöst. Legen Sie ihn auf die Opus 4.7-ID fest, um das neueste Modell zu verwenden:
export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-7'
export ANTHROPIC_DEFAULT_SONNET_MODEL='claude-sonnet-4-6'
export ANTHROPIC_DEFAULT_HAIKU_MODEL='claude-haiku-4-5'
Aktuelle und ältere Modell-IDs finden Sie unter Modellübersicht. Siehe Modellkonfiguration für die vollständige Liste der Umgebungsvariablen.
Prompt Caching ist automatisch aktiviert. Um stattdessen eine 1-Stunden-Cache-TTL anstelle des 5-Minuten-Standards anzufordern, legen Sie die folgende Variable fest; Cache-Schreibvorgänge mit einer 1-Stunden-TTL werden mit einem höheren Satz abgerechnet:
export ENABLE_PROMPT_CACHING_1H=1
Azure RBAC-Konfiguration
Die Standardrollen Azure AI User und Cognitive Services User enthalten alle erforderlichen Berechtigungen zum Aufrufen von Claude-Modellen.
Für restriktivere Berechtigungen erstellen Sie eine benutzerdefinierte Rolle mit Folgendem:
{
"permissions": [
{
"dataActions": [
"Microsoft.CognitiveServices/accounts/providers/*"
]
}
]
}
Weitere Informationen finden Sie in der Microsoft Foundry RBAC-Dokumentation.
Fehlerbehebung
Wenn Sie einen Fehler erhalten „Failed to get token from azureADTokenProvider: ChainedTokenCredential authentication failed":
- Konfigurieren Sie Entra ID in der Umgebung, oder legen Sie
ANTHROPIC_FOUNDRY_API_KEYfest.