diff --git a/components/icons/providers/aistupidlevel.tsx b/components/icons/providers/aistupidlevel.tsx new file mode 100644 index 0000000000..ee83f2056f --- /dev/null +++ b/components/icons/providers/aistupidlevel.tsx @@ -0,0 +1,20 @@ +import React from 'react' + +// Monochrome silhouette of the ASL wordmark (https://aistupidlevel.info) +export default function AIStupidLevelIcon({ className, ...props }: React.SVGProps) { + return ( + + ) +} diff --git a/components/icons/providers/index.ts b/components/icons/providers/index.ts index e287de290d..9d01e5207a 100644 --- a/components/icons/providers/index.ts +++ b/components/icons/providers/index.ts @@ -1,3 +1,4 @@ +export { default as AIStupidLevelIcon } from './aistupidlevel' export { default as AnthropicIcon } from './anthropic' export { default as AnyscaleIcon } from './anyscale' export { default as ApipieIcon } from './apipie' diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/aistupidlevel.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/aistupidlevel.mdx new file mode 100644 index 0000000000..f444b50af2 --- /dev/null +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/aistupidlevel.mdx @@ -0,0 +1,41 @@ +--- +title: AI Stupid Level +icon: AIStupidLevel +description: Configure the AI Stupid Level Smart Router as a custom endpoint in LibreChat. +--- + +AI Stupid Level runs coding, reasoning and tool-use benchmarks on the major models continuously. Its Smart Router is an OpenAI-compatible endpoint that sends each request to the model that currently scores best for the kind of work, using your own provider keys (OpenAI, Anthropic, Google, DeepSeek, Kimi, GLM). + +## Get an API key + +Create a router key at [aistupidlevel.info/router/keys](https://aistupidlevel.info/router/keys) and add at least one provider key to your account under [Providers](https://aistupidlevel.info/router/providers). Add the router key to your `.env` file: + +```bash filename=".env" +ASL_ROUTER_KEY=your-router-key +``` + +## Configuration + +Add the endpoint to the `custom` list under `endpoints` in your `librechat.yaml`. If your file already has an `endpoints.custom` list, paste only the `- name:` entry into it, keeping the same indentation: + +```yaml filename="librechat.yaml" +endpoints: + custom: + - name: "AI Stupid Level" + apiKey: "${ASL_ROUTER_KEY}" + baseURL: "https://aistupidlevel.info/v1" + models: + default: ["auto-coding", "auto-reasoning", "auto-tooling", "auto-best", "auto-value"] + fetch: true + titleConvo: true + titleModel: "auto-fastest-quality" + modelDisplayLabel: "AI Stupid Level" + iconURL: "https://aistupidlevel.info/apple-touch-icon.png" +``` + +## Notes + +- Model IDs are routing modes: `auto-coding`, `auto-reasoning` and `auto-tooling` pick the model with the top score on that benchmark, `auto-best` the highest combined score, and `auto-value` the most benchmark points per measured dollar among near-top models. Any real model ID (for example `claude-opus-5-5`) pins that model. With `fetch: true`, LibreChat loads the full list from the router. +- Each provider bills its usage to your own provider account. The response header `X-AISM-Model` names the model that answered. +- The router routes text only: requests with image, audio or file content are rejected with `400 unsupported_content`. +- To try the configuration without spending anything, add `headers: { X-ASL-Sandbox: "true" }` to the endpoint. The router then runs its real routing and returns a mock answer. See the [router documentation](https://aistupidlevel.info/router/docs). diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/meta.json b/content/docs/configuration/librechat_yaml/ai_endpoints/meta.json index c46fe3dfdd..baa73a7d80 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/meta.json +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/meta.json @@ -2,6 +2,7 @@ "title": "AI Endpoints", "icon": "Plug", "pages": [ + "aistupidlevel", "anyscale", "apipie", "azure", diff --git a/lib/icons.tsx b/lib/icons.tsx index 047336d108..ec433b0e8f 100644 --- a/lib/icons.tsx +++ b/lib/icons.tsx @@ -1,5 +1,6 @@ import type { ReactElement } from 'react' import { + AIStupidLevelIcon, AnthropicIcon, AnyscaleIcon, ApipieIcon, @@ -236,6 +237,7 @@ const icons: Record = { UserPlus: , Settings2: , // Brand icons (Simple Icons paths, local components) + AIStupidLevel: , Anthropic: , Anyscale: , Apipie: ,