diff --git a/.env.example b/.env.example index 19a5da1d9..989df1261 100644 --- a/.env.example +++ b/.env.example @@ -141,7 +141,7 @@ GOOGLE_KEY=user_provided # GOOGLE_REVERSE_PROXY= # Gemini API (AI Studio) -# GOOGLE_MODELS=gemini-exp-1121,gemini-exp-1114,gemini-1.5-flash-latest,gemini-1.0-pro,gemini-1.0-pro-001,gemini-1.0-pro-latest,gemini-1.0-pro-vision-latest,gemini-1.5-pro-latest,gemini-pro,gemini-pro-vision +# GOOGLE_MODELS=gemini-2.0-flash-exp,gemini-exp-1121,gemini-exp-1114,gemini-1.5-flash-latest,gemini-1.0-pro,gemini-1.0-pro-001,gemini-1.0-pro-latest,gemini-1.0-pro-vision-latest,gemini-1.5-pro-latest,gemini-pro,gemini-pro-vision # Vertex AI # GOOGLE_MODELS=gemini-1.5-flash-preview-0514,gemini-1.5-pro-preview-0514,gemini-1.0-pro-vision-001,gemini-1.0-pro-002,gemini-1.0-pro-001,gemini-pro-vision,gemini-1.0-pro diff --git a/.vscode/launch.json b/.vscode/launch.json index 16b410498..e393568b1 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,7 +10,8 @@ "env": { "NODE_ENV": "production" }, - "console": "integratedTerminal" + "console": "integratedTerminal", + "envFile": "${workspaceFolder}/.env" } ] } diff --git a/api/lib/db/connectDb.js b/api/lib/db/connectDb.js index 3e711ca7a..b8cbeb2ad 100644 --- a/api/lib/db/connectDb.js +++ b/api/lib/db/connectDb.js @@ -25,9 +25,9 @@ async function connectDb() { const disconnected = cached.conn && cached.conn?._readyState !== 1; if (!cached.promise || disconnected) { const opts = { - useNewUrlParser: true, - useUnifiedTopology: true, bufferCommands: false, + // useNewUrlParser: true, + // useUnifiedTopology: true, // bufferMaxEntries: 0, // useFindAndModify: true, // useCreateIndex: true diff --git a/api/models/tx.js b/api/models/tx.js index ff30bbcc4..8c83ca259 100644 --- a/api/models/tx.js +++ b/api/models/tx.js @@ -71,6 +71,7 @@ const tokenValues = Object.assign( /* cohere doesn't have rates for the older command models, so this was from https://artificialanalysis.ai/models/command-light/providers */ command: { prompt: 0.38, completion: 0.38 }, + 'gemini-2.0': { prompt: 0, completion: 0 }, // https://ai.google.dev/pricing 'gemini-1.5': { prompt: 7, completion: 21 }, // May 2nd, 2024 pricing gemini: { prompt: 0.5, completion: 1.5 }, // May 2nd, 2024 pricing }, diff --git a/api/package.json b/api/package.json index 9184037fd..1b57beb79 100644 --- a/api/package.json +++ b/api/package.json @@ -56,7 +56,7 @@ "cors": "^2.8.5", "dedent": "^1.5.3", "dotenv": "^16.0.3", - "express": "^4.21.1", + "express": "^4.21.2", "express-mongo-sanitize": "^2.2.0", "express-rate-limit": "^7.4.1", "express-session": "^1.18.1", diff --git a/api/utils/tokens.js b/api/utils/tokens.js index 7c2ff2298..00f6514c4 100644 --- a/api/utils/tokens.js +++ b/api/utils/tokens.js @@ -50,7 +50,8 @@ const googleModels = { gemini: 30720, // -2048 from max 'gemini-pro-vision': 12288, // -4096 from max 'gemini-exp': 8000, - 'gemini-1.5': 1048576, // -8192 from max + 'gemini-2.0': 1048576, + 'gemini-1.5': 1048576, 'text-bison-32k': 32758, // -10 from max 'chat-bison-32k': 32758, // -10 from max 'code-bison-32k': 32758, // -10 from max diff --git a/config/user-stats.js b/config/user-stats.js index efcf3b58b..629469bdd 100644 --- a/config/user-stats.js +++ b/config/user-stats.js @@ -19,8 +19,8 @@ const connect = require('./connect'); let users = await User.find({}); let userData = []; for (const user of users) { - let conversationsCount = (await Conversation.count({ user: user._id })) ?? 0; - let messagesCount = (await Message.count({ user: user._id })) ?? 0; + let conversationsCount = (await Conversation.countDocuments({ user: user._id })) ?? 0; + let messagesCount = (await Message.countDocuments({ user: user._id })) ?? 0; userData.push({ User: user.name, diff --git a/package-lock.json b/package-lock.json index d81a344dd..96d257dee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -664,24 +664,6 @@ "@langchain/core": ">=0.3.17 <0.4.0" } }, - "api/node_modules/@langchain/openai": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@langchain/openai/-/openai-0.3.14.tgz", - "integrity": "sha512-lNWjUo1tbvsss45IF7UQtMu1NJ6oUKvhgPYWXnX9f/d6OmuLu7D99HQ3Y88vLcUo9XjjOy417olYHignMduMjA==", - "license": "MIT", - "dependencies": { - "js-tiktoken": "^1.0.12", - "openai": "^4.71.0", - "zod": "^3.22.4", - "zod-to-json-schema": "^3.22.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@langchain/core": ">=0.2.26 <0.4.0" - } - }, "api/node_modules/@langchain/textsplitters": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/@langchain/textsplitters/-/textsplitters-0.1.0.tgz", @@ -768,10 +750,10 @@ "ms": "2.0.0" } }, - "api/node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -792,7 +774,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -807,6 +789,10 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "api/node_modules/express-rate-limit": { @@ -10187,8 +10173,6 @@ "version": "0.3.14", "resolved": "https://registry.npmjs.org/@langchain/openai/-/openai-0.3.14.tgz", "integrity": "sha512-lNWjUo1tbvsss45IF7UQtMu1NJ6oUKvhgPYWXnX9f/d6OmuLu7D99HQ3Y88vLcUo9XjjOy417olYHignMduMjA==", - "optional": true, - "peer": true, "dependencies": { "js-tiktoken": "^1.0.12", "openai": "^4.71.0", @@ -10206,8 +10190,6 @@ "version": "18.19.64", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.64.tgz", "integrity": "sha512-955mDqvO2vFf/oL7V3WiUtiz+BugyX8uVbaT2H8oj3+8dRyH2FLiNdowe7eNqRM7IOIZvzDH76EoAT+gwm6aIQ==", - "optional": true, - "peer": true, "dependencies": { "undici-types": "~5.26.4" } @@ -10216,8 +10198,6 @@ "version": "4.72.0", "resolved": "https://registry.npmjs.org/openai/-/openai-4.72.0.tgz", "integrity": "sha512-hFqG9BWCs7L7ifrhJXw7mJXmUBr7d9N6If3J9563o0jfwVA4wFANFDDaOIWFdgDdwgCXg5emf0Q+LoLCGszQYA==", - "optional": true, - "peer": true, "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", @@ -27284,9 +27264,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "funding": [ { "type": "github", @@ -28538,9 +28518,9 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" }, "node_modules/path-type": { "version": "4.0.0", @@ -36173,7 +36153,7 @@ }, "packages/data-provider": { "name": "librechat-data-provider", - "version": "0.7.58", + "version": "0.7.59", "license": "ISC", "dependencies": { "@types/js-yaml": "^4.0.9", diff --git a/packages/data-provider/package.json b/packages/data-provider/package.json index f465d8bcc..2a414d30a 100644 --- a/packages/data-provider/package.json +++ b/packages/data-provider/package.json @@ -1,6 +1,6 @@ { "name": "librechat-data-provider", - "version": "0.7.58", + "version": "0.7.59", "description": "data services for librechat apps", "main": "dist/index.js", "module": "dist/index.es.js", diff --git a/packages/data-provider/src/config.ts b/packages/data-provider/src/config.ts index b0465f2b5..dad4bed5b 100644 --- a/packages/data-provider/src/config.ts +++ b/packages/data-provider/src/config.ts @@ -760,6 +760,7 @@ export const visionModels = [ 'llava-13b', 'gemini-pro-vision', 'claude-3', + 'gemini-2.0', 'gemini-1.5', 'gemini-exp', 'moondream',