Skip to content

Latest commit

 

History

History
189 lines (150 loc) · 11.3 KB

empiriolabs.md

File metadata and controls

189 lines (150 loc) · 11.3 KB
title EmpirioLabs AI Provider Guide
description EmpirioLabs AI on NeuroLink — OpenAI-compatible Tier-2 catalog provider, default model `glm-5-3` (docs- and roster-verified; not yet live-verified)
keywords empiriolabs, empiriolabs ai, openai-compatible, tier 2, provider setup, glm

EmpirioLabs AI Provider Guide

EmpirioLabs AI is a Tier-2 catalog provider: OpenAI-wire-compatible with no behavioural quirks, so its entire integration is one JSON file (src/lib/providers/catalog/empiriolabs.json) rather than hand-written code. That file is the source of truth for everything on this page.

Verification status: docs- and roster-verified, not yet live-verified. This entry was onboarded credential-free — no API key was created and no chat, streaming or tool-call request was ever sent. Everything below comes from the vendor's own public docs (docs.empiriolabs.ai) and an unauthenticated GET /v1/models call. evidence.liveMatrix is null in the catalog file until someone runs the live capability sweep with a real key (see Live verification).


Key Facts

  • Provider id: empiriolabs
  • Protocol: OpenAI-compatible (/v1/chat/completions) — confirmed on docs.empiriolabs.ai: "Accepts the same request body as the OpenAI Chat Completions API."
  • Base URL: https://api.empiriolabs.ai/v1
  • Default model: glm-5-3 (Zhipu GLM-5.3 — marked is_featured: true on the live roster)
  • Models in catalog: 6 (curated text/chat subset of a 217-model roster that also spans vision, audio, video, image and 3D generation)
  • Streaming: documented as a supported request parameter (stream); not live-probed
  • Tool calling: model-dependent — the roster's own features field marks function_calling on 97 of 217 models, not all of them
  • Structured output: model-dependent per the vendor's docs ("json_schema means strict schema support, json_object means JSON mode only... check via GET /v1/models/{modelId}"); the default model (glm-5-3) documents json_object support, so the provider-level flag is true
  • Structured output + tools together: not declared — no combined probe was possible without a key
  • Embeddings: not supported by this integration (the vendor does list a separate embedding-model family, but NeuroLink's generic OpenAI-compatible catalog provider does not implement embed()/embedMany())
  • Billing: free-tier — pricing page: "$0 to start... No subscription needed", with several models marked "Free" at $0 input/output/cache cost. Getting-started docs also list prepaid credits as a prerequisite for non-free models, so budget for that before heavy use.
  • Key format: keys use the sk-empiriolabs- prefix (documented)

Quick Start

1. Get an API key

  1. Visit: https://platform.empiriolabs.ai and create an account
  2. Create an API key from the dashboard (keys use the sk-empiriolabs- prefix, up to 50 per account)
  3. Selected models (e.g. GLM 4.7 Flash) run at $0 cost; other models draw from prepaid credits topped up via the dashboard Billing page — confirm current pricing before heavy use
  4. Set EMPIRIOLABS_API_KEY in your .env file

2. Configure

export EMPIRIOLABS_API_KEY=sk-empiriolabs-your-api-key
export EMPIRIOLABS_MODEL=glm-5-3      # optional — overrides the default model
export EMPIRIOLABS_BASE_URL=https://api.empiriolabs.ai/v1   # optional — self-hosted or proxy

3. Use it

import { NeuroLink } from "@juspay/neurolink";

const neurolink = new NeuroLink();

const result = await neurolink.generate({
  input: { text: "Explain context windows in one paragraph." },
  provider: "empiriolabs",
  model: "glm-5-3",
});

console.log(result.content);
# CLI
npx @juspay/neurolink generate "Hello" --provider empiriolabs

Per-request credentials work as they do for every provider:

await neurolink.generate({
  input: { text: "Hello" },
  provider: "empiriolabs",
  credentials: { empiriolabs: { apiKey: process.env.EMPIRIOLABS_API_KEY } },
});

Models

Model Context Max out Vision Structured output $/M in · out (cached) Notes
glm-5-3 ⭐ 1M 131,072 no json_object $1.40 / $4.40 ($1.40) Recommended — roster is_featured: true; reasoning, function calling, web search.
glm-5-3-flash 1M 131,072 yes json_object $0.075 / $0.25 ($0.075) Lighter/cheaper sibling; also vision (document_understanding, video_understanding); fallback.
glm-5-2 1M 131,072 no json_object $1.40 / $4.40 ($1.40) Prior GLM generation; fallback.
kimi-k3 1M 131,072 yes json_schema $3.00 / $15.00 ($3.00) Moonshot Kimi K3 — multimodal, agentic coding; strict schema output; fallback.
qwen3-7-max 1M 65,536 no json_schema $2.50 / $7.50 ($2.50) Alibaba flagship reasoning model with code interpreter; lower max output than the GLM family; fallback.
minimax-m2-7-highspeed 200K 32,768 no json_object $0.30 / $1.20 ($0.03) Smallest context/output in this set; lightest/cheapest fallback.

All context, output, pricing and structured-output values above are read directly from the unauthenticated GET https://api.empiriolabs.ai/v1/models response (2026-09-28), not invented or estimated. This 6-model set is a curated subset — the full roster returned 217 ids spanning text, vision, audio, video, image and 3D-generation models; only text/chat-completions models with documented function_calling are catalogued here.

Fallback order when the default is unavailable: glm-5-3-flash → glm-5-2 → kimi-k3 → qwen3-7-max → minimax-m2-7-highspeed.


Verification status

Tier-2 onboarding requires evidence before a provider is accepted, and pnpm run verify:provider-onboarding gates it in CI. This is what the catalog currently records for EmpirioLabs AI:

Probe Result
Roster unauthenticated GET /v1/models, HTTP 200, 217 models, 2026-09-28. No API key was created or used.
Auth rejection Not probed (would require a key). Documented shape only: docs.empiriolabs.ai/authentication states a missing/malformed/unknown token returns 401 Unauthorized.
Wire compatibility Documented only: docs.empiriolabs.ai/compatibility states the endpoint "accepts the same request body as the OpenAI Chat Completions API" and lists messages, model, stream, temperature, max_tokens, response_format as supported.
Live capability sweep Not run. evidence.liveMatrix is null. No chat, streaming, tool-call or structured-output request has been sent to this vendor.

Because no live probe was possible, capabilities.toolsWithStreaming and capabilities.structuredOutputWithTools are conservatively false, and capabilities.tools is "model-dependent" rather than an unqualified true — the roster shows function_calling on 97 of 217 models, not the whole catalog. Whoever runs the live matrix next should re-check these flags against real responses, per Live verification.


Documented quirks worth knowing (not catalog quirks)

  • Implicit system prompt: EmpirioLabs docs say every chat model has a built-in identity message that is prepended automatically when your request has no system/developer role message. Supplying your own system message fully replaces it (no merging). This doesn't require a named catalog quirks entry — it only changes behavior when you omit a system message — but it's worth knowing if a completion reads oddly "in character."
  • response_format is per-model: sending a structured-output format a model doesn't support returns HTTP 400 per the vendor's docs. Check GET /v1/models/{modelId} for a given model's structured_output value (json_schema, json_object, or absent) before relying on it.

Troubleshooting

Symptom Cause Fix
Invalid EmpirioLabs API key EMPIRIOLABS_API_KEY unset or wrong Check the key at https://platform.empiriolabs.ai
401 Unauthorized Token missing, malformed, or not found (per vendor docs) Confirm the header is Authorization: Bearer sk-empiriolabs-...
402 Payment Required (documented, not live-verified) Account has insufficient prepaid credits Top up credits via the dashboard Billing page, or pick a $0 free model
429 Too Many Requests Rate limit exceeded (new accounts: 50 RPM / 2,000,000 TPM) Retry with exponential backoff, or email support@empiriolabs.ai for higher limits
HTTP 400 on response_format The chosen model doesn't support the requested structured-output mode Check GET /v1/models/{modelId} for that model's structured_output value

See also