@lobehub/chat 1.126.2 → 1.126.3

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.
@@ -0,0 +1,49 @@
1
+ import { ModelProvider } from '../types';
2
+ import { processMultiProviderModelList } from '../utils/modelParse';
3
+ import { createOpenAICompatibleRuntime } from '../utils/openaiCompatibleFactory';
4
+
5
+ export interface CometAPIModelCard {
6
+ id: string;
7
+ object: string;
8
+ owned_by: string;
9
+ }
10
+
11
+ export const LobeCometAPIAI = createOpenAICompatibleRuntime({
12
+ baseURL: 'https://api.cometapi.com/v1',
13
+ chatCompletion: {
14
+ handlePayload: (payload) => {
15
+ const { model, ...rest } = payload;
16
+
17
+ return {
18
+ ...rest,
19
+ model,
20
+ stream: true,
21
+ } as any;
22
+ },
23
+ },
24
+ debug: {
25
+ chatCompletion: () => process.env.DEBUG_COMETAPI_COMPLETION === '1',
26
+ },
27
+ models: async ({ client }) => {
28
+ try {
29
+ const modelsPage = (await client.models.list()) as any;
30
+ const rawList: any[] = modelsPage.data || [];
31
+
32
+ // 处理模型列表,移除不必要的字段
33
+ const modelList: CometAPIModelCard[] = rawList.map((model) => ({
34
+ id: model.id,
35
+ object: model.object,
36
+ owned_by: model.owned_by,
37
+ }));
38
+
39
+ return await processMultiProviderModelList(modelList, 'cometapi');
40
+ } catch (error) {
41
+ console.warn(
42
+ 'Failed to fetch CometAPI models. Please ensure your CometAPI API key is valid:',
43
+ error,
44
+ );
45
+ return [];
46
+ }
47
+ },
48
+ provider: ModelProvider.CometAPI,
49
+ });
@@ -5,6 +5,7 @@ export { LobeAzureOpenAI } from './azureOpenai';
5
5
  export * from './BaseAI';
6
6
  export { LobeBedrockAI } from './bedrock';
7
7
  export { LobeBflAI } from './bfl';
8
+ export { LobeCometAPIAI } from './cometapi';
8
9
  export { LobeDeepSeekAI } from './deepseek';
9
10
  export { LobeGoogleAI } from './google';
10
11
  export { LobeGroq } from './groq';
@@ -11,6 +11,7 @@ import { LobeBedrockAI } from './bedrock';
11
11
  import { LobeBflAI } from './bfl';
12
12
  import { LobeCloudflareAI } from './cloudflare';
13
13
  import { LobeCohereAI } from './cohere';
14
+ import { LobeCometAPIAI } from './cometapi';
14
15
  import { LobeDeepSeekAI } from './deepseek';
15
16
  import { LobeFalAI } from './fal';
16
17
  import { LobeFireworksAI } from './fireworksai';
@@ -73,6 +74,7 @@ export const providerRuntimeMap = {
73
74
  bfl: LobeBflAI,
74
75
  cloudflare: LobeCloudflareAI,
75
76
  cohere: LobeCohereAI,
77
+ cometapi: LobeCometAPIAI,
76
78
  deepseek: LobeDeepSeekAI,
77
79
  fal: LobeFalAI,
78
80
  fireworksai: LobeFireworksAI,
@@ -40,6 +40,7 @@ export enum ModelProvider {
40
40
  Bedrock = 'bedrock',
41
41
  Cloudflare = 'cloudflare',
42
42
  Cohere = 'cohere',
43
+ CometAPI = 'cometapi',
43
44
  DeepSeek = 'deepseek',
44
45
  Fal = 'fal',
45
46
  FireworksAI = 'fireworksai',
@@ -49,6 +49,7 @@ export interface UserKeyVaults extends SearchEngineKeyVaults {
49
49
  bedrock?: AWSBedrockKeyVault;
50
50
  cloudflare?: CloudflareKeyVault;
51
51
  cohere?: OpenAICompatibleKeyVault;
52
+ cometapi?: OpenAICompatibleKeyVault;
52
53
  deepseek?: OpenAICompatibleKeyVault;
53
54
  fal?: FalKeyVault;
54
55
  fireworksai?: OpenAICompatibleKeyVault;
package/src/config/llm.ts CHANGED
@@ -184,6 +184,9 @@ export const getLLMConfig = () => {
184
184
  ENABLED_AKASHCHAT: z.boolean(),
185
185
  AKASHCHAT_API_KEY: z.string().optional(),
186
186
 
187
+ ENABLED_COMETAPI: z.boolean(),
188
+ COMETAPI_KEY: z.string().optional(),
189
+
187
190
  ENABLED_AIHUBMIX: z.boolean(),
188
191
  AIHUBMIX_API_KEY: z.string().optional(),
189
192
 
@@ -369,6 +372,9 @@ export const getLLMConfig = () => {
369
372
  ENABLED_AKASHCHAT: !!process.env.AKASHCHAT_API_KEY,
370
373
  AKASHCHAT_API_KEY: process.env.AKASHCHAT_API_KEY,
371
374
 
375
+ ENABLED_COMETAPI: !!process.env.COMETAPI_KEY,
376
+ COMETAPI_KEY: process.env.COMETAPI_KEY,
377
+
372
378
  ENABLED_AIHUBMIX: !!process.env.AIHUBMIX_API_KEY,
373
379
  AIHUBMIX_API_KEY: process.env.AIHUBMIX_API_KEY,
374
380
 
@@ -0,0 +1,24 @@
1
+ import { ModelProviderCard } from '@/types/llm';
2
+
3
+ // ref: https://api.cometapi.com/pricing
4
+ const CometAPI: ModelProviderCard = {
5
+ chatModels: [],
6
+ checkModel: 'gpt-5-mini',
7
+ description:
8
+ 'CometAPI 是一个提供多种前沿大模型接口的服务平台,支持 OpenAI、Anthropic、Google 及更多,适合多样化的开发和应用需求。用户可根据自身需求灵活选择最优的模型和价格,助力AI体验的提升。',
9
+ enabled: true,
10
+ id: 'cometapi',
11
+ modelList: { showModelFetcher: true },
12
+ modelsUrl: 'https://api.cometapi.com/v1/models',
13
+ name: 'CometAPI',
14
+ settings: {
15
+ proxyUrl: {
16
+ placeholder: 'https://api.cometapi.com/v1',
17
+ },
18
+ sdkType: 'openai',
19
+ showModelFetcher: true,
20
+ },
21
+ url: 'https://cometapi.com',
22
+ };
23
+
24
+ export default CometAPI;
@@ -13,6 +13,7 @@ import BedrockProvider from './bedrock';
13
13
  import BflProvider from './bfl';
14
14
  import CloudflareProvider from './cloudflare';
15
15
  import CohereProvider from './cohere';
16
+ import CometAPIProvider from './cometapi';
16
17
  import DeepSeekProvider from './deepseek';
17
18
  import FalProvider from './fal';
18
19
  import FireworksAIProvider from './fireworksai';
@@ -179,6 +180,7 @@ export const DEFAULT_MODEL_PROVIDER_LIST = [
179
180
  AkashChatProvider,
180
181
  QiniuProvider,
181
182
  NebiusProvider,
183
+ CometAPIProvider,
182
184
  ];
183
185
 
184
186
  export const filterEnabledModels = (provider: ModelProviderCard) => {
@@ -203,6 +205,7 @@ export { default as BedrockProviderCard } from './bedrock';
203
205
  export { default as BflProviderCard } from './bfl';
204
206
  export { default as CloudflareProviderCard } from './cloudflare';
205
207
  export { default as CohereProviderCard } from './cohere';
208
+ export { default as CometAPIProviderCard } from './cometapi';
206
209
  export { default as DeepSeekProviderCard } from './deepseek';
207
210
  export { default as FalProviderCard } from './fal';
208
211
  export { default as FireworksAIProviderCard } from './fireworksai';