diff --git a/components/icons/providers/abstract.tsx b/components/icons/providers/abstract.tsx new file mode 100644 index 0000000000..974c07dbe6 --- /dev/null +++ b/components/icons/providers/abstract.tsx @@ -0,0 +1,20 @@ +import React from 'react' + +// Brand mark from https://abstract.inc/favicon.svg +export default function AbstractIcon({ className, ...props }: React.SVGProps) { + return ( + + ) +} diff --git a/components/icons/providers/index.ts b/components/icons/providers/index.ts index e287de290d..81cbeb153b 100644 --- a/components/icons/providers/index.ts +++ b/components/icons/providers/index.ts @@ -1,3 +1,4 @@ +export { default as AbstractIcon } from './abstract' 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/abstract.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/abstract.mdx new file mode 100644 index 0000000000..600c19752d --- /dev/null +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/abstract.mdx @@ -0,0 +1,42 @@ +--- +title: Abstract +icon: Abstract +description: Configure Abstract as a custom endpoint in LibreChat. +--- + +Abstract serves open-weight models (GLM-5.3, DeepSeek-V4-Flash, Kimi-K3) through the OpenAI-compatible Chat Completions API (`/v1/chat/completions`), which you can add to LibreChat as a custom endpoint. + +## Get an API key + +Create a key at [platform.abstract.inc/keys](https://platform.abstract.inc/keys). Add it to your `.env` file: + +```bash filename=".env" +ABSTRACT_API_KEY=your-api-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: "Abstract" + apiKey: "${ABSTRACT_API_KEY}" + baseURL: "https://api.abstract.inc/v1" + models: + default: + - "glm-5.3:superfast" + - "deepseek-v4-flash:superfast" + - "kimi-k3:superfast" + fetch: false + titleConvo: true + titleModel: "deepseek-v4-flash:superfast" + modelDisplayLabel: "Abstract" +``` + +## Notes + +- Replies stream over Chat Completions, with token usage in the final chunk. +- Keep `fetch: false`. Abstract's `/v1/models` also lists background (`:async`) models, which send their reply only once it is complete. +- The models accept text input only. See the [Abstract docs](https://abstract.inc/docs) for limits and pricing. diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/meta.json b/content/docs/configuration/librechat_yaml/ai_endpoints/meta.json index c46fe3dfdd..4e515f491d 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": [ + "abstract", "anyscale", "apipie", "azure", diff --git a/lib/icons.tsx b/lib/icons.tsx index 047336d108..bdfc3e000b 100644 --- a/lib/icons.tsx +++ b/lib/icons.tsx @@ -1,5 +1,6 @@ import type { ReactElement } from 'react' import { + AbstractIcon, AnthropicIcon, AnyscaleIcon, ApipieIcon, @@ -236,6 +237,7 @@ const icons: Record = { UserPlus: , Settings2: , // Brand icons (Simple Icons paths, local components) + Abstract: , Anthropic: , Anyscale: , Apipie: ,