import { BASE, post, raw, save, short } from "./lib.ts"; const results: Record = {}; const tiny = (model: string) => ({ model, messages: [{ role: "user", content: "Hi" }], max_tokens: 5 }); results.invalidKey = await post("/chat/completions", tiny("mistral-small-latest"), "sk-invalid-key-0000"); console.log("invalid key", results.invalidKey.status, JSON.stringify(results.invalidKey.headers), short(results.invalidKey.body, 400)); const noAuth = await fetch(`${BASE}/chat/completions`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(tiny("mistral-small-latest")) }); results.noAuth = { status: noAuth.status, body: await noAuth.text() }; console.log("no auth", results.noAuth.status, short(results.noAuth.body, 300)); results.invalidKeyModels = await raw("/models", { key: "sk-invalid-key-0000" }); console.log("invalid key GET /models", results.invalidKeyModels.status, short(results.invalidKeyModels.body, 300)); results.unknownModel = await post("/chat/completions", tiny("mistral-99-ultra")); console.log("unknown model", results.unknownModel.status, short(results.unknownModel.body, 400)); for (const slug of ["mistral-small-2506", "mistral-medium-2508", "magistral-medium-2509", "magistral-small-2509", "pixtral-12b-2409", "open-mistral-7b", "mistral-large-2411", "devstral-medium-2507", "mistral-medium-2505", "ministral-8b-2410", "open-mistral-nemo", "pixtral-large-latest", "codestral-2501", "mistral-small-2501", "mistral-saba-latest", "magistral-medium-2507", "mistral-large-2407"]) { const r = await post("/chat/completions", tiny(slug)); results[`retired_${slug}`] = r; console.log(`retired ${slug.padEnd(26)} ${r.status} model=${(r.body as any)?.model ?? ""} ${r.status !== 200 ? short(r.body, 200) : ""}`); } const malformed = await fetch(`${BASE}/chat/completions`, { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Bearer ${process.env.MISTRAL_API_KEY}` }, body: '{"model":"mistral-small-latest","messages":"nope"}', }); results.malformed = { status: malformed.status, body: await malformed.text() }; console.log("messages as string", results.malformed.status, short(results.malformed.body, 400)); results.emptyMessages = await post("/chat/completions", { model: "mistral-small-latest", messages: [] }); console.log("empty messages", results.emptyMessages.status, short(results.emptyMessages.body, 300)); results.maxTokensHuge = await post("/chat/completions", { model: "mistral-small-latest", messages: [{ role: "user", content: "Hi" }], max_tokens: 10_000_000 }); console.log("max_tokens 10M", results.maxTokensHuge.status, short(results.maxTokensHuge.body, 300)); results.badTemp = await post("/chat/completions", { model: "mistral-small-latest", messages: [{ role: "user", content: "Hi" }], max_tokens: 5, temperature: 3 }); console.log("temperature 3", results.badTemp.status, short(results.badTemp.body, 300)); results.badTopP = await post("/chat/completions", { model: "mistral-small-latest", messages: [{ role: "user", content: "Hi" }], max_tokens: 5, top_p: 1.5 }); console.log("top_p 1.5", results.badTopP.status, short(results.badTopP.body, 300)); results.embedOnChat = await post("/chat/completions", tiny("mistral-embed")); console.log("embed model on chat", results.embedOnChat.status, short(results.embedOnChat.body, 300)); results.ocrOnChat = await post("/chat/completions", tiny("mistral-ocr-latest")); console.log("ocr model on chat", results.ocrOnChat.status, short(results.ocrOnChat.body, 300)); save("06-errors.json", results);