Der Katalog build.nvidia.com enthält über 100 Modelle. Das ist gleichzeitig seine Stärke und sein Problem: Wenn Sie die Plattform zum ersten Mal besuchen, ist die Auswahl lähmend. DeepSeek oder Kimi? Nemotron oder Llama? GLM-5 oder Qwen3.5?
Dieser Artikel ist eine praktische technische Analyse – welches Modell für welche spezifische Aufgabe eingesetzt werden soll.
Haben Sie den vorherigen Beitrag gelesen? Im Artikel „NVIDIA NIM: Wie kostenloser Inference die Architektur von KI-Systemen verändert“ habe ich analysiert, warum Inference zur Commodity-Schicht wird, wie sich NVIDIA Build von OpenRouter und Groq unterscheidet und welche architektonischen Auswirkungen dies für KI-Agenten hat. Dieser Beitrag ist eine logische Fortsetzung: spezifische Modelle, spezifischer Code.
Inhalt
Verbindung zu NVIDIA NIM: Erste Schritte
Bevor wir Modelle vergleichen – das grundlegende Setup. Es dauert weniger als 5 Minuten.
Schritt 1. Registrieren Sie sich im NVIDIA Developer Program (kostenlos, nur E-Mail erforderlich).
Schritt 2. Generieren Sie einen API-Schlüssel auf build.nvidia.com. Der Schlüssel hat das Präfix nvapi-.
Schritt 3. Installieren Sie die Abhängigkeiten:
pip install openai
export NVIDIA_API_KEY="nvapi-Ihr-Schlüssel"
Basis Python-Client:
from openai import OpenAI
client = OpenAI(
api_key="nvapi-Ihr-Schlüssel",
base_url="https://integrate.api.nvidia.com/v1"
)
response = client.chat.completions.create(
model="meta/llama-4-scout-17b-16e-instruct", # nur diese Zeile ändern
messages=[
{"role": "system", "content": "Du bist ein technischer Assistent."},
{"role": "user", "content": "Schreibe eine Funktion für die binäre Suche in Python."}
],
temperature=0.1,
max_tokens=1024
)
print(response.choices[0].message.content)
curl-Äquivalent:
curl https://integrate.api.nvidia.com/v1/chat/completions \
-H "Authorization: Bearer $NVIDIA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "meta/llama-4-scout-17b-16e-instruct",
"messages": [
{"role": "user", "content": "Schreibe eine Funktion für die binäre Suche in Python."}
],
"max_tokens": 1024
}'
Der entscheidende Punkt: Die Basis-URL ist für alle Modelle gleich. Um von Llama zu DeepSeek zu wechseln, müssen Sie nur eine Zeile ändern – den Wert des Parameters model. Deshalb ist die Wahl des richtigen Modells kein Code-Refactoring, sondern eine Konfiguration.
Modellübersicht: Wer ist wer im NIM-Katalog
Stand Mai 2026 sind im Katalog build.nvidia.com über 100 Modelle verfügbar. Lassen Sie uns die wichtigsten Familien aufschlüsseln:
| Familie |
Entwickler |
Schlüsselmodelle in NIM |
Lizenz |
Stärke |
| DeepSeek V4 |
DeepSeek AI (China) |
V4-Flash, V4-Pro, V4 (671B) |
MIT |
Allgemeine Qualität, Coding, Kosteneffizienz |
| Kimi K2 |
Moonshot AI (China) |
K2.5, K2.6, K2-Thinking |
Kimi License |
Agentic Coding, langer Kontext |
| Nemotron 3 |
NVIDIA |
Nano Omni (30B), Super (120B), Ultra (500B) |
NVIDIA Open Model License |
NVIDIA Hardware-Durchsatz, Agentenaufgaben |
| Qwen 3.5 |
Alibaba (China) |
Qwen3-8B, Qwen3-32B, Qwen3.5-235B-MoE |
Apache 2.0 |
Coding, Mehrsprachigkeit (besonders CJK) |
| GLM-5 / GLM-4 |
Zhipu AI (China) |
GLM-4.7, GLM-5, GLM-5.1 |
MIT |
Agenten-Workflows, Funktionsaufrufe |
| Llama 4 |
Meta (USA) |
Scout 17B, Maverick 70B, Llama 3.3 70B |
Llama Community License |
Allgemeine Nutzung, Tool-Nutzung |
| MiniMax M2 |
MiniMax (China) |
M2.5, M2.7 (230B MoE) |
MiniMax License |
Schlussfolgerung, Multimodalität |
| Gemma 4 |
Google |
Gemma 4 31B, Gemma 2B / 7B |
Gemma License |
Leichte Aufgaben, Zusammenfassung |
| Spezialisiert |
Verschiedene |
NemoClaw, Llama Guard, NV-Embed |
Verschiedene |
Sicherheit, Embedding, Guardrails |
Ich möchte auf eine wichtige Beobachtung hinweisen: Im Jahr 2026 stammen die meisten Top-Modelle aus chinesischen Laboren. Laut BenchLM.ai belegen DeepSeek V4 Pro (87 Punkte), Kimi K2.6 (84), GLM-5.1 (83) und Qwen3.5 397B (79) die Spitzenplätze im Ranking der Open-Weight-Modelle. In diesem Zusammenhang wirkt Llama von Meta im oberen Tabellenbereich nicht mehr dominant.
Benchmarks: Reale Leistungszahlen
Die folgenden Zahlen stammen aus Artificial Analysis, BenchLM.ai und LearnAIForge (Mai 2026).
Gesamt-Ranking Intelligence Index (Artificial Analysis v4.0)
| Modell |
Intelligence Index |
Typ |
Verfügbar in NIM |
| Kimi K2.6 |
54 |
Open-Weight |
✓ |
| MiMo-V2.5-Pro |
54 |
Open-Weight |
✓ |
| DeepSeek V4 Pro (Reasoning) |
52 |
Open-Weight |
✓ |
| GLM-5.1 (Reasoning) |
~50 |
Open-Weight (MIT) |
✓ |
| Nemotron 3 Super 120B |
61 (BenchLM) |
Open-Weight |
✓ |
| Nemotron 3 Ultra 500B |
65 (BenchLM) |
Open-Weight |
✓ |
SWE-Bench Verified (autonome Behebung realer GitHub-Probleme)
| Modell |
SWE-Bench Score |
Anmerkung |
| Nemotron 3 Super |
60.47% |
+18.5 p.p. über GPT-OSS-120B; 7,5x höherer Durchsatz als Qwen3.5-122B |
| Qwen3.5-122B |
~66% |
Höherer Score, aber geringerer Durchsatz |
| DeepSeek V4 Pro |
89/100 (coding harness) |
Benötigt ein spezielles Harness für maximale Ergebnisse |
| Kimi K2.6 |
87/100 (coding harness) |
3,6x günstiger als Claude Opus bei denselben Aufgaben |
| GPT-OSS-120B (Referenz) |
~42% |
Referenz für den Vergleich |
RULER Long-Context (Genauigkeit bei 1 Mio. Tokens)
| Modell |
RULER @ 1M ctx |
Maximaler Kontext |
| Nemotron 3 Super |
91.75% |
1 Mio. Tokens |
| Nemotron 3 Ultra |
Größter unter Open-Weight |
10 Mio. Tokens |
| DeepSeek V4 Flash |
Hoch |
1 Mio. Tokens |
| GPT-OSS-120B |
22.30% |
Degradiert stark bei großen Kontexten |
Aufgabe 1 — Coding und Agentic Coding
Coding ist die wettbewerbsintensivste Kategorie unter den NIM-Modellen im Jahr 2026. Ich werde drei Schwierigkeitsgrade aufschlüsseln.
Level 1: Einfache Aufgaben (Funktion, Algorithmus, Fehlerbehebung)
Empfehlung: deepseek-ai/deepseek-v4-flash
Aus praktischer Sicht ist DeepSeek V4 Flash ein 284B MoE-Modell, das nur einen Teil der Parameter pro Token aktiviert. Dies führt zu einem ungewöhnlichen Verhältnis von Geschwindigkeit zu Qualität: Das Modell verhält sich deutlich leichter, als seine Gesamtgröße vermuten lassen würde.
Laut praktischen Entwicklertests deckt V4 Flash etwa 80 % der typischen Coding-Aufgaben mit einer Qualität ab, die zuvor deutlich teurere und schwerere Modelle erforderte.
# Einfache Coding-Aufgaben — DeepSeek V4 Flash
response = client.chat.completions.create(
model="deepseek-ai/deepseek-v4-flash",
messages=[
{
"role": "system",
"content": "You are an expert Python developer. Return only code, no explanations."
},
{
"role": "user",
"content": "Write a binary search function with type hints and docstring."
}
],
temperature=0.0, # für Code immer 0
max_tokens=512
)
Level 2: Komplexe Aufgaben (Multi-File-Bearbeitung, Refactoring)
Empfehlung: moonshotai/kimi-k2.6 oder deepseek-ai/deepseek-v4-pro
Laut dem vergleichenden Benchmark für Coding-Agenten erzielt Kimi K2.6 87/100 und ist 3,6-mal günstiger als Claude Opus bei ähnlichen Aufgaben. DeepSeek V4 Pro liefert 89/100, erfordert aber ein spezifisches Harness, um sein volles Potenzial zu entfalten.
# Komplexe Agentic Coding — Kimi K2.6
response = client.chat.completions.create(
model="moonshotai/kimi-k2.6",
messages=[
{
"role": "system",
"content": (
"You are a senior software engineer. "
"When editing code, show ONLY the changed parts with clear markers. "
"Always verify your changes are consistent across all files."
)
},
{
"role": "user",
"content": "Refactor this FastAPI app to use async SQLAlchemy:\n\n[Code hier]"
}
],
temperature=0.1,
max_tokens=4096
)
Level 3: Autonome Behebung von GitHub-Issues (SWE-Bench-Klasse)
Meine Empfehlung: nvidia/nemotron-3-super-120b
Für Aufgaben wie "behebe diesen Bug im Repository autonom" zeigt Nemotron 3 Super 60,47 % auf SWE-Bench Verified und bietet einen 7,5-mal höheren Durchsatz im Vergleich zu Qwen3.5-122B bei vergleichbarer Qualität – was für mich ein kritischer Faktor in Szenarien ist, in denen Agenten mehrere Aufgaben parallel bearbeiten.
# Autonomer Coding-Agent — Nemotron 3 Super
# WICHTIG: Fügen Sie für Denkmodelle die richtigen Parameter hinzu
response = client.chat.completions.create(
model="nvidia/nemotron-3-super-120b",
messages=[
{
"role": "system",
"content": (
"You are an autonomous software engineer. "
"Given a GitHub issue description and relevant code, "
"produce a complete patch. Think step by step before coding."
)
},
{
"role": "user",
"content": "Issue: #1234 — Memory leak in connection pool\n\n[Repository-Code]"
}
],
temperature=0.15,
max_tokens=8192
)
Zusammenfassende Tabelle für Coding
| Szenario |
Empfohlenes Modell |
Warum es |
| Einfache Funktionen, Snippets |
deepseek-ai/deepseek-v4-flash |
Geschwindigkeit + Qualität + Kreditersparnis |
| Multi-File-Refactoring |
moonshotai/kimi-k2.6 |
Langer Kontext + parallele Sub-Agenten |
| Autonomer Coding-Agent |
nvidia/nemotron-3-super-120b |
Höchste SWE-Bench-Punktzahl + Durchsatz |
| Maximale Genauigkeit (nicht Echtzeit) |
deepseek-ai/deepseek-v4-pro |
89/100 auf Coding-Harness |
Aufgabe 2 — Komplexe Schlussfolgerungen und Mathematik
Reasoning sind Aufgaben, bei denen das Modell vor der Antwort "denken" muss: Mathematik, Logik, GPQA Diamond, Humanity's Last Exam.
Ich stelle fest, dass für die meisten Aufgaben die beste Allround-Wahl deepseek-ai/deepseek-v4-pro mit aktiviertem Reasoning-Modus bleibt.
Für wissenschaftliche Aufgaben: qwen/qwen3.5-397b – Humanity's Last Exam Score 25,30 % gegenüber 18,26 % bei Nemotron Super.
# Reasoning-Aufgabe mit explizitem Chain-of-Thought
response = client.chat.completions.create(
model="deepseek-ai/deepseek-v4-pro",
messages=[
{
"role": "system",
"content": (
"You are a mathematical reasoning engine. "
"Always show your full chain of thought before the final answer. "
"Format: ...\n\nFinal answer: ..."
)
},
{
"role": "user",
"content": (
"A train leaves city A at 60 km/h. Another leaves city B at 80 km/h "
"toward A. The cities are 420 km apart. When and where do they meet?"
)
}
],
temperature=0.0,
max_tokens=2048
)
Wichtig für Denkmodelle: DeepSeek V4-Pro und Kimi K2-Thinking sind "Denkmodelle" – sie verwenden einen internen Chain-of-Thought vor der Antwort. Stellen Sie für "Denker"-Modelle temperature=0.0 oder einen sehr niedrigen Wert ein, da sonst das Reasoning instabil wird.
Vergleich von Reasoning-Modellen in NIM
| Modell |
GPQA Diamond |
Humanity's Last Exam |
Optimal für |
| DeepSeek V4 Pro (Reasoning) |
Hoch |
~20 % |
Coding + Logik-Reasoning |
| Qwen3.5-397B (Reasoning) |
Hoch |
25,30 % |
Wissenschaftliche Aufgaben, Mathematik |
| Nemotron 3 Super |
Mäßig |
18,26 % |
Agentischer Durchsatz, keine Spitzenwissenschaft |
| MiniMax M2.7 |
Hoch |
Konkurriert mit DeepSeek-R1 |
Reines Chain-of-Thought-Reasoning |
Aufgabe 3 — RAG und langer Kontext
In meinen praktischen Experimenten mit RAG (Retrieval-Augmented Generation) – wenn das Modell einen großen externen Kontext in Form von Dokumenten, Wissensdatenbanken oder Code-Repositories erhält – liefern nicht universelle Modelle die stabilsten Ergebnisse, sondern spezialisierte Konfigurationen für das Kontextvolumen und die Art der Retrieval-Aufgabe.
Meine Empfehlung: deepseek-ai/deepseek-v4-flash für die meisten RAG-Szenarien und nvidia/nemotron-3-ultra-500b für extreme Long-Context-Aufgaben.
Schlüsselparameter, die ich bei der Arbeit mit RAG berücksichtige:
- Kontextgröße: DeepSeek V4 Flash – bis zu 1 Mio. Token; Nemotron Ultra – bis zu 10 Mio. Token, was derzeit einer der größten Werte unter den Open-Weight-Modellen ist
- Qualität bei langem Kontext: Nemotron 3 Super zeigt 91,75 % auf RULER @ 1M ctx gegenüber 22,30 % bei GPT-OSS-120B, was die Stabilität der Antworten in langen Dokumenten erheblich beeinflusst
- Retrieval-Geschwindigkeit: DeepSeek Flash-Versionen bieten normalerweise eine bessere Balance zwischen Latenz/Qualität für Standard-RAG-Pipelines, insbesondere bei einer großen Anzahl paralleler Anfragen
# RAG-Pipeline — DeepSeek V4 Flash mit Dokumenten
def query_rag(user_question: str, retrieved_chunks: list[str]) -> str:
context = "\n\n---\n\n".join(retrieved_chunks)
response = client.chat.completions.create(
model="deepseek-ai/deepseek-v4-flash",
messages=[
{
"role": "system",
"content": (
"Answer questions using ONLY the provided context. "
"If the answer is not in the context, say so explicitly. "
"Always cite the relevant passage."
)
},
{
"role": "user",
"content": f"Context:\n{context}\n\nQuestion: {user_question}"
}
],
temperature=0.0,
max_tokens=1024
)
return response.choices[0].message.content
# Für extrem lange Dokumente — Nemotron Ultra (10M ctx)
def query_giant_document(document: str, question: str) -> str:
response = client.chat.completions.create(
model="nvidia/nemotron-3-ultra-500b",
messages=[
{
"role": "system",
"content": "Analyze the entire document carefully before answering."
},
{
"role": "user",
"content": f"Document:\n{document}\n\nQuestion: {question}"
}
],
temperature=0.0,
max_tokens=2048
)
return response.choices[0].message.content
Auswahltabelle für RAG
| Kontextgröße |
Empfohlenes Modell |
Grund |
| Bis zu 128K Token |
deepseek-ai/deepseek-v4-flash |
Geschwindigkeit + Genauigkeit + Ersparnis |
| 128K — 1M Token |
moonshotai/kimi-k2.5 oder deepseek-ai/deepseek-v4 |
Optimiert für Long-Context-RAG |
| Über 1M Token |
nvidia/nemotron-3-ultra-500b |
10M ctx, 91,75 % RULER-Genauigkeit |
Aufgabe 4 — Multi-Agenten-Orchestrierung
Für Multi-Agenten-Systeme ist der Schlüsselparameter nicht nur die Qualität einer einzelnen Anfrage, sondern der Durchsatz bei parallelen Sitzungen und die Zuverlässigkeit des Tool-Aufrufs.
Nemotron 3 Super verwendet eine hybride Mamba-Transformer MoE-Architektur. Im Vergleich zu dichten Modellen bietet dies einen 5-mal höheren Inferenz-Durchsatz auf NVIDIA-Hardware bei gleichzeitigen Agenten-Sitzungen – dank der Tatsache, dass MoE nur einen Teil der Parameter pro Token aktiviert.
Für spekulatives Dekodieren: Nemotron 3 Super erreicht eine durchschnittliche Akzeptanzlänge von 3,45 Token pro Verifizierungsschritt gegenüber 2,70 bei DeepSeek-R1 – was zu einer Beschleunigung um das bis zu 3-fache führt, ohne ein separates Entwurfsmodell.
import asyncio
from openai import AsyncOpenAI
async_client = AsyncOpenAI(
api_key="nvapi-your-key",
base_url="https://integrate.api.nvidia.com/v1"
)
# Paralleler Start spezialisierter Agenten
async def run_agent(role: str, model: str, task: str) -> dict:
response = await async_client.chat.completions.create(
model=model,
messages=[{"role": "system", "content": f"You are a specialist in {role}."},
{"role": "user", "content": task}
],
temperature=0.1,
max_tokens=1024
)
return {
"role": role,
"model": model,
"result": response.choices[0].message.content
}
async def multi_agent_pipeline(user_task: str) -> dict:
# Definieren spezialisierter Agenten – jeder erhält das optimale Modell
agents = [
("planning", "nvidia/nemotron-3-super-120b", f"Plan this task: {user_task}"),
("coding", "moonshotai/kimi-k2.6", f"Write code for: {user_task}"),
("retrieval", "deepseek-ai/deepseek-v4-flash", f"Find relevant info about: {user_task}"),
("summarizer", "google/gemma-4-31b-it", f"Summarize results for: {user_task}"),
]
# Paralleler Start – spart Zeit
results = await asyncio.gather(*[
run_agent(role, model, task)
for role, model, task in agents
])
return {r["role"]: r["result"] for r in results}
# Start
results = asyncio.run(multi_agent_pipeline(
"Analyze our Q3 sales data and generate a board presentation"
))
Ich achte auf die architektonische Entscheidung: Jeder Agent im System erhält ein für seine Rolle optimales Modell. Zum Beispiel verwende ich für die Zusammenfassungsaufgabe ein günstigeres Gemma anstelle von Nemotron – da für eine einfache Zusammenfassung der Qualitätsunterschied minimal ist, während der Unterschied bei Kosten und Latenz erheblich ist.
Aufgabe 5 — Mehrsprachige Aufgaben
Wenn Ihr Produkt eine Zielgruppe in mehreren Sprachen bedient, hat die Wahl des Modells erheblichen Einfluss auf die Qualität.
Für CJK (Chinesisch, Japanisch, Koreanisch): qwen/qwen3-32b oder zhipuai/glm-5.1 – Qwen und GLM haben native Unterstützung für Chinesisch, die Modelle von Meta oder NVIDIA weit übertrifft.
Für slawische Sprachen und allgemeine Mehrsprachigkeit: deepseek-ai/deepseek-v4-flash – zeigt gute Ergebnisse in den meisten europäischen Sprachen.
Für multimodale Mehrsprachigkeit (Text + Bilder + Audio): nvidia/nemotron-3-nano-omni – ein 30B MoE-Modell, das am 28. April 2026 veröffentlicht wurde und Text, Bilder, Video und Audio über eine einzige Architektur unterstützt.
# Mehrsprachige Pipeline mit automatischer Modellauswahl
LANGUAGE_MODEL_MAP = {
"zh": "zhipuai/glm-4.7", # Chinesisch – GLM ist am besten
"ja": "qwen/qwen3-32b", # Japanisch – Qwen ist stärker
"ko": "qwen/qwen3-32b", # Koreanisch
"uk": "deepseek-ai/deepseek-v4", # Ukrainisch
"ru": "deepseek-ai/deepseek-v4", # Russisch
"en": "deepseek-ai/deepseek-v4-flash", # Englisch – Flash reicht aus
"default": "deepseek-ai/deepseek-v4"
}
def multilingual_query(text: str, lang: str) -> str:
model = LANGUAGE_MODEL_MAP.get(lang, LANGUAGE_MODEL_MAP["default"])
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": text}],
temperature=0.3,
max_tokens=1024
)
return response.choices[0].message.content
Aufgabe 6 — Strukturierte Ausgabe und Funktionsaufrufe
In meiner Praxis stelle ich oft fest, dass zuverlässige strukturierte Ausgaben (JSON nach Schema) und Funktionsaufrufe kritische Komponenten für produktionsreife Agentensysteme sind. Nicht alle Modelle bewältigen dies gleich gut, insbesondere wenn es um komplexe Schemata oder verschachtelte Werkzeuge geht.
Mehr Details zur Funktionsweise von Tool-Nutzung, JSON-Schema und dessen Verbindung zu RAG habe ich hier behandelt: Tool-Nutzung vs. Funktionsaufrufe und RAG.
Modelle mit bestätigter Unterstützung für Funktionsaufrufe in NIM: Llama 3.1 70B/405B, Nemotron-3-Super, GLM-4.7, GLM-5.1, Kimi K2.5, Mixtral 8x22B, Qwen 2.5 72B – alle unterstützen das Standard-OpenAI-Tool-Use-Format.
import json
# Funktionsaufrufe — GLM-5.1 oder Nemotron Super
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a city",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "City name"},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "Temperature unit"
}
},
"required": ["city"]
}
}
}
]
response = client.chat.completions.create(
model="zhipuai/glm-5.1", # Oder: nvidia/nemotron-3-super-120b
messages=[
{"role": "user", "content": "What's the weather in Kyiv and Berlin?"}
],
tools=tools,
tool_choice="auto",
temperature=0.0
)
# Überprüfung des Tool-Aufrufs
message = response.choices[0].message
if message.tool_calls:
for tool_call in message.tool_calls:
args = json.loads(tool_call.function.arguments)
print(f"Tool: {tool_call.function.name}, Args: {args}")
Strukturierte JSON-Ausgabe ohne Funktionsaufrufe:
# Erzwingen der JSON-Ausgabe über die Systemaufforderung
response = client.chat.completions.create(
model="zhipuai/glm-5.1",
messages=[
{
"role": "system",
"content": (
"You MUST respond ONLY with valid JSON matching this schema exactly. "
"No explanations, no markdown, no code blocks.\n"
"Schema: {\"sentiment\": \"positive|negative|neutral\", "
"\"score\": 0.0-1.0, \"keywords\": [\"string\"]}"
)
},
{
"role": "user",
"content": "Analyze sentiment: 'The product exceeded all my expectations!'"
}
],
temperature=0.0,
max_tokens=256
)
# IMMER die Ausgabe validieren
try:
result = json.loads(response.choices[0].message.content)
except json.JSONDecodeError:
# Fallback-Logik bei fehlerhaftem JSON
print("Model returned invalid JSON, retrying with stricter prompt...")
Praxis: Wie man Modelle ohne Refactoring wechselt
Der effektivste Ansatz ist ein zentralisiertes Konfigurationsobjekt, das die Modellauswahl von der Geschäftslogik trennt:
from dataclasses import dataclass
from openai import OpenAI
from typing import Optional
@dataclass
class ModelConfig:
model_id: str
temperature: float = 0.1
max_tokens: int = 1024
supports_tools: bool = True
context_window: int = 128_000
# Zentralisierte Konfiguration – ändern Sie sie hier, nicht im Code
MODELS = {
"coding_simple": ModelConfig("deepseek-ai/deepseek-v4-flash", temperature=0.0),
"coding_complex": ModelConfig("moonshotai/kimi-k2.6", temperature=0.1, max_tokens=4096),
"coding_agent": ModelConfig("nvidia/nemotron-3-super-120b", temperature=0.15, max_tokens=8192),
"reasoning": ModelConfig("deepseek-ai/deepseek-v4-pro", temperature=0.0, max_tokens=4096),
"rag_standard": ModelConfig("deepseek-ai/deepseek-v4-flash", temperature=0.0),
"rag_longcontext": ModelConfig("nvidia/nemotron-3-ultra-500b", temperature=0.0, context_window=10_000_000),
"multilingual": ModelConfig("deepseek-ai/deepseek-v4", temperature=0.3),
"structured": ModelConfig("zhipuai/glm-5.1", temperature=0.0),
"summarizer": ModelConfig("google/gemma-4-31b-it", temperature=0.3, max_tokens=512),
}
class NIMClient:
def __init__(self, api_key: str):
self.client = OpenAI(
api_key=api_key,
base_url="https://integrate.api.nvidia.com/v1"
)
def query(
self,
task: str,
messages: list[dict],
config_key: str = "coding_simple",
tools: Optional[list] = None
) -> str:
cfg = MODELS[config_key]
kwargs = {
"model": cfg.model_id,
"messages": messages,
"temperature": cfg.temperature,
"max_tokens": cfg.max_tokens,
}
if tools and cfg.supports_tools:
kwargs["tools"] = tools
kwargs["tool_choice"] = "auto"
response = self.client.chat.completions.create(**kwargs)
return response.choices[0].message.content
# Verwendung – Geschäftslogik kennt keine spezifischen Modelle
nim = NIMClient(api_key="nvapi-ihr-schlüssel")
# Um das Modell zu ändern, ändern Sie einfach den config_key
result = nim.query(
task="coding",
messages=[{"role": "user", "content": "Schreibe einen Quicksort in Python"}],
config_key="coding_simple" # Ändern Sie zu "coding_complex" für komplexere Aufgaben
)
Entscheidungsbaum: Welches Modell soll gewählt werden
Welche Aufgabe?
│
├── CODING
│ ├── Einfacher Snippet / Funktion
│ │ └── deepseek-ai/deepseek-v4-flash ✓ schnell, günstig
│ ├── Multi-Datei / Refactoring
│ │ └── moonshotai/kimi-k2.6 ✓ langer Kontext
│ └── Autonomer Agent (SWE-Bench-Klasse)
│ └── nvidia/nemotron-3-super-120b ✓ höchster Durchsatz
│
├── REASONING / MATH
│ ├── Logik, Coding Reasoning
│ │ └── deepseek-ai/deepseek-v4-pro ✓ CoT Reasoning
│ └── Wissenschaftliche Aufgaben, HLE-Benchmark
│ └── qwen/qwen3.5-397b ✓ 25.30% HLE
│
├── RAG / LONG CONTEXT
│ ├── Bis zu 128K Token
│ │ └── deepseek-ai/deepseek-v4-flash ✓ schnelle Abfrage
│ ├── Bis zu 1M Token
│ │ └── moonshotai/kimi-k2.5 ✓ optimiert für Long-Ctx
│ └── Über 1M Token
│ └── nvidia/nemotron-3-ultra-500b ✓ 10M ctx, 91.75% RULER
│
├── MULTI-AGENT ORCHESTRATOR
│ └── nvidia/nemotron-3-super-120b ✓ 5x Durchsatz, MoE-Effizienz
│
├── MULTILINGUAL
│ ├── CJK (zh/ja/ko)
│ │ └── qwen/qwen3-32b oder zhipuai/glm-4.7
│ └── Europäische Sprachen
│ └── deepseek-ai/deepseek-v4
│
├── STRUCTURED OUTPUT / FUNCTION CALLING
│ └── zhipuai/glm-5.1 oder nvidia/nemotron-3-super-120b
│
└── SUMMARIZATION (budget-sensitiv)
└── google/gemma-4-31b-it ✓ am günstigsten für einfache Aufgaben
Fallstricke: Modellspezifisches Verhalten
Was nicht in der Dokumentation steht, aber in der Produktion entscheidend ist:
1. Denkmodelle erfordern besondere Handhabung
Kimi K2-Thinking und DeepSeek V4-Pro im Reasoning-Modus sind "Denkmodelle". Sie generieren eine interne Chain-of-Thought vor der Antwort. Laut praktischer Erfahrung von Entwicklern kann es zu API-Fehlern kommen, wenn man von einem Denkmodell zu einem normalen wechselt, ohne die Parameter anzupassen.
# Für Denkmodelle – übergeben Sie KEIN reasoning_budget mit normalen Modellen
# Für Nicht-Denkmodelle – setzen Sie NIM_ENABLE_THINKING=false, falls es Konflikte gibt
# Überprüfung vor der Anfrage
THINKING_MODELS = {
"moonshotai/kimi-k2-thinking",
"deepseek-ai/deepseek-v4-pro", # im Reasoning-Modus
}
def safe_query(model: str, messages: list, **kwargs) -> str:
if model in THINKING_MODELS:
kwargs.setdefault("temperature", 0.0)
# Fügen Sie NICHT stream=True für Denkmodelle ohne zusätzliche Verarbeitung hinzu
return client.chat.completions.create(
model=model, messages=messages, **kwargs
).choices[0].message.content
2. GLM/Qwen erfordern spezifische Flags für Reasoning-Tags
# GLM und Qwen 3.5 erfordern --reasoning-format none
# wenn keine <think>-Tags in der Antwort benötigt werden
# Über die API wird dies durch den System-Prompt gelöst:
system_no_thinking = (
"Respond directly without showing your reasoning process. "
"Do not use <think> tags."
)
3. Llama 4 verwendet ein Pythonic Tool-Format
Llama 4 Scout hat ein von OpenAI abweichendes Tool-Call-Format (Pythonic Syntax). Wenn Ihr Parser einen Standard-JSON-Tool-Call erwartet, kann er beim Wechsel zu Llama 4 abstürzen.
4. Rate Limit 40 RPM und Agenten-Workflows
Bei Multi-Step-Agenten kann eine "logische Anfrage" 5-10 API-Aufrufe generieren. 40 RPM = maximal ca. 4-8 tatsächliche Benutzeraufgaben pro Minute für einen Agenten.
import time
import functools
def rate_limited(max_per_minute: int = 35): # Wir lassen einen Puffer von 40
min_interval = 60.0 / max_per_minute
last_called = [0.0]
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
elapsed = time.time() - last_called[0]
wait = min_interval - elapsed
if wait > 0:
time.sleep(wait)
result = func(*args, **kwargs)
last_called[0] = time.time()
return result
return wrapper
return decorator
@rate_limited(max_per_minute=35)
def api_call(messages, model):
return client.chat.completions.create(
model=model, messages=messages, max_tokens=1024
)
5. Zusammenfassende Tabelle modellspezifischer Verhaltensweisen
| Modell / Familie |
Besonderheit |
Was zu tun ist |
| Kimi K2-Thinking, DeepSeek V4-Pro |
Denkmodell – interne CoT |
temperature=0.0, nicht mit Nicht-Denk-Konfigurationen mischen |
| GLM-5, Qwen 3.5 |
Standardmäßig werden <think>-Tags ausgegeben |
Fügen Sie "Do not show thinking" zum System-Prompt hinzu |
| Llama 4 Scout/Maverick |
Pythonic Tool-Call-Format |
Separater Parser oder Llama 3.3 70B für Tool-Nutzung verwenden |
| Nemotron 3 Super/Ultra |
MoE – geringer Durchsatz bei kleinen Batches |
Optimal bei parallelen Anfragen, nicht Single-Shot |
| Gemma 4 |
Benötigt Build b8665+ für lokale Ausführung |
Bei lokaler Bereitstellung Version prüfen |
| Alle Modelle (Free Tier) |
40 RPM, 1000 Credits bei Registrierung |
Rate Limiting + exponentielles Backoff für 429-Fehler |
Fazit
Ich formuliere es für mich selbst so: Die Wahl des richtigen Modells in NVIDIA NIM ist keine Suche nach dem "besten" Modell, sondern eher die richtige Dekomposition von Aufgaben und die Zuweisung eines spezialisierten Modells für jede Rolle im System.
Drei Schlüsselprinzipien, die ich in der Praxis anwende:
- Ich verwende kein schweres Modell, wo ein leichtes ausreicht. Gemma 4 für die Zusammenfassung anstelle von Nemotron Ultra ist kein Kompromiss, sondern eine architektonisch korrekte Entscheidung.
- Ich trenne die Modellauswahl von der Geschäftslogik. Ein zentralisiertes ModelConfig ermöglicht es mir, das Modell zu ändern, ohne den Hauptcode des Systems neu zu schreiben.
- Ich berücksichtige modellspezifisches Verhalten von Anfang an. Denkmodelle, verschiedene Tool-Calling-Formate, Unterschiede im Tokenizer – das sind Dinge, die in der Produktion unweigerlich auftreten, und es ist besser, sie von vornherein in die Architektur einzubauen.
Quellen