Enhanced ChatGPT Clone: Features Agents, MCP, DeepSeek, Anthropic, AWS, OpenAI, Responses API, Azure, Groq, o1, GPT-5, Mistral, OpenRouter, Vertex AI, Gemini, Artifacts, AI model switching, message search, Code Interpreter, langchain, DALL-E-3, OpenAPI Actions, Functions, Secure Multi-User Auth, Presets, open-source for self-hosting. Active. https://librechat.ai/
Find a file
Danny Avila 29473a72db
💫 feat: Config File & Custom Endpoints (#1474)
* WIP(backend/api): custom endpoint

* WIP(frontend/client): custom endpoint

* chore: adjust typedefs for configs

* refactor: use data-provider for cache keys and rename enums and custom endpoint for better clarity and compatibility

* feat: loadYaml utility

* refactor: rename back to  from  and proof-of-concept for creating schemas from user-defined defaults

* refactor: remove custom endpoint from default endpointsConfig as it will be exclusively managed by yaml config

* refactor(EndpointController): rename variables for clarity

* feat: initial load custom config

* feat(server/utils): add simple `isUserProvided` helper

* chore(types): update TConfig type

* refactor: remove custom endpoint handling from model services as will be handled by config, modularize fetching of models

* feat: loadCustomConfig, loadConfigEndpoints, loadConfigModels

* chore: reorganize server init imports, invoke loadCustomConfig

* refactor(loadConfigEndpoints/Models): return each custom endpoint as standalone endpoint

* refactor(Endpoint/ModelController): spread config values after default (temporary)

* chore(client): fix type issues

* WIP: first pass for multiple custom endpoints
- add endpointType to Conversation schema
- add update zod schemas for both convo/presets to allow non-EModelEndpoint value as endpoint (also using type assertion)
- use `endpointType` value as `endpoint` where mapping to type is necessary using this field
- use custom defined `endpoint` value and not type for mapping to modelsConfig
- misc: add return type to `getDefaultEndpoint`
- in `useNewConvo`, add the endpointType if it wasn't already added to conversation
- EndpointsMenu: use user-defined endpoint name as Title in menu
- TODO: custom icon via custom config, change unknown to robot icon

* refactor(parseConvo): pass args as an object and change where used accordingly; chore: comment out 'create schema' code

* chore: remove unused availableModels field in TConfig type

* refactor(parseCompactConvo): pass args as an object and change where used accordingly

* feat: chat through custom endpoint

* chore(message/convoSchemas): avoid saving empty arrays

* fix(BaseClient/saveMessageToDatabase): save endpointType

* refactor(ChatRoute): show Spinner if endpointsQuery or modelsQuery are still loading, which is apparent with slow fetching of models/remote config on first serve

* fix(useConversation): assign endpointType if it's missing

* fix(SaveAsPreset): pass real endpoint and endpointType when saving Preset)

* chore: recorganize types order for TConfig, add `iconURL`

* feat: custom endpoint icon support:
- use UnknownIcon in all icon contexts
- add mistral and openrouter as known endpoints, and add their icons
- iconURL support

* fix(presetSchema): move endpointType to default schema definitions shared between convoSchema and defaults

* refactor(Settings/OpenAI): remove legacy `isOpenAI` flag

* fix(OpenAIClient): do not invoke abortCompletion on completion error

* feat: add responseSender/label support for custom endpoints:
- use defaultModelLabel field in endpointOption
- add model defaults for custom endpoints in `getResponseSender`
- add `useGetSender` hook which uses EndpointsQuery to determine `defaultModelLabel`
- include defaultModelLabel from endpointConfig in custom endpoint client options
- pass `endpointType` to `getResponseSender`

* feat(OpenAIClient): use custom options from config file

* refactor: rename `defaultModelLabel` to `modelDisplayLabel`

* refactor(data-provider): separate concerns from `schemas` into `parsers`, `config`, and fix imports elsewhere

* feat: `iconURL` and extract environment variables from custom endpoint config values

* feat: custom config validation via zod schema, rename and move to `./projectRoot/librechat.yaml`

* docs: custom config docs and examples

* fix(OpenAIClient/mistral): mistral does not allow singular system message, also add `useChatCompletion` flag to use openai-node for title completions

* fix(custom/initializeClient): extract env var and use `isUserProvided` function

* Update librechat.example.yaml

* feat(InputWithLabel): add className props, and forwardRef

* fix(streamResponse): handle error edge case where either messages or convos query throws an error

* fix(useSSE): handle errorHandler edge cases where error response is and is not properly formatted from API, especially when a conversationId is not yet provided, which ensures stream is properly closed on error

* feat: user_provided keys for custom endpoints

* fix(config/endpointSchema): do not allow default endpoint values in custom endpoint `name`

* feat(loadConfigModels): extract env variables and optimize fetching models

* feat: support custom endpoint iconURL for messages and Nav

* feat(OpenAIClient): add/dropParams support

* docs: update docs with default params, add/dropParams, and notes to use config file instead of `OPENAI_REVERSE_PROXY`

* docs: update docs with additional notes

* feat(maxTokensMap): add mistral models (32k context)

* docs: update openrouter notes

* Update ai_setup.md

* docs(custom_config): add table of contents and fix note about custom name

* docs(custom_config): reorder ToC

* Update custom_config.md

* Add note about `max_tokens` field in custom_config.md
2024-01-03 09:22:48 -05:00
.devcontainer remove 'MEILI_HTTP_ADDR' (#1475) 2024-01-03 08:59:55 -05:00
.github update pull_request_template.md (#1466) 2023-12-30 22:50:47 -05:00
.husky chore: move files out of root to declutter 2023-09-06 14:00:36 -04:00
api 💫 feat: Config File & Custom Endpoints (#1474) 2024-01-03 09:22:48 -05:00
client 💫 feat: Config File & Custom Endpoints (#1474) 2024-01-03 09:22:48 -05:00
config 🛠️ fix: Minor Fixes in Message, Ask/EditController, OpenAIClient, and countTokens (#1463) 2023-12-30 14:34:32 -05:00
docs 💫 feat: Config File & Custom Endpoints (#1474) 2024-01-03 09:22:48 -05:00
e2e style: update graphics (#1138) 2023-11-16 08:42:03 -05:00
packages/data-provider 💫 feat: Config File & Custom Endpoints (#1474) 2024-01-03 09:22:48 -05:00
.dockerignore chore: Update docker, Minor Styling fix (#528) 2023-06-17 11:38:48 -04:00
.env.example remove 'MEILI_HTTP_ADDR' (#1475) 2024-01-03 08:59:55 -05:00
.eslintrc.js 🔧 fix: Correct Properties Passed to getResponseSender, Catch OpenAI Errors (#1244) 2023-11-29 13:40:16 -05:00
.gitignore 💫 feat: Config File & Custom Endpoints (#1474) 2024-01-03 09:22:48 -05:00
bun.lockb chore: remove jose as Bun now supports JWT 🍞 (#1167) 2023-11-12 00:44:46 -05:00
deploy-compose.yml remove 'MEILI_HTTP_ADDR' (#1475) 2024-01-03 08:59:55 -05:00
docker-compose.override.yml.example 🧹📚 docs: refactor and clean up (#1392) 2023-12-22 08:36:42 -05:00
docker-compose.yml remove 'MEILI_HTTP_ADDR' (#1475) 2024-01-03 08:59:55 -05:00
Dockerfile refactor: address potential issues with deploy-compose.yml (#1220) 2023-11-25 16:34:51 -05:00
Dockerfile.multi refactor: Use librechat-data-provider app-wide 🔄 (#1326) 2023-12-11 14:48:40 -05:00
index.html feat: allow FWA (#1440) 2023-12-29 17:28:07 -05:00
librechat.example.yaml 💫 feat: Config File & Custom Endpoints (#1474) 2024-01-03 09:22:48 -05:00
LICENSE doc fix: license ⚖️ (#1171) 2023-11-12 20:49:41 -05:00
mkdocs.yml 🪪mkdocs: social cards (#1428) 2023-12-28 17:10:06 -05:00
package-lock.json 🧹fix: Handle Abort Message Edge Cases (#1462) 2023-12-30 12:34:23 -05:00
package.json 📃 feat: add list-balances, remove-user, and improve User scripts (#1418) 2023-12-30 13:25:12 -05:00
prettier.config.js refactor: Settings/Presets UI Restructure, convert many files to TS (#740) 2023-08-04 13:56:44 -04:00
README.md 🧹📚 docs: refactor and clean up (#1392) 2023-12-22 08:36:42 -05:00

LibreChat

📃 Features

  • 🖥️ UI matching ChatGPT, including Dark mode, Streaming, and 11-2023 updates
  • 💬 Multimodal Chat:
    • Upload and analyze images with GPT-4 and Gemini Vision 📸
    • More filetypes and Assistants API integration in Active Development 🚧
  • 🌎 Multilingual UI:
    • English, 中文, Deutsch, Español, Français, Italiano, Polski, Português Brasileiro,
    • Русский, 日本語, Svenska, 한국어, Tiếng Việt, 繁體中文, العربية, Türkçe, Nederlands
  • 🤖 AI model selection: OpenAI API, Azure, BingAI, ChatGPT, Google Vertex AI, Anthropic (Claude), Plugins
  • 💾 Create, Save, & Share Custom Presets
  • 🔄 Edit, Resubmit, and Continue messages with conversation branching
  • 📤 Export conversations as screenshots, markdown, text, json.
  • 🔍 Search all messages/conversations
  • 🔌 Plugins, including web access, image generation with DALL-E-3 and more
  • 👥 Multi-User, Secure Authentication with Moderation and Token spend tools
  • ⚙️ Configure Proxy, Reverse Proxy, Docker, many Deployment options, and completely Open-Source

For a thorough review of our features, see our docs here 📚

🪶 All-In-One AI Conversations with LibreChat

LibreChat brings together the future of assistant AIs with the revolutionary technology of OpenAI's ChatGPT. Celebrating the original styling, LibreChat gives you the ability to integrate multiple AI models. It also integrates and enhances original client features such as conversation and message search, prompt templates and plugins.

With LibreChat, you no longer need to opt for ChatGPT Plus and can instead use free or pay-per-call APIs. We welcome contributions, cloning, and forking to enhance the capabilities of this advanced chatbot platform.

Watch the video Click on the thumbnail to open the video☝️


📚 Documentation

For more information on how to use our advanced features, install and configure our software, and access our guidelines and tutorials, please check out our documentation at docs.librechat.ai


📝 Changelog

Keep up with the latest updates by visiting the releases page - Releases

⚠️ Breaking Changes Please consult the breaking changes before updating.


Star History

Star History Chart

Contributions

Contributions, suggestions, bug reports and fixes are welcome!

For new features, components, or extensions, please open an issue and discuss before sending a PR.


💖 This project exists in its current state thanks to all the people who contribute