Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions components/icons/providers/abstract.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import React from 'react'

// Brand mark from https://abstract.inc/favicon.svg
export default function AbstractIcon({ className, ...props }: React.SVGProps<SVGSVGElement>) {
return (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 32 32"
className={className}
aria-hidden="true"
{...props}
>
<path
fill="currentColor"
fillRule="evenodd"
d="M16.0 3.0L16.4 3.0L16.7 3.0L17.0 3.0L17.3 3.0L17.7 3.1L18.0 3.1L18.3 3.2L18.6 3.3L18.9 3.4L19.2 3.6L19.5 3.7L19.8 3.9L20.0 4.0L20.3 4.2L20.6 4.4L20.8 4.6L21.0 4.9L21.3 5.1L21.5 5.3L21.7 5.6L21.9 5.8L22.1 6.1L22.3 6.4L22.4 6.6L22.6 6.9L22.8 7.2L22.9 7.5L23.0 7.8L23.2 8.1L23.3 8.4L23.4 8.7L23.6 9.0L23.7 9.3L23.8 9.6L23.9 9.9L24.0 10.2L24.1 10.5L24.1 10.8L24.2 11.1L24.3 11.4L24.3 11.8L24.4 12.1L24.5 12.4L24.5 12.7L24.5 13.0L24.6 13.4L24.6 13.7L24.6 14.0L24.7 14.3L24.7 14.6L24.7 15.0L24.7 15.3L24.7 15.6L24.7 15.9L24.7 16.3L24.8 16.6L24.8 16.9L24.8 17.2L24.8 17.6L24.7 17.9L24.6 18.1L24.4 18.3L24.1 18.3L23.8 18.3L23.5 18.3L23.2 18.3L22.9 18.3L22.5 18.3L22.2 18.3L21.9 18.3L21.6 18.3L21.2 18.3L20.9 18.3L20.6 18.3L20.3 18.4L20.2 18.6L20.1 18.8L20.1 19.2L20.0 19.5L20.0 19.8L20.0 20.1L20.0 20.5L19.9 20.8L19.9 21.1L19.9 21.4L19.8 21.7L19.8 22.1L19.7 22.4L19.7 22.7L19.6 23.0L19.5 23.3L19.4 23.6L19.4 24.0L19.3 24.3L19.2 24.6L19.1 24.9L19.0 25.2L18.9 25.5L18.7 25.8L18.6 26.1L18.4 26.4L18.3 26.6L18.1 26.9L17.9 27.2L17.7 27.4L17.5 27.7L17.3 27.9L17.0 28.1L16.8 28.3L16.5 28.5L16.2 28.6L15.9 28.8L15.6 28.9L15.3 28.9L15.0 29.0L14.7 29.0L14.3 29.0L14.0 28.9L13.7 28.9L13.4 28.8L13.1 28.7L12.8 28.5L12.5 28.4L12.2 28.2L12.0 28.0L11.7 27.9L11.5 27.7L11.2 27.4L11.0 27.2L10.8 27.0L10.5 26.7L10.3 26.5L10.1 26.2L9.9 26.0L9.7 25.7L9.6 25.5L9.4 25.2L9.2 24.9L9.1 24.6L8.9 24.3L8.8 24.0L8.6 23.7L8.5 23.4L8.4 23.1L8.3 22.8L8.2 22.5L8.1 22.2L8.0 21.9L7.9 21.6L7.8 21.3L7.8 21.0L7.7 20.7L7.6 20.4L7.6 20.0L7.5 19.7L7.5 19.4L7.4 19.1L7.4 18.8L7.4 18.4L7.3 18.1L7.3 17.8L7.3 17.5L7.3 17.1L7.3 16.8L7.2 16.5L7.2 16.2L7.2 15.8L7.3 15.5L7.3 15.2L7.3 14.9L7.3 14.6L7.3 14.2L7.4 13.9L7.4 13.6L7.4 13.3L7.5 12.9L7.5 12.6L7.6 12.3L7.6 12.0L7.7 11.7L7.8 11.4L7.8 11.0L7.9 10.7L8.0 10.4L8.1 10.1L8.2 9.8L8.3 9.5L8.4 9.2L8.6 8.9L8.7 8.6L8.8 8.3L9.0 8.0L9.1 7.7L9.3 7.5L9.5 7.2L9.6 6.9L9.8 6.6L10.0 6.4L10.2 6.1L10.4 5.9L10.6 5.7L10.9 5.4L11.1 5.2L11.4 5.0L11.6 4.8L11.9 4.6L12.1 4.4L12.4 4.2L12.7 4.1L13.0 3.9L13.3 3.8L13.6 3.6L13.8 3.5L14.2 3.4L14.5 3.3L14.8 3.2L15.1 3.2L15.4 3.1L15.7 3.0ZM16.9 11.0L16.7 11.0L16.5 11.1L16.2 11.1L16.0 11.2L15.8 11.4L15.6 11.5L15.4 11.7L15.2 11.8L15.1 12.0L15.0 12.2L14.9 12.5L14.8 12.7L14.7 12.9L14.7 13.2L14.7 13.4L14.7 13.6L14.7 13.9L14.7 14.1L14.8 14.4L14.9 14.6L15.0 14.8L15.2 15.0L15.3 15.2L15.5 15.4L15.7 15.5L15.9 15.7L16.1 15.8L16.3 15.9L16.6 15.9L16.8 16.0L17.0 16.0L17.3 16.0L17.5 16.0L17.8 15.9L18.0 15.8L18.2 15.7L18.4 15.6L18.6 15.5L18.8 15.3L19.0 15.1L19.1 14.9L19.3 14.7L19.4 14.5L19.4 14.3L19.5 14.0L19.6 13.8L19.6 13.6L19.6 13.3L19.5 13.1L19.5 12.8L19.4 12.6L19.3 12.4L19.2 12.2L19.1 12.0L18.9 11.8L18.7 11.6L18.6 11.4L18.3 11.3L18.1 11.2L17.9 11.1L17.7 11.0L17.4 11.0L17.2 11.0Z"
/>
</svg>
)
}
1 change: 1 addition & 0 deletions components/icons/providers/index.ts
Original file line number Diff line number Diff line change
@@ -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'
Expand Down
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"title": "AI Endpoints",
"icon": "Plug",
"pages": [
"abstract",
"anyscale",
"apipie",
"azure",
Expand Down
2 changes: 2 additions & 0 deletions lib/icons.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { ReactElement } from 'react'
import {
AbstractIcon,
AnthropicIcon,
AnyscaleIcon,
ApipieIcon,
Expand Down Expand Up @@ -236,6 +237,7 @@ const icons: Record<string, ReactElement> = {
UserPlus: <UserPlus />,
Settings2: <Settings2 />,
// Brand icons (Simple Icons paths, local components)
Abstract: <AbstractIcon />,
Anthropic: <AnthropicIcon />,
Anyscale: <AnyscaleIcon />,
Apipie: <ApipieIcon />,
Expand Down