mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-09-22 06:00:56 +02:00
feat: Azure Cognitive Search Plugin (#815)
* feat(AzureCognitiveSearchPlugin) * feat(tools/AzureCognitiveSearch.js): Add a new plugin (not structured version) * feat(tools/structured/AzureCognitiveSearch.js): Add a new plugin (structured version) * feat(tools/manifest.json, tools/index.js, tools/util/handleTools.js): Add configurations for the plugin * feat(api/package.json, package-lock.json): Installed a new package for the plugin (@azure/search-documents) * feat(.env.example): Add new environment variables for the plugin Here is the link to the corresponding discussion page: https://github.com/danny-avila/LibreChat/discussions/567 * docs(AzureCognitiveSearchPlugin) * docs(features/plugins/azure_cognitive_search.md): Add a new document for the plugin * (fix:.env.example) * reverted extra whitespaces removed by the editor * docs(mkdocs.yml) * Add the Azure Cognitive Search Plugin's documentation item to mkdocs.yml.
This commit is contained in:
parent
3c7f67fa76
commit
61dcb4d307
10 changed files with 498 additions and 12 deletions
12
.env.example
12
.env.example
|
@ -147,6 +147,18 @@ GOOGLE_CSE_ID=
|
||||||
# Use "http://127.0.0.1:7860" with local install and "http://host.docker.internal:7860" for docker
|
# Use "http://127.0.0.1:7860" with local install and "http://host.docker.internal:7860" for docker
|
||||||
SD_WEBUI_URL=http://host.docker.internal:7860
|
SD_WEBUI_URL=http://host.docker.internal:7860
|
||||||
|
|
||||||
|
# Azure Cognitive Search
|
||||||
|
# This plugin supports searching Azure Cognitive Search for answers to your questions.
|
||||||
|
# See detailed instructions here: https://github.com/danny-avila/LibreChat/blob/main/docs/features/plugins/azure_cognitive_search.md
|
||||||
|
AZURE_COGNITIVE_SEARCH_SERVICE_ENDPOINT=
|
||||||
|
AZURE_COGNITIVE_SEARCH_INDEX_NAME=
|
||||||
|
AZURE_COGNITIVE_SEARCH_API_KEY=
|
||||||
|
|
||||||
|
AZURE_COGNITIVE_SEARCH_API_VERSION=
|
||||||
|
AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_QUERY_TYPE=
|
||||||
|
AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_TOP=
|
||||||
|
AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_SELECT=
|
||||||
|
|
||||||
##########################
|
##########################
|
||||||
# PaLM (Google) Endpoint:
|
# PaLM (Google) Endpoint:
|
||||||
##########################
|
##########################
|
||||||
|
|
111
api/app/clients/tools/AzureCognitiveSearch.js
Normal file
111
api/app/clients/tools/AzureCognitiveSearch.js
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
const { Tool } = require('langchain/tools');
|
||||||
|
const { SearchClient, AzureKeyCredential } = require('@azure/search-documents');
|
||||||
|
|
||||||
|
class AzureCognitiveSearch extends Tool {
|
||||||
|
constructor(fields = {}) {
|
||||||
|
super();
|
||||||
|
this.serviceEndpoint =
|
||||||
|
fields.AZURE_COGNITIVE_SEARCH_SERVICE_ENDPOINT || this.getServiceEndpoint();
|
||||||
|
this.indexName = fields.AZURE_COGNITIVE_SEARCH_INDEX_NAME || this.getIndexName();
|
||||||
|
this.apiKey = fields.AZURE_COGNITIVE_SEARCH_API_KEY || this.getApiKey();
|
||||||
|
|
||||||
|
this.apiVersion = fields.AZURE_COGNITIVE_SEARCH_API_VERSION || this.getApiVersion();
|
||||||
|
|
||||||
|
this.queryType = fields.AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_QUERY_TYPE || this.getQueryType();
|
||||||
|
this.top = fields.AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_TOP || this.getTop();
|
||||||
|
this.select = fields.AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_SELECT || this.getSelect();
|
||||||
|
|
||||||
|
this.client = new SearchClient(
|
||||||
|
this.serviceEndpoint,
|
||||||
|
this.indexName,
|
||||||
|
new AzureKeyCredential(this.apiKey),
|
||||||
|
{
|
||||||
|
apiVersion: this.apiVersion,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The name of the tool.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
name = 'azure-cognitive-search';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A description for the agent to use
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
description =
|
||||||
|
'Use the \'azure-cognitive-search\' tool to retrieve search results relevant to your input';
|
||||||
|
|
||||||
|
getServiceEndpoint() {
|
||||||
|
const serviceEndpoint = process.env.AZURE_COGNITIVE_SEARCH_SERVICE_ENDPOINT || '';
|
||||||
|
if (!serviceEndpoint) {
|
||||||
|
throw new Error('Missing AZURE_COGNITIVE_SEARCH_SERVICE_ENDPOINT environment variable.');
|
||||||
|
}
|
||||||
|
return serviceEndpoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
getIndexName() {
|
||||||
|
const indexName = process.env.AZURE_COGNITIVE_SEARCH_INDEX_NAME || '';
|
||||||
|
if (!indexName) {
|
||||||
|
throw new Error('Missing AZURE_COGNITIVE_SEARCH_INDEX_NAME environment variable.');
|
||||||
|
}
|
||||||
|
return indexName;
|
||||||
|
}
|
||||||
|
|
||||||
|
getApiKey() {
|
||||||
|
const apiKey = process.env.AZURE_COGNITIVE_SEARCH_API_KEY || '';
|
||||||
|
if (!apiKey) {
|
||||||
|
throw new Error('Missing AZURE_COGNITIVE_SEARCH_API_KEY environment variable.');
|
||||||
|
}
|
||||||
|
return apiKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
getApiVersion() {
|
||||||
|
return process.env.AZURE_COGNITIVE_SEARCH_API_VERSION || '2020-06-30';
|
||||||
|
}
|
||||||
|
|
||||||
|
getQueryType() {
|
||||||
|
return process.env.AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_QUERY_TYPE || 'simple';
|
||||||
|
}
|
||||||
|
|
||||||
|
getTop() {
|
||||||
|
if (process.env.AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_TOP) {
|
||||||
|
return Number(process.env.AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_TOP);
|
||||||
|
} else {
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getSelect() {
|
||||||
|
if (process.env.AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_SELECT) {
|
||||||
|
return process.env.AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_SELECT.split(',');
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async _call(query) {
|
||||||
|
try {
|
||||||
|
const searchOption = {
|
||||||
|
queryType: this.queryType,
|
||||||
|
top: this.top,
|
||||||
|
};
|
||||||
|
if (this.select) {
|
||||||
|
searchOption.select = this.select;
|
||||||
|
}
|
||||||
|
const searchResults = await this.client.search(query, searchOption);
|
||||||
|
const resultDocuments = [];
|
||||||
|
for await (const result of searchResults.results) {
|
||||||
|
resultDocuments.push(result.document);
|
||||||
|
}
|
||||||
|
return JSON.stringify(resultDocuments);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Azure Cognitive Search request failed: ${error}`);
|
||||||
|
return 'There was an error with Azure Cognitive Search.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = AzureCognitiveSearch;
|
|
@ -7,6 +7,8 @@ const StableDiffusionAPI = require('./StableDiffusion');
|
||||||
const WolframAlphaAPI = require('./Wolfram');
|
const WolframAlphaAPI = require('./Wolfram');
|
||||||
const StructuredWolfram = require('./structured/Wolfram');
|
const StructuredWolfram = require('./structured/Wolfram');
|
||||||
const SelfReflectionTool = require('./SelfReflection');
|
const SelfReflectionTool = require('./SelfReflection');
|
||||||
|
const AzureCognitiveSearch = require('./AzureCognitiveSearch');
|
||||||
|
const StructuredACS = require('./structured/AzureCognitiveSearch');
|
||||||
const availableTools = require('./manifest.json');
|
const availableTools = require('./manifest.json');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
@ -20,4 +22,6 @@ module.exports = {
|
||||||
WolframAlphaAPI,
|
WolframAlphaAPI,
|
||||||
StructuredWolfram,
|
StructuredWolfram,
|
||||||
SelfReflectionTool,
|
SelfReflectionTool,
|
||||||
|
AzureCognitiveSearch,
|
||||||
|
StructuredACS,
|
||||||
};
|
};
|
||||||
|
|
|
@ -102,5 +102,28 @@
|
||||||
"description": "You can use Zapier with your API Key from Zapier."
|
"description": "You can use Zapier with your API Key from Zapier."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Azure Cognitive Search",
|
||||||
|
"pluginKey": "azure-cognitive-search",
|
||||||
|
"description": "Use Azure Cognitive Search to find information",
|
||||||
|
"icon": "https://i.imgur.com/E7crPze.png",
|
||||||
|
"authConfig": [
|
||||||
|
{
|
||||||
|
"authField": "AZURE_COGNITIVE_SEARCH_SERVICE_ENDPOINT",
|
||||||
|
"label": "Azur Cognitive Search Endpoint",
|
||||||
|
"description": "You need to provide your Endpoint for Azure Cognitive Search."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"authField": "AZURE_COGNITIVE_SEARCH_INDEX_NAME",
|
||||||
|
"label": "Azur Cognitive Search Index Name",
|
||||||
|
"description": "You need to provide your Index Name for Azure Cognitive Search."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"authField": "AZURE_COGNITIVE_SEARCH_API_KEY",
|
||||||
|
"label": "Azur Cognitive Search API Key",
|
||||||
|
"description": "You need to provideq your API Key for Azure Cognitive Search."
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
116
api/app/clients/tools/structured/AzureCognitiveSearch.js
Normal file
116
api/app/clients/tools/structured/AzureCognitiveSearch.js
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
const { StructuredTool } = require('langchain/tools');
|
||||||
|
const { z } = require('zod');
|
||||||
|
const { SearchClient, AzureKeyCredential } = require('@azure/search-documents');
|
||||||
|
|
||||||
|
class AzureCognitiveSearch extends StructuredTool {
|
||||||
|
constructor(fields = {}) {
|
||||||
|
super();
|
||||||
|
this.serviceEndpoint =
|
||||||
|
fields.AZURE_COGNITIVE_SEARCH_SERVICE_ENDPOINT || this.getServiceEndpoint();
|
||||||
|
this.indexName = fields.AZURE_COGNITIVE_SEARCH_INDEX_NAME || this.getIndexName();
|
||||||
|
this.apiKey = fields.AZURE_COGNITIVE_SEARCH_API_KEY || this.getApiKey();
|
||||||
|
|
||||||
|
this.apiVersion = fields.AZURE_COGNITIVE_SEARCH_API_VERSION || this.getApiVersion();
|
||||||
|
|
||||||
|
this.queryType = fields.AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_QUERY_TYPE || this.getQueryType();
|
||||||
|
this.top = fields.AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_TOP || this.getTop();
|
||||||
|
this.select = fields.AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_SELECT || this.getSelect();
|
||||||
|
|
||||||
|
this.client = new SearchClient(
|
||||||
|
this.serviceEndpoint,
|
||||||
|
this.indexName,
|
||||||
|
new AzureKeyCredential(this.apiKey),
|
||||||
|
{
|
||||||
|
apiVersion: this.apiVersion,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
this.schema = z.object({
|
||||||
|
query: z.string().describe('Search word or phrase to Azure Cognitive Search'),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The name of the tool.
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
name = 'azure-cognitive-search';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A description for the agent to use
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
description =
|
||||||
|
'Use the \'azure-cognitive-search\' tool to retrieve search results relevant to your input';
|
||||||
|
|
||||||
|
getServiceEndpoint() {
|
||||||
|
const serviceEndpoint = process.env.AZURE_COGNITIVE_SEARCH_SERVICE_ENDPOINT || '';
|
||||||
|
if (!serviceEndpoint) {
|
||||||
|
throw new Error('Missing AZURE_COGNITIVE_SEARCH_SERVICE_ENDPOINT environment variable.');
|
||||||
|
}
|
||||||
|
return serviceEndpoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
getIndexName() {
|
||||||
|
const indexName = process.env.AZURE_COGNITIVE_SEARCH_INDEX_NAME || '';
|
||||||
|
if (!indexName) {
|
||||||
|
throw new Error('Missing AZURE_COGNITIVE_SEARCH_INDEX_NAME environment variable.');
|
||||||
|
}
|
||||||
|
return indexName;
|
||||||
|
}
|
||||||
|
|
||||||
|
getApiKey() {
|
||||||
|
const apiKey = process.env.AZURE_COGNITIVE_SEARCH_API_KEY || '';
|
||||||
|
if (!apiKey) {
|
||||||
|
throw new Error('Missing AZURE_COGNITIVE_SEARCH_API_KEY environment variable.');
|
||||||
|
}
|
||||||
|
return apiKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
getApiVersion() {
|
||||||
|
return process.env.AZURE_COGNITIVE_SEARCH_API_VERSION || '2020-06-30';
|
||||||
|
}
|
||||||
|
|
||||||
|
getQueryType() {
|
||||||
|
return process.env.AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_QUERY_TYPE || 'simple';
|
||||||
|
}
|
||||||
|
|
||||||
|
getTop() {
|
||||||
|
if (process.env.AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_TOP) {
|
||||||
|
return Number(process.env.AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_TOP);
|
||||||
|
} else {
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getSelect() {
|
||||||
|
if (process.env.AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_SELECT) {
|
||||||
|
return process.env.AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_SELECT.split(',');
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async _call(data) {
|
||||||
|
const { query } = data;
|
||||||
|
try {
|
||||||
|
const searchOption = {
|
||||||
|
queryType: this.queryType,
|
||||||
|
top: this.top,
|
||||||
|
};
|
||||||
|
if (this.select) {
|
||||||
|
searchOption.select = this.select;
|
||||||
|
}
|
||||||
|
const searchResults = await this.client.search(query, searchOption);
|
||||||
|
const resultDocuments = [];
|
||||||
|
for await (const result of searchResults.results) {
|
||||||
|
resultDocuments.push(result.document);
|
||||||
|
}
|
||||||
|
return JSON.stringify(resultDocuments);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Azure Cognitive Search request failed: ${error}`);
|
||||||
|
return 'There was an error with Azure Cognitive Search.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = AzureCognitiveSearch;
|
|
@ -15,6 +15,8 @@ const {
|
||||||
OpenAICreateImage,
|
OpenAICreateImage,
|
||||||
StableDiffusionAPI,
|
StableDiffusionAPI,
|
||||||
StructuredSD,
|
StructuredSD,
|
||||||
|
AzureCognitiveSearch,
|
||||||
|
StructuredACS,
|
||||||
} = require('../');
|
} = require('../');
|
||||||
const { loadSpecs } = require('./loadSpecs');
|
const { loadSpecs } = require('./loadSpecs');
|
||||||
|
|
||||||
|
@ -78,6 +80,7 @@ const loadTools = async ({ user, model, functions = null, tools = [], options =
|
||||||
wolfram: functions ? StructuredWolfram : WolframAlphaAPI,
|
wolfram: functions ? StructuredWolfram : WolframAlphaAPI,
|
||||||
'dall-e': OpenAICreateImage,
|
'dall-e': OpenAICreateImage,
|
||||||
'stable-diffusion': functions ? StructuredSD : StableDiffusionAPI,
|
'stable-diffusion': functions ? StructuredSD : StableDiffusionAPI,
|
||||||
|
'azure-cognitive-search': functions ? StructuredACS : AzureCognitiveSearch,
|
||||||
};
|
};
|
||||||
|
|
||||||
const customConstructors = {
|
const customConstructors = {
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
"homepage": "https://github.com/danny-avila/LibreChat#readme",
|
"homepage": "https://github.com/danny-avila/LibreChat#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@anthropic-ai/sdk": "^0.5.4",
|
"@anthropic-ai/sdk": "^0.5.4",
|
||||||
|
"@azure/search-documents": "^11.3.2",
|
||||||
"@dqbd/tiktoken": "^1.0.2",
|
"@dqbd/tiktoken": "^1.0.2",
|
||||||
"@fortaine/fetch-event-source": "^3.0.6",
|
"@fortaine/fetch-event-source": "^3.0.6",
|
||||||
"@keyv/mongo": "^2.1.8",
|
"@keyv/mongo": "^2.1.8",
|
||||||
|
|
57
docs/features/plugins/azure_cognitive_search.md
Normal file
57
docs/features/plugins/azure_cognitive_search.md
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
# Azure Cognitive Search Plugin
|
||||||
|
Through the plugins endpoint, you can use Azure Cognitive Search for answers to your questions with assistance from GPT.
|
||||||
|
|
||||||
|
## Configurations
|
||||||
|
|
||||||
|
### Required
|
||||||
|
|
||||||
|
To get started, you need to get a Azure Cognitive Search endpoint URL, index name, and a API Key. You can then define these as follows in your `.env` file:
|
||||||
|
```env
|
||||||
|
AZURE_COGNITIVE_SEARCH_SERVICE_ENDPOINT="..."
|
||||||
|
AZURE_COGNITIVE_SEARCH_INDEX_NAME="..."
|
||||||
|
AZURE_COGNITIVE_SEARCH_API_KEY="..."
|
||||||
|
```
|
||||||
|
|
||||||
|
### AZURE_COGNITIVE_SEARCH_SERVICE_ENDPOINT
|
||||||
|
|
||||||
|
This is the URL of the search endpoint. It can be obtained from the top page of the search service in the Cognitive Search management console (e.g., 'https://example.search.windows.net').
|
||||||
|
|
||||||
|
### AZURE_COGNITIVE_SEARCH_INDEX_NAME
|
||||||
|
|
||||||
|
This is the name of the index to be searched (e.g., 'hotels-sample-index').
|
||||||
|
|
||||||
|
### AZURE_COGNITIVE_SEARCH_API_KEY
|
||||||
|
|
||||||
|
This is the authentication key to use when utilizing the search endpoint. Please issue it from the management console. Use the Value, not the name of the authentication key.
|
||||||
|
|
||||||
|
### Optional
|
||||||
|
|
||||||
|
The following are configuration values that are not required but can be specified as parameters during a search.
|
||||||
|
|
||||||
|
If there are concerns that the search result data may be too large and exceed the prompt size, consider reducing the size of the search result data by using AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_TOP and AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_SELECT.
|
||||||
|
|
||||||
|
For details on each parameter, please refer to the following document:
|
||||||
|
https://learn.microsoft.com/en-us/rest/api/searchservice/search-documents
|
||||||
|
|
||||||
|
```env
|
||||||
|
AZURE_COGNITIVE_SEARCH_API_VERSION=2023-07-01-Preview
|
||||||
|
AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_QUERY_TYPE=simple
|
||||||
|
AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_TOP=3
|
||||||
|
AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_SELECT=field1,field2,field3
|
||||||
|
```
|
||||||
|
|
||||||
|
#### AZURE_COGNITIVE_SEARCH_API_VERSION
|
||||||
|
|
||||||
|
Specify the version of the search API. When using new features such as semantic search, you may need to specify the preview version. The default value is '2020-06-30'.
|
||||||
|
|
||||||
|
#### AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_QUERY_TYPE
|
||||||
|
|
||||||
|
Specify 'simple' or 'full'. The default value is 'simple'.
|
||||||
|
|
||||||
|
#### AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_TOP
|
||||||
|
|
||||||
|
Specify the number of items to search for. The default value is 5.
|
||||||
|
|
||||||
|
#### AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_SELECT
|
||||||
|
|
||||||
|
Specify the fields of the index to be retrieved, separated by commas. Please note that these are not the fields to be searched.
|
17
mkdocs.yml
17
mkdocs.yml
|
@ -24,20 +24,20 @@ theme:
|
||||||
toggle:
|
toggle:
|
||||||
icon: material/brightness-4
|
icon: material/brightness-4
|
||||||
name: Switch to light mode
|
name: Switch to light mode
|
||||||
|
|
||||||
# Palette toggle for light mode
|
# Palette toggle for light mode
|
||||||
- scheme: default
|
- scheme: default
|
||||||
primary: cyan
|
primary: cyan
|
||||||
accent: purple
|
accent: purple
|
||||||
toggle:
|
toggle:
|
||||||
icon: material/brightness-7
|
icon: material/brightness-7
|
||||||
name: Switch to dark mode
|
name: Switch to dark mode
|
||||||
|
|
||||||
icon:
|
icon:
|
||||||
repo: fontawesome/brands/github
|
repo: fontawesome/brands/github
|
||||||
edit: material/pencil
|
edit: material/pencil
|
||||||
view: material/eye
|
view: material/eye
|
||||||
|
|
||||||
features:
|
features:
|
||||||
- header.autohide
|
- header.autohide
|
||||||
- navigation.tabs
|
- navigation.tabs
|
||||||
|
@ -74,11 +74,11 @@ markdown_extensions:
|
||||||
|
|
||||||
# Page tree
|
# Page tree
|
||||||
nav:
|
nav:
|
||||||
- Home:
|
- Home:
|
||||||
- 'index.md'
|
- 'index.md'
|
||||||
- v0.5.0 Breaking Changes: 'general_info/breaking_changes.md'
|
- v0.5.0 Breaking Changes: 'general_info/breaking_changes.md'
|
||||||
- Project Origin: 'general_info/project_origin.md'
|
- Project Origin: 'general_info/project_origin.md'
|
||||||
- Tech Stack: 'general_info/tech_stack.md'
|
- Tech Stack: 'general_info/tech_stack.md'
|
||||||
- Multilingual Information: 'general_info/multilingual_information.md'
|
- Multilingual Information: 'general_info/multilingual_information.md'
|
||||||
- Installation Guides:
|
- Installation Guides:
|
||||||
- Installation:
|
- Installation:
|
||||||
|
@ -98,10 +98,11 @@ nav:
|
||||||
- Google: 'features/plugins/google_search.md'
|
- Google: 'features/plugins/google_search.md'
|
||||||
- Stable Diffusion: 'features/plugins/stable_diffusion.md'
|
- Stable Diffusion: 'features/plugins/stable_diffusion.md'
|
||||||
- Wolfram: 'features/plugins/wolfram.md'
|
- Wolfram: 'features/plugins/wolfram.md'
|
||||||
|
- Azure Cognitive Search: 'features/plugins/azure_cognitive_search.md'
|
||||||
- Make Your Own Plugin: 'features/plugins/make_your_own.md'
|
- Make Your Own Plugin: 'features/plugins/make_your_own.md'
|
||||||
- Using official ChatGPT Plugins: 'features/plugins/chatgpt_plugins_openapi.md'
|
- Using official ChatGPT Plugins: 'features/plugins/chatgpt_plugins_openapi.md'
|
||||||
- Proxy: 'features/proxy.md'
|
- Proxy: 'features/proxy.md'
|
||||||
- Bing Jailbreak: 'features/bing_jailbreak.md'
|
- Bing Jailbreak: 'features/bing_jailbreak.md'
|
||||||
- Cloud Deployment:
|
- Cloud Deployment:
|
||||||
- DigitalOcean (preferred): 'deployment/digitalocean.md'
|
- DigitalOcean (preferred): 'deployment/digitalocean.md'
|
||||||
- Cloudflare: 'deployment/cloudflare.md'
|
- Cloudflare: 'deployment/cloudflare.md'
|
||||||
|
@ -123,7 +124,7 @@ extra:
|
||||||
- icon: fontawesome/brands/github
|
- icon: fontawesome/brands/github
|
||||||
link: https://github.com/danny-avila/LibreChat
|
link: https://github.com/danny-avila/LibreChat
|
||||||
- icon: fontawesome/brands/youtube
|
- icon: fontawesome/brands/youtube
|
||||||
link: https://www.youtube.com/@LibreChat
|
link: https://www.youtube.com/@LibreChat
|
||||||
|
|
||||||
copyright:
|
copyright:
|
||||||
© 2023 <a href="https://github.com/danny-avila/LibreChat" target="_blank" rel="noopener">LibreChat</a>
|
© 2023 <a href="https://github.com/danny-avila/LibreChat" target="_blank" rel="noopener">LibreChat</a>
|
||||||
|
|
166
package-lock.json
generated
166
package-lock.json
generated
|
@ -47,6 +47,7 @@
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@anthropic-ai/sdk": "^0.5.4",
|
"@anthropic-ai/sdk": "^0.5.4",
|
||||||
|
"@azure/search-documents": "^11.3.2",
|
||||||
"@dqbd/tiktoken": "^1.0.2",
|
"@dqbd/tiktoken": "^1.0.2",
|
||||||
"@fortaine/fetch-event-source": "^3.0.6",
|
"@fortaine/fetch-event-source": "^3.0.6",
|
||||||
"@keyv/mongo": "^2.1.8",
|
"@keyv/mongo": "^2.1.8",
|
||||||
|
@ -875,6 +876,166 @@
|
||||||
"tslib": "^2.3.1"
|
"tslib": "^2.3.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@azure/abort-controller": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==",
|
||||||
|
"dependencies": {
|
||||||
|
"tslib": "^2.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@azure/core-auth": {
|
||||||
|
"version": "1.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.5.0.tgz",
|
||||||
|
"integrity": "sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==",
|
||||||
|
"dependencies": {
|
||||||
|
"@azure/abort-controller": "^1.0.0",
|
||||||
|
"@azure/core-util": "^1.1.0",
|
||||||
|
"tslib": "^2.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@azure/core-client": {
|
||||||
|
"version": "1.7.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.7.3.tgz",
|
||||||
|
"integrity": "sha512-kleJ1iUTxcO32Y06dH9Pfi9K4U+Tlb111WXEnbt7R/ne+NLRwppZiTGJuTD5VVoxTMK5NTbEtm5t2vcdNCFe2g==",
|
||||||
|
"dependencies": {
|
||||||
|
"@azure/abort-controller": "^1.0.0",
|
||||||
|
"@azure/core-auth": "^1.4.0",
|
||||||
|
"@azure/core-rest-pipeline": "^1.9.1",
|
||||||
|
"@azure/core-tracing": "^1.0.0",
|
||||||
|
"@azure/core-util": "^1.0.0",
|
||||||
|
"@azure/logger": "^1.0.0",
|
||||||
|
"tslib": "^2.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@azure/core-http-compat": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-1.3.0.tgz",
|
||||||
|
"integrity": "sha512-ZN9avruqbQ5TxopzG3ih3KRy52n8OAbitX3fnZT5go4hzu0J+KVPSzkL+Wt3hpJpdG8WIfg1sBD1tWkgUdEpBA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@azure/abort-controller": "^1.0.4",
|
||||||
|
"@azure/core-client": "^1.3.0",
|
||||||
|
"@azure/core-rest-pipeline": "^1.3.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@azure/core-paging": {
|
||||||
|
"version": "1.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.5.0.tgz",
|
||||||
|
"integrity": "sha512-zqWdVIt+2Z+3wqxEOGzR5hXFZ8MGKK52x4vFLw8n58pR6ZfKRx3EXYTxTaYxYHc/PexPUTyimcTWFJbji9Z6Iw==",
|
||||||
|
"dependencies": {
|
||||||
|
"tslib": "^2.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@azure/core-rest-pipeline": {
|
||||||
|
"version": "1.12.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.12.0.tgz",
|
||||||
|
"integrity": "sha512-+MnSB0vGZjszSzr5AW8z93/9fkDu2RLtWmAN8gskURq7EW2sSwqy8jZa0V26rjuBVkwhdA3Hw8z3VWoeBUOw+A==",
|
||||||
|
"dependencies": {
|
||||||
|
"@azure/abort-controller": "^1.0.0",
|
||||||
|
"@azure/core-auth": "^1.4.0",
|
||||||
|
"@azure/core-tracing": "^1.0.1",
|
||||||
|
"@azure/core-util": "^1.3.0",
|
||||||
|
"@azure/logger": "^1.0.0",
|
||||||
|
"form-data": "^4.0.0",
|
||||||
|
"http-proxy-agent": "^5.0.0",
|
||||||
|
"https-proxy-agent": "^5.0.0",
|
||||||
|
"tslib": "^2.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@azure/core-rest-pipeline/node_modules/agent-base": {
|
||||||
|
"version": "6.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
|
||||||
|
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"debug": "4"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@azure/core-rest-pipeline/node_modules/https-proxy-agent": {
|
||||||
|
"version": "5.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
|
||||||
|
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
|
||||||
|
"dependencies": {
|
||||||
|
"agent-base": "6",
|
||||||
|
"debug": "4"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@azure/core-tracing": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==",
|
||||||
|
"dependencies": {
|
||||||
|
"tslib": "^2.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@azure/core-util": {
|
||||||
|
"version": "1.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.4.0.tgz",
|
||||||
|
"integrity": "sha512-eGAyJpm3skVQoLiRqm/xPa+SXi/NPDdSHMxbRAz2lSprd+Zs+qrpQGQQ2VQ3Nttu+nSZR4XoYQC71LbEI7jsig==",
|
||||||
|
"dependencies": {
|
||||||
|
"@azure/abort-controller": "^1.0.0",
|
||||||
|
"tslib": "^2.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@azure/logger": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==",
|
||||||
|
"dependencies": {
|
||||||
|
"tslib": "^2.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@azure/search-documents": {
|
||||||
|
"version": "11.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@azure/search-documents/-/search-documents-11.3.2.tgz",
|
||||||
|
"integrity": "sha512-pJBY/DF+G2PJzUFGu+MvBcHWgXMg4QceoTSoMvelPi/g9ynVxjjHYUdlP2aei8/L7nOpFnbTmC5iKNIRCNbnGw==",
|
||||||
|
"dependencies": {
|
||||||
|
"@azure/core-auth": "^1.3.0",
|
||||||
|
"@azure/core-client": "^1.3.0",
|
||||||
|
"@azure/core-http-compat": "^1.2.0",
|
||||||
|
"@azure/core-paging": "^1.1.1",
|
||||||
|
"@azure/core-rest-pipeline": "^1.3.0",
|
||||||
|
"@azure/core-tracing": "^1.0.0",
|
||||||
|
"@azure/logger": "^1.0.0",
|
||||||
|
"events": "^3.0.0",
|
||||||
|
"tslib": "^2.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@babel/cli": {
|
"node_modules/@babel/cli": {
|
||||||
"version": "7.22.10",
|
"version": "7.22.10",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.22.10.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.22.10.tgz",
|
||||||
|
@ -7181,7 +7342,6 @@
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
|
||||||
"integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
|
"integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 10"
|
"node": ">= 10"
|
||||||
}
|
}
|
||||||
|
@ -13655,7 +13815,6 @@
|
||||||
"version": "5.0.0",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
|
||||||
"integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
|
"integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tootallnate/once": "2",
|
"@tootallnate/once": "2",
|
||||||
"agent-base": "6",
|
"agent-base": "6",
|
||||||
|
@ -13669,7 +13828,6 @@
|
||||||
"version": "6.0.2",
|
"version": "6.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
|
||||||
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
|
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"debug": "4"
|
"debug": "4"
|
||||||
},
|
},
|
||||||
|
@ -26273,7 +26431,7 @@
|
||||||
},
|
},
|
||||||
"packages/data-provider": {
|
"packages/data-provider": {
|
||||||
"name": "librechat-data-provider",
|
"name": "librechat-data-provider",
|
||||||
"version": "0.1.4",
|
"version": "0.1.5",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tanstack/react-query": "^4.28.0",
|
"@tanstack/react-query": "^4.28.0",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue