Anthropic werd deze week gewoon uitgezet
Dit is geen theoretisch risico meer. Anthropic moest deze week noodgedwongen de toegang voor buitenlandse gebruikers afsnijden nadat de Trump-administratie exportregels activeerde die niemand helemaal begrijpt. Claude was simpelweg offline voor grote groepen gebruikers, inclusief Europese developers die gewoon aan het werk waren.
Macron en Modi kaarten dit tegelijk aan op de G7: het risico dat Amerika de stekker uit AI-toegang trekt is nu realiteit geworden. Als jij een SaaS bouwt die direct op de Anthropic API draait, heb je een single point of failure.
Wat betekent dit voor jouw project?
Als jij Claude Code gebruikt om te bouwen en jouw app direct API-calls maakt naar api.anthropic.com, dan ben je kwetsbaar. Niet theoretisch, maar praktisch. Zeker als je Europese gebruikers hebt (of zelf in Europa zit).
De oplossing is niet stoppen met Claude, maar een dunne abstractielaag bouwen zodat je in één uur kunt switchen naar OpenAI, Mistral of een lokaal model als dat nodig is. Claude Code is de perfecte tool om die laag vanavond neer te zetten.
Hoe pak je het aan met Claude Code?
Stap 1: Laat Claude Code je huidige AI-gebruik in kaart brengen
Open je project in Claude Code en geef deze prompt:
Analyseer alle bestanden in dit project en geef me een lijst van alle plekken waar ik direct API-calls maak naar een AI-provider (Anthropic, OpenAI, etc.). Geef per bestand de bestandsnaam, regelnummer en wat voor call het is (completion, embedding, etc.).
Dit geeft je een overzicht voordat je iets aanpast.
Stap 2: Bouw een provider-wrapper
Vraag Claude Code om een centrale AI-module te maken:
Maak een bestand
lib/ai-client.tsdat als abstractielaag dient voor AI-calls. Het moet:
- Een
generateText(prompt: string, options?)functie exporteren- De provider lezen uit een environment variable
AI_PROVIDER(waarden: "anthropic", "openai")- Bij "anthropic" de Anthropic SDK gebruiken met claude-sonnet-4-5
- Bij "openai" de OpenAI SDK gebruiken met gpt-4o
- Dezelfde interface teruggeven ongeacht de provider
- TypeScript types hebben
Je krijgt dan zoiets:
// lib/ai-client.ts
import Anthropic from "@anthropic-ai/sdk";
import OpenAI from "openai";
type AIResponse = {
text: string;
provider: string;
};
export async function generateText(
prompt: string,
systemPrompt?: string
): Promise<AIResponse> {
const provider = process.env.AI_PROVIDER ?? "anthropic";
if (provider === "openai") {
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const response = await client.chat.completions.create({
model: "gpt-4o",
messages: [
...(systemPrompt ? [{ role: "system" as const, content: systemPrompt }] : []),
{ role: "user" as const, content: prompt },
],
});
return {
text: response.choices[0].message.content ?? "",
provider: "openai",
};
}
// Default: Anthropic
const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });
const response = await client.messages.create({
model: "claude-sonnet-4-5",
max_tokens: 1024,
...(systemPrompt ? { system: systemPrompt } : {}),
messages: [{ role: "user", content: prompt }],
});
return {
text: response.content[0].type === "text" ? response.content[0].text : "",
provider: "anthropic",
};
}
Stap 3: Vervang je bestaande calls
Geef Claude Code nu de taak om alle directe API-calls te migreren:
Vervang alle directe Anthropic en OpenAI API-calls in dit project door imports van
lib/ai-client.ts. Gebruik degenerateTextfunctie. Laat de rest van de logica intact. Geef me per bestand aan wat je hebt aangepast.
Stap 4: Voeg een health-check toe
Maak een API route
app/api/ai-health/route.tsdie een simpele testcall doet naar de huidige AI-provider en teruggeeft of die bereikbaar is. Ik wil dit kunnen aanroepen vanuit een monitoring-script.
// app/api/ai-health/route.ts
import { generateText } from "@/lib/ai-client";
import { NextResponse } from "next/server";
export async function GET() {
const start = Date.now();
try {
const result = await generateText("Antwoord alleen met: OK");
return NextResponse.json({
status: "ok",
provider: result.provider,
latency_ms: Date.now() - start,
});
} catch (error) {
return NextResponse.json(
{ status: "error", message: String(error) },
{ status: 503 }
);
}
}
Stap 5: Test de switch
Verander in je .env.local de waarde:
# Normaal:
AI_PROVIDER=anthropic
# Bij problemen, zet dit om naar:
AI_PROVIDER=openai
Herstart je dev-server en ga naar /api/ai-health. Je ziet direct welke provider actief is.
Wat te checken na afloop
- Geeft
/api/ai-healtheen200 OKterug met de juiste provider-naam? - Werken je bestaande features nog als je wisselt van provider? (test je eigen app even door)
- Staat
AI_PROVIDERook ingesteld in je productie-omgeving (Vercel, Railway, of waar je deployed)? - Heb je geen directe Anthropic- of OpenAI-imports meer buiten
lib/ai-client.ts? (laat Claude Code dit controleren met: "Zoek naar imports van @anthropic-ai/sdk en openai buiten lib/ai-client.ts")
Eén avond werk, en je bent nooit meer afhankelijk van een enkelvoudige beslissing in Washington.
Bij Eighty leer ik je Claude Code in het Nederlands gebruiken, van installatie tot een werkend SaaS-product. Wekelijks een nieuwe module, persoonlijke begeleiding.
