Nvidia NIM OpenAI-kompatible API + Kimi K2 Integration (ANTHROPIC_BASE_URL Hack)
Nvidia NIM + Kimi K2 mit OpenAI-kompatiblem Protokoll betreiben
Dieses Dokument fasst alle technischen Details zusammen, die benötigt werden, um diesen Claude-Code-Fork mit der Nvidia NIM API (OpenAI-kompatibel) und dem Modell moonshotai/kimi-k2 zu betreiben.
Analyse des Repos
Das Projekt ist der dekompilierte Quellcode von Claude Code (Anthropic CLI). Es nutzt intern:
@anthropic-ai/sdkfür API-Calls (src/utils/api.ts)- Modellkonfiguration über
globalConfig(src/utils/config.ts) - API-Key aus
ANTHROPIC_API_KEYEnv-Variable - API-Base-URL über
ANTHROPIC_BASE_URLEnv-Variable (offiziell vom Anthropic SDK unterstützt)
Kimi K2 auf Nvidia NIM
Nvidia NIM Endpoint für Kimi K2
Base URL: https://integrate.api.nvidia.com/v1
Model: moonshotai/kimi-k2
API Key: nvapi-xxxxxxxxxxxxxxxxxxxx (von build.nvidia.com)Protokoll
Nvidia NIM verwendet das OpenAI-kompatible API-Protokoll (/v1/chat/completions).
Das Anthropic SDK unterstützt offiziell die Weiterleitung an OpenAI-kompatible Endpoints über:
ANTHROPIC_BASE_URL=https://integrate.api.nvidia.com/v1Achtung: Diese Option funktioniert nur mit einem spezialisierten Reverse-Proxy/Adapter, da das Anthropic SDK intern das Anthropic-Nachrichtenformat sendet, nicht OpenAI-Format.
Lösung: Lokaler OpenAI→Anthropic Adapter
Da das Claude Code CLI das Anthropic Messages API Format erwartet, aber Nvidia NIM nur OpenAI Chat Completions liefert, braucht man einen lokalen Proxy.
Option A: litellm als lokaler Proxy (empfohlen)
pip install litellmlitellm --model nvidia_nim/moonshotai/kimi-k2 \
--api_key nvapi-DEIN_KEY \
--port 8080Dann das CLI starten:
export ANTHROPIC_BASE_URL=http://localhost:8080
export ANTHROPIC_API_KEY=nvapi-DEIN_NVIDIA_KEY
export CLAUDE_MODEL=moonshotai/kimi-k2Option B: openai-anthropic-proxy (Node.js)
npx openai-anthropic-proxy --port 8080 --upstream https://integrate.api.nvidia.com/v1 --key nvapi-DEIN_KEYDann:
export ANTHROPIC_BASE_URL=http://localhost:8080
export ANTHROPIC_API_KEY=dummyRelevante Env-Variablen für dieses Projekt
| Variable | Wert | Beschreibung |
|---|---|---|
ANTHROPIC_API_KEY |
nvapi-xxxx |
Nvidia NIM API Key (oder dummy wenn Proxy Key übernimmt) |
ANTHROPIC_BASE_URL |
http://localhost:8080 |
Lokaler Proxy (litellm oder openai-anthropic-proxy) |
CLAUDE_MODEL |
moonshotai/kimi-k2 |
Modell-Override (falls in config.ts unterstützt) |
ANTHROPIC_SMALL_FAST_MODEL |
moonshotai/kimi-k2 |
Small model override |
Direkte Konfiguration in src/utils/config.ts
In der Konfig-Datei gibt es ein model-Feld in GlobalConfig. Dieses kann geändert werden:
// In getDefaultModel() oder wo das Standardmodell gesetzt wird:
return process.env.CLAUDE_MODEL ?? 'moonshotai/kimi-k2'Die API-URL kommt aus dem Anthropic SDK, das ANTHROPIC_BASE_URL direkt ausliest.
Nvidia NIM API Key besorgen
- Gehe zu https://build.nvidia.com
- Account erstellen / einloggen
- Unter "API Keys" → neuen Key erstellen
- Key beginnt mit
nvapi- - Free-Tier: 1000 Credits (ausreichend für Tests)
Kimi K2 Modell-Seite auf NIM:
https://build.nvidia.com/moonshotai/kimi-k2
Direkter cURL-Test (zum Verifizieren)
curl https://integrate.api.nvidia.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer nvapi-DEIN_KEY" \
-d '{
"model": "moonshotai/kimi-k2",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 100
}'Vollständiger Start-Workflow
# 1. Lokalen Proxy starten (Terminal 1)
litellm --model nvidia_nim/moonshotai/kimi-k2 \
--api_key nvapi-DEIN_NVIDIA_API_KEY \
--port 8080
# 2. Claude Code mit Nvidia NIM starten (Terminal 2)
export ANTHROPIC_BASE_URL=http://localhost:8080
export ANTHROPIC_API_KEY=nvapi-DEIN_NVIDIA_API_KEY
bun run startIssue erstellt zur Dokumentation der Nvidia NIM / Kimi K2 Integration.
Source: freecodexyz/free-code