mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-16 16:30:15 +01:00
🚧 WIP: Merge Dev Build (#4611)
* refactor: Agent CodeFiles, abortUpload WIP * feat: code environment file upload * refactor: useLazyEffect * refactor: - Add `watch` from `useFormContext` to check if code execution is enabled - Disable file upload button if `agent_id` is not selected or code execution is disabled * WIP: primeCodeFiles; refactor: rename sessionId to session_id for uniformity * Refactor: Rename session_id to sessionId for uniformity in AuthService.js * chore: bump @librechat/agents to version 1.7.1 * WIP: prime code files * refactor: Update code env file upload method to use read stream * feat: reupload code env file if no longer active * refactor: isAssistantTool -> isEntityTool + address type issues * feat: execute code tool hook * refactor: Rename isPluginAuthenticated to checkPluginAuth in PluginController.js * refactor: Update PluginController.js to use AuthType constant for comparison * feat: verify tool authentication (execute_code) * feat: enter librechat_code_api_key * refactor: Remove unused imports in BookmarkForm.tsx * feat: authenticate code tool * refactor: Update Action.tsx to conditionally render the key and revoke key buttons * refactor(Code/Action): prevent uncheck-able 'Run Code' capability when key is revoked * refactor(Code/Action): Update Action.tsx to conditionally render the key and revoke key buttons * fix: agent file upload edge cases * chore: bump @librechat/agents * fix: custom endpoint providerValue icon * feat: ollama meta modal token values + context * feat: ollama agents * refactor: Update token models for Ollama models * chore: Comment out CodeForm * refactor: Update token models for Ollama and Meta models
This commit is contained in:
parent
1909efd6ba
commit
95011ce349
58 changed files with 1418 additions and 1002 deletions
|
|
@ -77,13 +77,27 @@ const anthropicModels = {
|
|||
};
|
||||
|
||||
const metaModels = {
|
||||
'llama2-13b': 4000,
|
||||
'llama2-70b': 4000,
|
||||
'llama3-8b': 8000,
|
||||
'llama3-70b': 8000,
|
||||
'llama3-1-8b': 127500,
|
||||
'llama3-1-70b': 127500,
|
||||
llama3: 8000,
|
||||
llama2: 4000,
|
||||
'llama3.1': 127500,
|
||||
'llama3-1': 127500,
|
||||
'llama3.1:405b': 127500,
|
||||
'llama3.1:70b': 127500,
|
||||
'llama3.1:8b': 127500,
|
||||
'llama3-1-405b': 127500,
|
||||
'llama3-1-70b': 127500,
|
||||
'llama3-1-8b': 127500,
|
||||
'llama3-70b': 8000,
|
||||
'llama3-8b': 8000,
|
||||
'llama2-70b': 4000,
|
||||
'llama2-13b': 4000,
|
||||
'llama3:70b': 8000,
|
||||
'llama3:8b': 8000,
|
||||
'llama2:70b': 4000,
|
||||
};
|
||||
|
||||
const ollamaModels = {
|
||||
'qwen2.5': 32000,
|
||||
};
|
||||
|
||||
const ai21Models = {
|
||||
|
|
@ -102,6 +116,7 @@ const bedrockModels = {
|
|||
...anthropicModels,
|
||||
...mistralModels,
|
||||
...cohereModels,
|
||||
...ollamaModels,
|
||||
...metaModels,
|
||||
...ai21Models,
|
||||
...amazonModels,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
const { EModelEndpoint } = require('librechat-data-provider');
|
||||
const { getModelMaxTokens, matchModelName, maxTokensMap } = require('./tokens');
|
||||
const { getModelMaxTokens, processModelData, matchModelName, maxTokensMap } = require('./tokens');
|
||||
|
||||
describe('getModelMaxTokens', () => {
|
||||
test('should return correct tokens for exact match', () => {
|
||||
|
|
@ -317,3 +317,108 @@ describe('matchModelName', () => {
|
|||
expect(matchModelName('chat-', EModelEndpoint.google)).toBe('chat-');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Meta Models Tests', () => {
|
||||
describe('getModelMaxTokens', () => {
|
||||
test('should return correct tokens for LLaMa 2 models', () => {
|
||||
expect(getModelMaxTokens('llama2')).toBe(4000);
|
||||
expect(getModelMaxTokens('llama2.70b')).toBe(4000);
|
||||
expect(getModelMaxTokens('llama2-13b')).toBe(4000);
|
||||
expect(getModelMaxTokens('llama2-70b')).toBe(4000);
|
||||
});
|
||||
|
||||
test('should return correct tokens for LLaMa 3 models', () => {
|
||||
expect(getModelMaxTokens('llama3')).toBe(8000);
|
||||
expect(getModelMaxTokens('llama3.8b')).toBe(8000);
|
||||
expect(getModelMaxTokens('llama3.70b')).toBe(8000);
|
||||
expect(getModelMaxTokens('llama3-8b')).toBe(8000);
|
||||
expect(getModelMaxTokens('llama3-70b')).toBe(8000);
|
||||
});
|
||||
|
||||
test('should return correct tokens for LLaMa 3.1 models', () => {
|
||||
expect(getModelMaxTokens('llama3.1:8b')).toBe(127500);
|
||||
expect(getModelMaxTokens('llama3.1:70b')).toBe(127500);
|
||||
expect(getModelMaxTokens('llama3.1:405b')).toBe(127500);
|
||||
expect(getModelMaxTokens('llama3-1-8b')).toBe(127500);
|
||||
expect(getModelMaxTokens('llama3-1-70b')).toBe(127500);
|
||||
expect(getModelMaxTokens('llama3-1-405b')).toBe(127500);
|
||||
});
|
||||
|
||||
test('should handle partial matches for Meta models', () => {
|
||||
// Test with full model names
|
||||
expect(getModelMaxTokens('meta/llama3.1:405b')).toBe(127500);
|
||||
expect(getModelMaxTokens('meta/llama3.1:70b')).toBe(127500);
|
||||
expect(getModelMaxTokens('meta/llama3.1:8b')).toBe(127500);
|
||||
expect(getModelMaxTokens('meta/llama3-1-8b')).toBe(127500);
|
||||
|
||||
// Test base versions
|
||||
expect(getModelMaxTokens('meta/llama3.1')).toBe(127500);
|
||||
expect(getModelMaxTokens('meta/llama3-1')).toBe(127500);
|
||||
expect(getModelMaxTokens('meta/llama3')).toBe(8000);
|
||||
expect(getModelMaxTokens('meta/llama2')).toBe(4000);
|
||||
});
|
||||
});
|
||||
|
||||
describe('matchModelName', () => {
|
||||
test('should match exact LLaMa model names', () => {
|
||||
expect(matchModelName('llama2')).toBe('llama2');
|
||||
expect(matchModelName('llama3')).toBe('llama3');
|
||||
expect(matchModelName('llama3.1:8b')).toBe('llama3.1:8b');
|
||||
});
|
||||
|
||||
test('should match LLaMa model variations', () => {
|
||||
// Test full model names
|
||||
expect(matchModelName('meta/llama3.1:405b')).toBe('llama3.1:405b');
|
||||
expect(matchModelName('meta/llama3.1:70b')).toBe('llama3.1:70b');
|
||||
expect(matchModelName('meta/llama3.1:8b')).toBe('llama3.1:8b');
|
||||
expect(matchModelName('meta/llama3-1-8b')).toBe('llama3-1-8b');
|
||||
|
||||
// Test base versions
|
||||
expect(matchModelName('meta/llama3.1')).toBe('llama3.1');
|
||||
expect(matchModelName('meta/llama3-1')).toBe('llama3-1');
|
||||
});
|
||||
|
||||
test('should handle custom endpoint for Meta models', () => {
|
||||
expect(matchModelName('llama2', EModelEndpoint.bedrock)).toBe('llama2');
|
||||
expect(matchModelName('llama3', EModelEndpoint.bedrock)).toBe('llama3');
|
||||
expect(matchModelName('llama3.1:8b', EModelEndpoint.bedrock)).toBe('llama3.1:8b');
|
||||
});
|
||||
});
|
||||
|
||||
describe('processModelData with Meta models', () => {
|
||||
test('should process Meta model data correctly', () => {
|
||||
const input = {
|
||||
data: [
|
||||
{
|
||||
id: 'llama2',
|
||||
pricing: {
|
||||
prompt: '0.00001',
|
||||
completion: '0.00003',
|
||||
},
|
||||
context_length: 4000,
|
||||
},
|
||||
{
|
||||
id: 'llama3',
|
||||
pricing: {
|
||||
prompt: '0.00002',
|
||||
completion: '0.00004',
|
||||
},
|
||||
context_length: 8000,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const result = processModelData(input);
|
||||
expect(result.llama2).toEqual({
|
||||
prompt: 10,
|
||||
completion: 30,
|
||||
context: 4000,
|
||||
});
|
||||
expect(result.llama3).toEqual({
|
||||
prompt: 20,
|
||||
completion: 40,
|
||||
context: 8000,
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue