@lobehub/chat 1.111.10 → 1.111.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/claude-code-review.yml +12 -12
- package/.github/workflows/claude.yml +9 -9
- package/.vscode/extensions.json +13 -0
- package/.vscode/settings.json +89 -0
- package/CHANGELOG.md +42 -0
- package/CLAUDE.md +117 -0
- package/changelog/v1.json +14 -0
- package/docs/development/state-management/state-management-intro.mdx +2 -2
- package/docs/development/state-management/state-management-intro.zh-CN.mdx +2 -2
- package/package.json +1 -1
- package/packages/model-runtime/src/RouterRuntime/createRuntime.ts +9 -1
- package/packages/model-runtime/src/ai302/index.ts +1 -1
- package/packages/model-runtime/src/aihubmix/index.ts +28 -71
- package/packages/model-runtime/src/anthropic/index.ts +6 -26
- package/packages/model-runtime/src/giteeai/index.ts +2 -37
- package/packages/model-runtime/src/github/index.ts +33 -44
- package/packages/model-runtime/src/modelscope/index.ts +2 -38
- package/packages/model-runtime/src/moonshot/index.ts +2 -36
- package/packages/model-runtime/src/novita/__snapshots__/index.test.ts.snap +40 -22
- package/packages/model-runtime/src/novita/index.ts +1 -32
- package/packages/model-runtime/src/nvidia/index.ts +1 -1
- package/packages/model-runtime/src/openai/__snapshots__/index.test.ts.snap +63 -7
- package/packages/model-runtime/src/openai/index.ts +1 -1
- package/packages/model-runtime/src/openrouter/__snapshots__/index.test.ts.snap +6 -21
- package/packages/model-runtime/src/openrouter/index.ts +29 -37
- package/packages/model-runtime/src/qiniu/index.ts +3 -27
- package/packages/model-runtime/src/qwen/index.ts +1 -1
- package/packages/model-runtime/src/siliconcloud/index.ts +1 -1
- package/packages/model-runtime/src/utils/modelParse.test.ts +6 -6
- package/packages/model-runtime/src/utils/modelParse.ts +238 -40
- package/packages/model-runtime/src/utils/openaiCompatibleFactory/index.test.ts +18 -0
- package/packages/model-runtime/src/utils/streams/openai/openai.ts +12 -0
- package/packages/model-runtime/src/v0/index.ts +2 -2
- package/packages/model-runtime/src/volcengine/index.ts +1 -1
- package/packages/model-runtime/src/xai/index.ts +2 -24
- package/packages/model-runtime/src/zhipu/index.ts +1 -1
- package/src/config/aiModels/aihubmix.ts +1 -9
- package/src/config/aiModels/anthropic.ts +24 -4
- package/src/config/aiModels/fal.ts +20 -3
- package/src/config/aiModels/google.ts +60 -6
- package/src/config/aiModels/groq.ts +4 -21
- package/src/config/aiModels/hunyuan.ts +1 -1
- package/src/config/aiModels/mistral.ts +22 -5
- package/src/config/aiModels/moonshot.ts +20 -0
- package/src/config/aiModels/openai.ts +0 -45
- package/src/config/aiModels/qwen.ts +113 -3
- package/src/config/aiModels/sensenova.ts +6 -6
- package/src/config/aiModels/siliconcloud.ts +80 -0
- package/src/config/aiModels/stepfun.ts +38 -4
- package/src/config/aiModels/zhipu.ts +33 -8
- package/src/config/modelProviders/aihubmix.ts +1 -1
- package/src/config/modelProviders/mistral.ts +1 -0
- package/src/config/modelProviders/openai.ts +1 -1
- package/src/config/modelProviders/qwen.ts +1 -1
- package/src/config/modelProviders/v0.ts +1 -0
- package/src/config/modelProviders/volcengine.ts +1 -0
- package/src/server/routers/async/image.ts +1 -0
- package/src/services/file/_deprecated.ts +1 -1
- package/src/store/file/slices/upload/action.ts +1 -1
@@ -1,6 +1,5 @@
|
|
1
|
-
import type { ChatModelCard } from '@/types/llm';
|
2
|
-
|
3
1
|
import { ModelProvider } from '../types';
|
2
|
+
import { processMultiProviderModelList } from '../utils/modelParse';
|
4
3
|
import { createOpenAICompatibleRuntime } from '../utils/openaiCompatibleFactory';
|
5
4
|
|
6
5
|
export interface GiteeAIModelCard {
|
@@ -13,44 +12,10 @@ export const LobeGiteeAI = createOpenAICompatibleRuntime({
|
|
13
12
|
chatCompletion: () => process.env.DEBUG_GITEE_AI_CHAT_COMPLETION === '1',
|
14
13
|
},
|
15
14
|
models: async ({ client }) => {
|
16
|
-
const { LOBE_DEFAULT_MODEL_LIST } = await import('@/config/aiModels');
|
17
|
-
|
18
|
-
const functionCallKeywords = ['qwen2.5', 'glm-4'];
|
19
|
-
|
20
|
-
const visionKeywords = ['internvl', 'qwen2-vl'];
|
21
|
-
|
22
|
-
const reasoningKeywords = ['deepseek-r1', 'qwq'];
|
23
|
-
|
24
15
|
const modelsPage = (await client.models.list()) as any;
|
25
16
|
const modelList: GiteeAIModelCard[] = modelsPage.data;
|
26
17
|
|
27
|
-
return modelList
|
28
|
-
.map((model) => {
|
29
|
-
const knownModel = LOBE_DEFAULT_MODEL_LIST.find(
|
30
|
-
(m) => model.id.toLowerCase() === m.id.toLowerCase(),
|
31
|
-
);
|
32
|
-
|
33
|
-
return {
|
34
|
-
contextWindowTokens: knownModel?.contextWindowTokens ?? undefined,
|
35
|
-
displayName: knownModel?.displayName ?? undefined,
|
36
|
-
enabled: knownModel?.enabled || false,
|
37
|
-
functionCall:
|
38
|
-
(functionCallKeywords.some((keyword) => model.id.toLowerCase().includes(keyword)) &&
|
39
|
-
!model.id.toLowerCase().includes('qwen2.5-coder')) ||
|
40
|
-
knownModel?.abilities?.functionCall ||
|
41
|
-
false,
|
42
|
-
id: model.id,
|
43
|
-
reasoning:
|
44
|
-
reasoningKeywords.some((keyword) => model.id.toLowerCase().includes(keyword)) ||
|
45
|
-
knownModel?.abilities?.reasoning ||
|
46
|
-
false,
|
47
|
-
vision:
|
48
|
-
visionKeywords.some((keyword) => model.id.toLowerCase().includes(keyword)) ||
|
49
|
-
knownModel?.abilities?.vision ||
|
50
|
-
false,
|
51
|
-
};
|
52
|
-
})
|
53
|
-
.filter(Boolean) as ChatModelCard[];
|
18
|
+
return await processMultiProviderModelList(modelList, 'giteeai');
|
54
19
|
},
|
55
20
|
provider: ModelProvider.GiteeAI,
|
56
21
|
});
|
@@ -1,17 +1,26 @@
|
|
1
|
-
import type { ChatModelCard } from '@/types/llm';
|
2
|
-
|
3
1
|
import { AgentRuntimeErrorType } from '../error';
|
4
2
|
import { ModelProvider } from '../types';
|
3
|
+
import { processMultiProviderModelList } from '../utils/modelParse';
|
5
4
|
import { createOpenAICompatibleRuntime } from '../utils/openaiCompatibleFactory';
|
6
5
|
import { pruneReasoningPayload } from '../utils/openaiHelpers';
|
7
6
|
|
8
7
|
export interface GithubModelCard {
|
9
|
-
|
10
|
-
|
8
|
+
capabilities: string[];
|
9
|
+
html_url: string;
|
11
10
|
id: string;
|
11
|
+
limits: {
|
12
|
+
max_input_tokens: number;
|
13
|
+
max_output_tokens: number;
|
14
|
+
};
|
12
15
|
name: string;
|
16
|
+
publisher: string;
|
17
|
+
rate_limit_tier: string;
|
18
|
+
registry: string;
|
19
|
+
summary: string;
|
20
|
+
supported_input_modalities: string[];
|
21
|
+
supported_output_modalities: string[];
|
13
22
|
tags: string[];
|
14
|
-
|
23
|
+
version: string;
|
15
24
|
}
|
16
25
|
|
17
26
|
/* eslint-enable typescript-sort-keys/interface */
|
@@ -40,47 +49,27 @@ export const LobeGithubAI = createOpenAICompatibleRuntime({
|
|
40
49
|
bizError: AgentRuntimeErrorType.ProviderBizError,
|
41
50
|
invalidAPIKey: AgentRuntimeErrorType.InvalidGithubToken,
|
42
51
|
},
|
43
|
-
models: async (
|
44
|
-
const
|
45
|
-
|
46
|
-
const functionCallKeywords = ['function', 'tool'];
|
47
|
-
|
48
|
-
const visionKeywords = ['vision'];
|
49
|
-
|
50
|
-
const reasoningKeywords = ['deepseek-r1', 'o1', 'o3', 'grok-3-mini'];
|
51
|
-
|
52
|
-
const modelsPage = (await client.models.list()) as any;
|
53
|
-
const modelList: GithubModelCard[] = modelsPage.body;
|
52
|
+
models: async () => {
|
53
|
+
const response = await fetch('https://models.github.ai/catalog/models');
|
54
|
+
const modelList: GithubModelCard[] = await response.json();
|
54
55
|
|
55
|
-
|
56
|
-
.
|
57
|
-
|
58
|
-
|
59
|
-
|
56
|
+
const formattedModels = modelList.map((model) => ({
|
57
|
+
contextWindowTokens: model.limits?.max_input_tokens + model.limits?.max_output_tokens,
|
58
|
+
description: model.summary,
|
59
|
+
displayName: model.name,
|
60
|
+
functionCall: model.capabilities?.includes('tool-calling') ?? undefined,
|
61
|
+
id: model.id,
|
62
|
+
maxOutput: model.limits?.max_output_tokens ?? undefined,
|
63
|
+
reasoning: model.tags?.includes('reasoning') ?? undefined,
|
64
|
+
releasedAt:
|
65
|
+
model.version && /^\d{4}-\d{2}-\d{2}$/.test(model.version) ? model.version : undefined,
|
66
|
+
vision:
|
67
|
+
(model.tags?.includes('multimodal') ||
|
68
|
+
model.supported_input_modalities?.includes('image')) ??
|
69
|
+
undefined,
|
70
|
+
}));
|
60
71
|
|
61
|
-
|
62
|
-
contextWindowTokens: knownModel?.contextWindowTokens ?? undefined,
|
63
|
-
description: model.description,
|
64
|
-
displayName: model.friendly_name,
|
65
|
-
enabled: knownModel?.enabled || false,
|
66
|
-
functionCall:
|
67
|
-
functionCallKeywords.some((keyword) =>
|
68
|
-
model.description.toLowerCase().includes(keyword),
|
69
|
-
) ||
|
70
|
-
knownModel?.abilities?.functionCall ||
|
71
|
-
false,
|
72
|
-
id: model.name,
|
73
|
-
reasoning:
|
74
|
-
reasoningKeywords.some((keyword) => model.name.toLowerCase().includes(keyword)) ||
|
75
|
-
knownModel?.abilities?.reasoning ||
|
76
|
-
false,
|
77
|
-
vision:
|
78
|
-
visionKeywords.some((keyword) => model.description.toLowerCase().includes(keyword)) ||
|
79
|
-
knownModel?.abilities?.vision ||
|
80
|
-
false,
|
81
|
-
};
|
82
|
-
})
|
83
|
-
.filter(Boolean) as ChatModelCard[];
|
72
|
+
return await processMultiProviderModelList(formattedModels, 'github');
|
84
73
|
},
|
85
74
|
provider: ModelProvider.Github,
|
86
75
|
});
|
@@ -1,6 +1,5 @@
|
|
1
|
-
import type { ChatModelCard } from '@/types/llm';
|
2
|
-
|
3
1
|
import { ModelProvider } from '../types';
|
2
|
+
import { processMultiProviderModelList } from '../utils/modelParse';
|
4
3
|
import { createOpenAICompatibleRuntime } from '../utils/openaiCompatibleFactory';
|
5
4
|
|
6
5
|
export interface ModelScopeModelCard {
|
@@ -16,46 +15,11 @@ export const LobeModelScopeAI = createOpenAICompatibleRuntime({
|
|
16
15
|
chatCompletion: () => process.env.DEBUG_MODELSCOPE_CHAT_COMPLETION === '1',
|
17
16
|
},
|
18
17
|
models: async ({ client }) => {
|
19
|
-
const { LOBE_DEFAULT_MODEL_LIST } = await import('@/config/aiModels');
|
20
|
-
|
21
|
-
const functionCallKeywords = ['qwen', 'deepseek', 'llama'];
|
22
|
-
|
23
|
-
const visionKeywords = ['qwen-vl', 'qwen2-vl', 'llava'];
|
24
|
-
|
25
|
-
const reasoningKeywords = ['qwq', 'deepseek-r1'];
|
26
|
-
|
27
18
|
try {
|
28
19
|
const modelsPage = (await client.models.list()) as any;
|
29
20
|
const modelList: ModelScopeModelCard[] = modelsPage.data || [];
|
30
21
|
|
31
|
-
return modelList
|
32
|
-
.map((model) => {
|
33
|
-
const knownModel = LOBE_DEFAULT_MODEL_LIST.find(
|
34
|
-
(m) => model.id.toLowerCase() === m.id.toLowerCase(),
|
35
|
-
);
|
36
|
-
|
37
|
-
const modelId = model.id.toLowerCase();
|
38
|
-
|
39
|
-
return {
|
40
|
-
contextWindowTokens: knownModel?.contextWindowTokens ?? undefined,
|
41
|
-
displayName: knownModel?.displayName ?? model.id,
|
42
|
-
enabled: knownModel?.enabled || false,
|
43
|
-
functionCall:
|
44
|
-
functionCallKeywords.some((keyword) => modelId.includes(keyword)) ||
|
45
|
-
knownModel?.abilities?.functionCall ||
|
46
|
-
false,
|
47
|
-
id: model.id,
|
48
|
-
reasoning:
|
49
|
-
reasoningKeywords.some((keyword) => modelId.includes(keyword)) ||
|
50
|
-
knownModel?.abilities?.reasoning ||
|
51
|
-
false,
|
52
|
-
vision:
|
53
|
-
visionKeywords.some((keyword) => modelId.includes(keyword)) ||
|
54
|
-
knownModel?.abilities?.vision ||
|
55
|
-
false,
|
56
|
-
};
|
57
|
-
})
|
58
|
-
.filter(Boolean) as ChatModelCard[];
|
22
|
+
return await processMultiProviderModelList(modelList, 'modelscope');
|
59
23
|
} catch (error) {
|
60
24
|
console.warn(
|
61
25
|
'Failed to fetch ModelScope models. Please ensure your ModelScope API key is valid and your Alibaba Cloud account is properly bound:',
|
@@ -1,6 +1,5 @@
|
|
1
|
-
import type { ChatModelCard } from '@/types/llm';
|
2
|
-
|
3
1
|
import { ChatStreamPayload, ModelProvider } from '../types';
|
2
|
+
import { MODEL_LIST_CONFIGS, processModelList } from '../utils/modelParse';
|
4
3
|
import { createOpenAICompatibleRuntime } from '../utils/openaiCompatibleFactory';
|
5
4
|
|
6
5
|
export interface MoonshotModelCard {
|
@@ -45,43 +44,10 @@ export const LobeMoonshotAI = createOpenAICompatibleRuntime({
|
|
45
44
|
chatCompletion: () => process.env.DEBUG_MOONSHOT_CHAT_COMPLETION === '1',
|
46
45
|
},
|
47
46
|
models: async ({ client }) => {
|
48
|
-
const { LOBE_DEFAULT_MODEL_LIST } = await import('@/config/aiModels');
|
49
|
-
|
50
|
-
const functionCallKeywords = ['moonshot-v1', 'kimi-latest'];
|
51
|
-
|
52
|
-
const visionKeywords = ['kimi-latest', 'kimi-thinking', 'vision'];
|
53
|
-
|
54
|
-
const reasoningKeywords = ['thinking'];
|
55
|
-
|
56
47
|
const modelsPage = (await client.models.list()) as any;
|
57
48
|
const modelList: MoonshotModelCard[] = modelsPage.data;
|
58
49
|
|
59
|
-
return modelList
|
60
|
-
.map((model) => {
|
61
|
-
const knownModel = LOBE_DEFAULT_MODEL_LIST.find(
|
62
|
-
(m) => model.id.toLowerCase() === m.id.toLowerCase(),
|
63
|
-
);
|
64
|
-
|
65
|
-
return {
|
66
|
-
contextWindowTokens: knownModel?.contextWindowTokens ?? undefined,
|
67
|
-
displayName: knownModel?.displayName ?? undefined,
|
68
|
-
enabled: knownModel?.enabled || false,
|
69
|
-
functionCall:
|
70
|
-
functionCallKeywords.some((keyword) => model.id.toLowerCase().includes(keyword)) ||
|
71
|
-
knownModel?.abilities?.functionCall ||
|
72
|
-
false,
|
73
|
-
id: model.id,
|
74
|
-
reasoning:
|
75
|
-
reasoningKeywords.some((keyword) => model.id.toLowerCase().includes(keyword)) ||
|
76
|
-
knownModel?.abilities?.reasoning ||
|
77
|
-
false,
|
78
|
-
vision:
|
79
|
-
visionKeywords.some((keyword) => model.id.toLowerCase().includes(keyword)) ||
|
80
|
-
knownModel?.abilities?.vision ||
|
81
|
-
false,
|
82
|
-
};
|
83
|
-
})
|
84
|
-
.filter(Boolean) as ChatModelCard[];
|
50
|
+
return processModelList(modelList, MODEL_LIST_CONFIGS.moonshot, 'moonshot');
|
85
51
|
},
|
86
52
|
provider: ModelProvider.Moonshot,
|
87
53
|
});
|
@@ -5,53 +5,57 @@ exports[`NovitaAI > models > should get models 1`] = `
|
|
5
5
|
{
|
6
6
|
"contextWindowTokens": 8192,
|
7
7
|
"description": "Meta's latest class of model (Llama 3) launched with a variety of sizes & flavors. This 8B instruct-tuned version was optimized for high quality dialogue usecases. It has demonstrated strong performance compared to leading closed-source models in human evaluations.",
|
8
|
-
"displayName": "
|
8
|
+
"displayName": "Llama 3 8B Instruct",
|
9
9
|
"enabled": false,
|
10
10
|
"functionCall": false,
|
11
11
|
"id": "meta-llama/llama-3-8b-instruct",
|
12
12
|
"maxOutput": undefined,
|
13
13
|
"reasoning": false,
|
14
|
+
"releasedAt": "2024-04-25",
|
14
15
|
"type": "chat",
|
15
16
|
"vision": false,
|
16
17
|
},
|
17
18
|
{
|
18
19
|
"contextWindowTokens": 8192,
|
19
20
|
"description": "Meta's latest class of model (Llama 3) launched with a variety of sizes & flavors. This 70B instruct-tuned version was optimized for high quality dialogue usecases. It has demonstrated strong performance compared to leading closed-source models in human evaluations.",
|
20
|
-
"displayName": "
|
21
|
+
"displayName": "Llama 3 70B Instruct",
|
21
22
|
"enabled": false,
|
22
23
|
"functionCall": false,
|
23
24
|
"id": "meta-llama/llama-3-70b-instruct",
|
24
25
|
"maxOutput": undefined,
|
25
26
|
"reasoning": false,
|
27
|
+
"releasedAt": "2024-04-25",
|
26
28
|
"type": "chat",
|
27
29
|
"vision": false,
|
28
30
|
},
|
29
31
|
{
|
30
|
-
"contextWindowTokens":
|
32
|
+
"contextWindowTokens": 16384,
|
31
33
|
"description": "Meta's latest class of models, Llama 3.1, launched with a variety of sizes and configurations. The 8B instruct-tuned version is particularly fast and efficient. It has demonstrated strong performance in human evaluations, outperforming several leading closed-source models.",
|
32
|
-
"displayName": "
|
34
|
+
"displayName": "Llama 3.1 8B Instruct",
|
33
35
|
"enabled": false,
|
34
36
|
"functionCall": false,
|
35
37
|
"id": "meta-llama/llama-3.1-8b-instruct",
|
36
38
|
"maxOutput": undefined,
|
37
39
|
"reasoning": false,
|
40
|
+
"releasedAt": "2024-07-24",
|
38
41
|
"type": "chat",
|
39
42
|
"vision": false,
|
40
43
|
},
|
41
44
|
{
|
42
|
-
"contextWindowTokens":
|
45
|
+
"contextWindowTokens": 32768,
|
43
46
|
"description": "Meta's latest class of models, Llama 3.1, has launched with a variety of sizes and configurations. The 70B instruct-tuned version is optimized for high-quality dialogue use cases. It has demonstrated strong performance in human evaluations compared to leading closed-source models.",
|
44
47
|
"displayName": "meta-llama/llama-3.1-70b-instruct",
|
45
|
-
"enabled":
|
48
|
+
"enabled": false,
|
46
49
|
"functionCall": false,
|
47
50
|
"id": "meta-llama/llama-3.1-70b-instruct",
|
48
51
|
"maxOutput": undefined,
|
49
52
|
"reasoning": false,
|
53
|
+
"releasedAt": "2024-07-24",
|
50
54
|
"type": "chat",
|
51
55
|
"vision": false,
|
52
56
|
},
|
53
57
|
{
|
54
|
-
"contextWindowTokens":
|
58
|
+
"contextWindowTokens": undefined,
|
55
59
|
"description": "Meta's latest class of models, Llama 3.1, launched with a variety of sizes and configurations. This 405B instruct-tuned version is optimized for high-quality dialogue use cases. It has demonstrated strong performance compared to leading closed-source models, including GPT-4o and Claude 3.5 Sonnet, in evaluations.",
|
56
60
|
"displayName": "meta-llama/llama-3.1-405b-instruct",
|
57
61
|
"enabled": false,
|
@@ -59,6 +63,7 @@ exports[`NovitaAI > models > should get models 1`] = `
|
|
59
63
|
"id": "meta-llama/llama-3.1-405b-instruct",
|
60
64
|
"maxOutput": undefined,
|
61
65
|
"reasoning": false,
|
66
|
+
"releasedAt": "2024-07-24",
|
62
67
|
"type": "chat",
|
63
68
|
"vision": false,
|
64
69
|
},
|
@@ -66,17 +71,18 @@ exports[`NovitaAI > models > should get models 1`] = `
|
|
66
71
|
"contextWindowTokens": 8192,
|
67
72
|
"description": "Gemma 2 9B by Google is an advanced, open-source language model that sets a new standard for efficiency and performance in its size class.
|
68
73
|
Designed for a wide variety of tasks, it empowers developers and researchers to build innovative applications, while maintaining accessibility, safety, and cost-effectiveness.",
|
69
|
-
"displayName": "
|
74
|
+
"displayName": "Gemma 2 9B Instruct",
|
70
75
|
"enabled": false,
|
71
76
|
"functionCall": false,
|
72
77
|
"id": "google/gemma-2-9b-it",
|
73
78
|
"maxOutput": undefined,
|
74
79
|
"reasoning": false,
|
80
|
+
"releasedAt": "2024-07-18",
|
75
81
|
"type": "chat",
|
76
82
|
"vision": false,
|
77
83
|
},
|
78
84
|
{
|
79
|
-
"contextWindowTokens":
|
85
|
+
"contextWindowTokens": undefined,
|
80
86
|
"description": "This is a fine-tuned Llama-2 model designed to support longer and more detailed writing prompts, as well as next-chapter generation. It also includes an experimental role-playing instruction set with multi-round dialogues, character interactions, and varying numbers of participants",
|
81
87
|
"displayName": "jondurbin/airoboros-l2-70b",
|
82
88
|
"enabled": false,
|
@@ -84,83 +90,90 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
|
|
84
90
|
"id": "jondurbin/airoboros-l2-70b",
|
85
91
|
"maxOutput": undefined,
|
86
92
|
"reasoning": false,
|
93
|
+
"releasedAt": "2024-07-17",
|
87
94
|
"type": "chat",
|
88
95
|
"vision": false,
|
89
96
|
},
|
90
97
|
{
|
91
98
|
"contextWindowTokens": 8192,
|
92
99
|
"description": "Hermes 2 Pro is an upgraded, retrained version of Nous Hermes 2, consisting of an updated and cleaned version of the OpenHermes 2.5 Dataset, as well as a newly introduced Function Calling and JSON Mode dataset developed in-house.",
|
93
|
-
"displayName": "
|
100
|
+
"displayName": "Hermes 2 Pro Llama 3 8B",
|
94
101
|
"enabled": false,
|
95
|
-
"functionCall":
|
102
|
+
"functionCall": false,
|
96
103
|
"id": "nousresearch/hermes-2-pro-llama-3-8b",
|
97
104
|
"maxOutput": undefined,
|
98
105
|
"reasoning": false,
|
106
|
+
"releasedAt": "2024-06-27",
|
99
107
|
"type": "chat",
|
100
108
|
"vision": false,
|
101
109
|
},
|
102
110
|
{
|
103
111
|
"contextWindowTokens": 32768,
|
104
112
|
"description": "A high-performing, industry-standard 7.3B parameter model, with optimizations for speed and context length.",
|
105
|
-
"displayName": "
|
113
|
+
"displayName": "Mistral 7B Instruct",
|
106
114
|
"enabled": false,
|
107
115
|
"functionCall": false,
|
108
116
|
"id": "mistralai/mistral-7b-instruct",
|
109
117
|
"maxOutput": undefined,
|
110
118
|
"reasoning": false,
|
119
|
+
"releasedAt": "2024-06-27",
|
111
120
|
"type": "chat",
|
112
121
|
"vision": false,
|
113
122
|
},
|
114
123
|
{
|
115
124
|
"contextWindowTokens": 16000,
|
116
125
|
"description": "Dolphin 2.9 is designed for instruction following, conversational, and coding. This model is a finetune of Mixtral 8x22B Instruct. It features a 64k context length and was fine-tuned with a 16k sequence length using ChatML templates.The model is uncensored and is stripped of alignment and bias. It requires an external alignment layer for ethical use.",
|
117
|
-
"displayName": "
|
126
|
+
"displayName": "Dolphin Mixtral 8x22B",
|
118
127
|
"enabled": false,
|
119
128
|
"functionCall": false,
|
120
129
|
"id": "cognitivecomputations/dolphin-mixtral-8x22b",
|
121
130
|
"maxOutput": undefined,
|
122
131
|
"reasoning": false,
|
132
|
+
"releasedAt": "2024-06-27",
|
123
133
|
"type": "chat",
|
124
134
|
"vision": false,
|
125
135
|
},
|
126
136
|
{
|
127
|
-
"contextWindowTokens":
|
137
|
+
"contextWindowTokens": 8192,
|
128
138
|
"description": "The uncensored llama3 model is a powerhouse of creativity, excelling in both roleplay and story writing. It offers a liberating experience during roleplays, free from any restrictions. This model stands out for its immense creativity, boasting a vast array of unique ideas and plots, truly a treasure trove for those seeking originality. Its unrestricted nature during roleplays allows for the full breadth of imagination to unfold, akin to an enhanced, big-brained version of Stheno. Perfect for creative minds seeking a boundless platform for their imaginative expressions, the uncensored llama3 model is an ideal choice",
|
129
|
-
"displayName": "
|
139
|
+
"displayName": "L3 70B Euryale v2.1",
|
130
140
|
"enabled": false,
|
131
141
|
"functionCall": false,
|
132
142
|
"id": "sao10k/l3-70b-euryale-v2.1",
|
133
143
|
"maxOutput": undefined,
|
134
144
|
"reasoning": true,
|
145
|
+
"releasedAt": "2024-06-18",
|
135
146
|
"type": "chat",
|
136
147
|
"vision": false,
|
137
148
|
},
|
138
149
|
{
|
139
150
|
"contextWindowTokens": 4096,
|
140
151
|
"description": "A merge with a complex family tree, this model was crafted for roleplaying and storytelling. Midnight Rose is a successor to Rogue Rose and Aurora Nights and improves upon them both. It wants to produce lengthy output by default and is the best creative writing merge produced so far by sophosympatheia.",
|
141
|
-
"displayName": "
|
152
|
+
"displayName": "Midnight Rose 70B",
|
142
153
|
"enabled": false,
|
143
154
|
"functionCall": false,
|
144
155
|
"id": "sophosympatheia/midnight-rose-70b",
|
145
156
|
"maxOutput": undefined,
|
146
157
|
"reasoning": false,
|
158
|
+
"releasedAt": "2024-06-17",
|
147
159
|
"type": "chat",
|
148
160
|
"vision": false,
|
149
161
|
},
|
150
162
|
{
|
151
163
|
"contextWindowTokens": 4096,
|
152
164
|
"description": "The idea behind this merge is that each layer is composed of several tensors, which are in turn responsible for specific functions. Using MythoLogic-L2's robust understanding as its input and Huginn's extensive writing capability as its output seems to have resulted in a model that exceeds at both, confirming my theory. (More details to be released at a later time).",
|
153
|
-
"displayName": "
|
165
|
+
"displayName": "MythoMax l2 13B",
|
154
166
|
"enabled": false,
|
155
167
|
"functionCall": false,
|
156
168
|
"id": "gryphe/mythomax-l2-13b",
|
157
169
|
"maxOutput": undefined,
|
158
170
|
"reasoning": false,
|
171
|
+
"releasedAt": "2024-04-25",
|
159
172
|
"type": "chat",
|
160
173
|
"vision": false,
|
161
174
|
},
|
162
175
|
{
|
163
|
-
"contextWindowTokens":
|
176
|
+
"contextWindowTokens": undefined,
|
164
177
|
"description": "Nous-Hermes-Llama2-13b is a state-of-the-art language model fine-tuned on over 300,000 instructions. This model was fine-tuned by Nous Research, with Teknium and Emozilla leading the fine tuning process and dataset curation, Redmond AI sponsoring the compute, and several other contributors.",
|
165
178
|
"displayName": "nousresearch/nous-hermes-llama2-13b",
|
166
179
|
"enabled": false,
|
@@ -168,11 +181,12 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
|
|
168
181
|
"id": "nousresearch/nous-hermes-llama2-13b",
|
169
182
|
"maxOutput": undefined,
|
170
183
|
"reasoning": false,
|
184
|
+
"releasedAt": "2024-04-25",
|
171
185
|
"type": "chat",
|
172
186
|
"vision": false,
|
173
187
|
},
|
174
188
|
{
|
175
|
-
"contextWindowTokens":
|
189
|
+
"contextWindowTokens": undefined,
|
176
190
|
"description": "Nous Hermes 2 Mixtral 8x7B DPO is the new flagship Nous Research model trained over the Mixtral 8x7B MoE LLM. The model was trained on over 1,000,000 entries of primarily GPT-4 generated data, as well as other high quality data from open datasets across the AI landscape, achieving state of the art performance on a variety of tasks.",
|
177
191
|
"displayName": "Nous-Hermes-2-Mixtral-8x7B-DPO",
|
178
192
|
"enabled": false,
|
@@ -180,11 +194,12 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
|
|
180
194
|
"id": "Nous-Hermes-2-Mixtral-8x7B-DPO",
|
181
195
|
"maxOutput": undefined,
|
182
196
|
"reasoning": false,
|
197
|
+
"releasedAt": "2024-04-25",
|
183
198
|
"type": "chat",
|
184
199
|
"vision": false,
|
185
200
|
},
|
186
201
|
{
|
187
|
-
"contextWindowTokens":
|
202
|
+
"contextWindowTokens": undefined,
|
188
203
|
"description": "A Mythomax/MLewd_13B-style merge of selected 70B models. A multi-model merge of several LLaMA2 70B finetunes for roleplaying and creative work. The goal was to create a model that combines creativity with intelligence for an enhanced experience.",
|
189
204
|
"displayName": "lzlv_70b",
|
190
205
|
"enabled": false,
|
@@ -192,11 +207,12 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
|
|
192
207
|
"id": "lzlv_70b",
|
193
208
|
"maxOutput": undefined,
|
194
209
|
"reasoning": false,
|
210
|
+
"releasedAt": "2024-04-25",
|
195
211
|
"type": "chat",
|
196
212
|
"vision": false,
|
197
213
|
},
|
198
214
|
{
|
199
|
-
"contextWindowTokens":
|
215
|
+
"contextWindowTokens": undefined,
|
200
216
|
"description": "OpenHermes 2.5 Mistral 7B is a state of the art Mistral Fine-tune, a continuation of OpenHermes 2 model, which trained on additional code datasets.",
|
201
217
|
"displayName": "teknium/openhermes-2.5-mistral-7b",
|
202
218
|
"enabled": false,
|
@@ -204,18 +220,20 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
|
|
204
220
|
"id": "teknium/openhermes-2.5-mistral-7b",
|
205
221
|
"maxOutput": undefined,
|
206
222
|
"reasoning": false,
|
223
|
+
"releasedAt": "2024-04-24",
|
207
224
|
"type": "chat",
|
208
225
|
"vision": false,
|
209
226
|
},
|
210
227
|
{
|
211
228
|
"contextWindowTokens": 65535,
|
212
229
|
"description": "WizardLM-2 8x22B is Microsoft AI's most advanced Wizard model. It demonstrates highly competitive performance compared to leading proprietary models, and it consistently outperforms all existing state-of-the-art opensource models.",
|
213
|
-
"displayName": "
|
230
|
+
"displayName": "WizardLM-2 8x22B",
|
214
231
|
"enabled": false,
|
215
232
|
"functionCall": false,
|
216
233
|
"id": "microsoft/wizardlm-2-8x22b",
|
217
234
|
"maxOutput": undefined,
|
218
235
|
"reasoning": false,
|
236
|
+
"releasedAt": "2024-04-24",
|
219
237
|
"type": "chat",
|
220
238
|
"vision": false,
|
221
239
|
},
|
@@ -1,5 +1,3 @@
|
|
1
|
-
import type { ChatModelCard } from '@/types/llm';
|
2
|
-
|
3
1
|
import { ModelProvider } from '../types';
|
4
2
|
import { processMultiProviderModelList } from '../utils/modelParse';
|
5
3
|
import { createOpenAICompatibleRuntime } from '../utils/openaiCompatibleFactory';
|
@@ -16,39 +14,10 @@ export const LobeNovitaAI = createOpenAICompatibleRuntime({
|
|
16
14
|
chatCompletion: () => process.env.DEBUG_NOVITA_CHAT_COMPLETION === '1',
|
17
15
|
},
|
18
16
|
models: async ({ client }) => {
|
19
|
-
const reasoningKeywords = ['deepseek-r1'];
|
20
|
-
|
21
17
|
const modelsPage = (await client.models.list()) as any;
|
22
18
|
const modelList: NovitaModelCard[] = modelsPage.data;
|
23
19
|
|
24
|
-
|
25
|
-
const baseModels = await processMultiProviderModelList(modelList);
|
26
|
-
|
27
|
-
// 合并 Novita 获取的模型信息
|
28
|
-
return baseModels
|
29
|
-
.map((baseModel) => {
|
30
|
-
const model = modelList.find((m) => m.id === baseModel.id);
|
31
|
-
|
32
|
-
if (!model) return baseModel;
|
33
|
-
|
34
|
-
return {
|
35
|
-
...baseModel,
|
36
|
-
contextWindowTokens: model.context_size,
|
37
|
-
description: model.description,
|
38
|
-
displayName: model.title,
|
39
|
-
functionCall:
|
40
|
-
baseModel.functionCall ||
|
41
|
-
model.description.toLowerCase().includes('function calling') ||
|
42
|
-
false,
|
43
|
-
reasoning:
|
44
|
-
baseModel.reasoning ||
|
45
|
-
model.description.toLowerCase().includes('reasoning task') ||
|
46
|
-
reasoningKeywords.some((keyword) => model.id.toLowerCase().includes(keyword)) ||
|
47
|
-
false,
|
48
|
-
vision: baseModel.vision || model.description.toLowerCase().includes('vision') || false,
|
49
|
-
};
|
50
|
-
})
|
51
|
-
.filter(Boolean) as ChatModelCard[];
|
20
|
+
return await processMultiProviderModelList(modelList, 'novita');
|
52
21
|
},
|
53
22
|
provider: ModelProvider.Novita,
|
54
23
|
});
|
@@ -15,7 +15,7 @@ export const LobeNvidiaAI = createOpenAICompatibleRuntime({
|
|
15
15
|
const modelsPage = (await client.models.list()) as any;
|
16
16
|
const modelList: NvidiaModelCard[] = modelsPage.data;
|
17
17
|
|
18
|
-
return processMultiProviderModelList(modelList);
|
18
|
+
return processMultiProviderModelList(modelList, 'nvidia');
|
19
19
|
},
|
20
20
|
provider: ModelProvider.Nvidia,
|
21
21
|
});
|