ワンクリックで
nim-model-testing
Test multiple NIM models against live API keys to determine which models are available, their latency, and token usage
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Test multiple NIM models against live API keys to determine which models are available, their latency, and token usage
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Provide an accessible, form-based local key setup flow that writes to .env without command-line editing, with safety locks and zero secret leakage
Add Bible story chapters with canon anchors and a sanitizer layer that cleans raw backend output for non-technical viewers
Enforce strict source-boundary labeling in simulations that mix canon/source-grounded content with generated behavior
Build a mobile-first, accessibility-optimized viewer page for non-technical audiences to watch agent-based simulations without seeing admin details, secrets, or technical controls
Safe staged rollout pattern for Bible-inspired agent simulations: MVP → provenance → provider routing → failure hardening → dry-run → single live call → chapter framework → family viewer → story polish → visual story viewer
Implement real LLM provider request-building with dry-run mode that validates payloads, prompts, and secrets without making network calls
| name | nim-model-testing |
| description | Test multiple NIM models against live API keys to determine which models are available, their latency, and token usage |
| source | auto-skill |
| extracted_at | 2026-05-30T06:33:38.348Z |
When API keys are configured for an LLM provider (NVIDIA NIM), test multiple models to determine which are available on the user's tier, their latency, and token costs. This is done via a live API call per model with a minimal prompt.
Do not guess model IDs. NVIDIA's NIM catalog has specific naming conventions that differ from common model names. Always fetch the live catalog first:
curl -s -H "Authorization: Bearer $NVIDIA_NIM_KEY_ADAM" \
https://integrate.api.nvidia.com/v1/models | python -c "
import sys,json
data=json.load(sys.stdin)
models=data.get('data',[])
print(f'Total models: {len(models)}')
for m in sorted(models, key=lambda x: x['id']):
print(m['id'])
"
This returns the actual available models (e.g., 118 models). Key naming patterns discovered:
z-ai/glm-5.1 (not zhipuai/glm-4-9b)minimaxai/minimax-m2.7 (not minimax/minimax-m1)stepfun-ai/step-3.5-flash (not stepfun/step-1)openai/gpt-oss-120b (correct)qwen/qwen3.5-122b-a10b (not qwen/qwen2.5-72b-instruct)After fetching the catalog, filter to chat/instruct models and build your test list:
NIM_MODELS_TO_TEST = [
# Meta Llama
"meta/llama-3.1-8b-instruct",
"meta/llama-3.1-70b-instruct",
"meta/llama-3.3-70b-instruct",
"meta/llama-4-maverick-17b-128e-instruct",
# Mistral / Mixtral
"mistralai/mixtral-8x7b-instruct-v0.1",
"mistralai/mistral-medium-3.5-128b",
"mistralai/mistral-small-4-119b-2603",
"mistralai/mistral-large-3-675b-instruct-2512",
"mistralai/mistral-nemotron",
# NVIDIA Nemotron
"nvidia/nemotron-3-super-120b-a12b",
"nvidia/llama-3.3-nemotron-super-49b-v1",
# Qwen
"qwen/qwen3.5-122b-a10b",
"qwen/qwen3-coder-480b-a35b-instruct",
"qwen/qwen3-next-80b-a3b-instruct",
# GLM (Zhipu AI)
"z-ai/glm-5.1",
# GPT-OSS (OpenAI)
"openai/gpt-oss-120b",
"openai/gpt-oss-20b",
# MiniMax
"minimaxai/minimax-m2.7",
# StepFun
"stepfun-ai/step-3.5-flash",
"stepfun-ai/step-3.7-flash",
# DeepSeek
"deepseek-ai/deepseek-v4-flash",
"deepseek-ai/deepseek-v4-pro",
# Microsoft Phi
"microsoft/phi-3.5-moe-instruct",
"microsoft/phi-4-mini-instruct",
# Google Gemma
"google/gemma-3-12b-it",
"google/gemma-4-31b-it",
# Writer Palmyra
"writer/palmyra-creative-122b",
# Moonshot
"moonshotai/kimi-k2.6",
# ByteDance
"bytedance/seed-oss-36b-instruct",
]
def test_models_live(agent: str = "Adam") -> list[dict]:
key_env = "NVIDIA_NIM_KEY_ADAM" if agent == "Adam" else "NVIDIA_NIM_KEY_EVE"
api_key = os.environ.get(key_env, "")
if not api_key:
return [{"model": "all", "status": "error", "message": f"No API key for {agent}"}]
results = []
base_url = "https://integrate.api.nvidia.com/v1"
for model in NIM_MODELS_TO_TEST:
result = {
"model": model,
"status": "testing",
"latency_ms": None,
"prompt_tokens": None,
"completion_tokens": None,
"total_tokens": None,
"error": None,
}
try:
payload = {
"model": model,
"messages": [{"role": "user", "content": "Reply with exactly: OK"}],
"temperature": 0.1,
"max_tokens": 10,
}
url = f"{base_url}/chat/completions"
data = json.dumps(payload).encode("utf-8")
req = urllib.request.Request(url, data=data, method="POST")
req.add_header("Content-Type", "application/json")
req.add_header("Authorization", f"Bearer {api_key}")
start = time.monotonic()
with urllib.request.urlopen(req, timeout=30) as response:
raw = response.read().decode("utf-8")
api_result = json.loads(raw)
elapsed_ms = round((time.monotonic() - start) * 1000)
usage = api_result.get("usage", {})
choices = api_result.get("choices", [])
result["status"] = "success"
result["latency_ms"] = elapsed_ms
result["prompt_tokens"] = usage.get("prompt_tokens")
result["completion_tokens"] = usage.get("completion_tokens")
result["total_tokens"] = usage.get("total_tokens")
result["response_preview"] = choices[0].get("message", {}).get("content", "")[:50] if choices else ""
except urllib.error.HTTPError as e:
result["status"] = "http_error"
result["error"] = f"HTTP {e.code}: {e.reason}"
except urllib.error.URLError as e:
result["status"] = "connection_error"
result["error"] = str(e.reason)
except Exception as e:
result["status"] = "error"
result["error"] = f"{type(e).__name__}"
results.append(result)
return results
@app.get("/api/test-models")
def get_test_models(agent: str = "Adam"):
"""Test multiple NIM models with live API calls. Takes ~30s per model."""
return {"agent": agent, "results": test_models_live(agent)}
frontend/test-models.html — requirements:
"Reply with exactly: OK" keeps token cost low0.1 for deterministic responses10 to minimize costkey_present: true/falseWorking models (on a standard NIM free tier):
meta/llama-3.1-8b-instruct — ~400ms, ~42 tokensmeta/llama-3.3-70b-instruct — ~300-500ms, ~42 tokensmistralai/mixtral-8x7b-instruct-v0.1 — ~500ms, ~24 tokensmeta/llama-3.1-70b-instruct — ~400ms-13s, ~42 tokens404 models (not available on free tier):
meta/llama-3.1-405b-instructmistralai/mistral-large-2-instructgoogle/gemma-2-9b-itgoogle/gemma-2-27b-itnvidia/nemotron-4-340b-instructqwen/qwen2.5-72b-instruct