一键导入
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