Skip to content
This repository was archived by the owner on Apr 30, 2026. It is now read-only.
This repository was archived by the owner on Apr 30, 2026. It is now read-only.

Nvidia NIM OpenAI-kompatible API + Kimi K2 Integration (ANTHROPIC_BASE_URL Hack) #20

@DJT24

Description

@DJT24

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/sdk für API-Calls (src/utils/api.ts)
  • Modellkonfiguration über globalConfig (src/utils/config.ts)
  • API-Key aus ANTHROPIC_API_KEY Env-Variable
  • API-Base-URL über ANTHROPIC_BASE_URL Env-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/v1

Achtung: 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 litellm
litellm --model nvidia_nim/moonshotai/kimi-k2 \
        --api_key nvapi-DEIN_KEY \
        --port 8080

Dann das CLI starten:

export ANTHROPIC_BASE_URL=http://localhost:8080
export ANTHROPIC_API_KEY=nvapi-DEIN_NVIDIA_KEY
export CLAUDE_MODEL=moonshotai/kimi-k2

Option B: openai-anthropic-proxy (Node.js)

npx openai-anthropic-proxy --port 8080 --upstream https://integrate.api.nvidia.com/v1 --key nvapi-DEIN_KEY

Dann:

export ANTHROPIC_BASE_URL=http://localhost:8080
export ANTHROPIC_API_KEY=dummy

Relevante 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

  1. Gehe zu https://build.nvidia.com
  2. Account erstellen / einloggen
  3. Unter "API Keys" → neuen Key erstellen
  4. Key beginnt mit nvapi-
  5. 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 start

Issue erstellt zur Dokumentation der Nvidia NIM / Kimi K2 Integration.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions