From 9832269de794b1deb4518685d3e5017a9003f976 Mon Sep 17 00:00:00 2001 From: bagel Date: Sun, 18 Oct 2026 22:43:00 -0700 Subject: [PATCH 1/2] docs: add Abstract custom endpoint provider --- components/icons/providers/abstract.tsx | 20 +++++++++ components/icons/providers/index.ts | 1 + .../librechat_yaml/ai_endpoints/abstract.mdx | 44 +++++++++++++++++++ .../librechat_yaml/ai_endpoints/meta.json | 1 + lib/icons.tsx | 2 + 5 files changed, 68 insertions(+) create mode 100644 components/icons/providers/abstract.tsx create mode 100644 content/docs/configuration/librechat_yaml/ai_endpoints/abstract.mdx 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..ad9c0d699f --- /dev/null +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/abstract.mdx @@ -0,0 +1,44 @@ +--- +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 an OpenAI-compatible Responses API that 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 + addParams: + useResponsesApi: true + titleConvo: true + titleModel: "deepseek-v4-flash:superfast" + modelDisplayLabel: "Abstract" +``` + +## Notes + +- `addParams.useResponsesApi: true` is required: these models are served on the Responses API (`/v1/responses`). +- Keep `fetch: false`. Abstract's `/v1/models` also lists background (`:async`) models, which do not stream chat replies. +- 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: , From 5111fd37e5ad9c75a9e10f8b01ba53a5a9dd397d Mon Sep 17 00:00:00 2001 From: bagel Date: Thu, 22 Oct 2026 23:54:23 -0700 Subject: [PATCH 2/2] docs: use Chat Completions for the Abstract endpoint --- .../librechat_yaml/ai_endpoints/abstract.mdx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/content/docs/configuration/librechat_yaml/ai_endpoints/abstract.mdx b/content/docs/configuration/librechat_yaml/ai_endpoints/abstract.mdx index ad9c0d699f..600c19752d 100644 --- a/content/docs/configuration/librechat_yaml/ai_endpoints/abstract.mdx +++ b/content/docs/configuration/librechat_yaml/ai_endpoints/abstract.mdx @@ -4,7 +4,7 @@ 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 an OpenAI-compatible Responses API that you can add to LibreChat as a custom endpoint. +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 @@ -30,8 +30,6 @@ endpoints: - "deepseek-v4-flash:superfast" - "kimi-k3:superfast" fetch: false - addParams: - useResponsesApi: true titleConvo: true titleModel: "deepseek-v4-flash:superfast" modelDisplayLabel: "Abstract" @@ -39,6 +37,6 @@ endpoints: ## Notes -- `addParams.useResponsesApi: true` is required: these models are served on the Responses API (`/v1/responses`). -- Keep `fetch: false`. Abstract's `/v1/models` also lists background (`:async`) models, which do not stream chat replies. +- 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.