Eighty
← Blog

Claude Code en de Anthropic-blackout: zo maak je jouw SaaS minder afhankelijk van één AI-provider

18 juni 2026/4 min lezen/Door de Eighty redactie

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.ts dat 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 de generateText functie. 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.ts die 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-health een 200 OK terug met de juiste provider-naam?
  • Werken je bestaande features nog als je wisselt van provider? (test je eigen app even door)
  • Staat AI_PROVIDER ook 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.


Wil je dit zelf leren?

Bij Eighty leer ik je Claude Code in het Nederlands gebruiken, van installatie tot een werkend SaaS-product. Wekelijks een nieuwe module, persoonlijke begeleiding.