@lobehub/chat 1.116.4 → 1.117.1

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.
Files changed (64) hide show
  1. package/CHANGELOG.md +117 -0
  2. package/changelog/v1.json +21 -0
  3. package/locales/ar/models.json +3 -0
  4. package/locales/bg-BG/models.json +3 -0
  5. package/locales/de-DE/models.json +3 -0
  6. package/locales/en-US/models.json +3 -0
  7. package/locales/es-ES/models.json +3 -0
  8. package/locales/fa-IR/models.json +3 -0
  9. package/locales/fr-FR/models.json +3 -0
  10. package/locales/it-IT/models.json +3 -0
  11. package/locales/ja-JP/models.json +3 -0
  12. package/locales/ko-KR/models.json +3 -0
  13. package/locales/nl-NL/models.json +3 -0
  14. package/locales/pl-PL/models.json +3 -0
  15. package/locales/pt-BR/models.json +3 -0
  16. package/locales/ru-RU/models.json +3 -0
  17. package/locales/tr-TR/models.json +3 -0
  18. package/locales/vi-VN/models.json +3 -0
  19. package/locales/zh-CN/models.json +3 -0
  20. package/locales/zh-TW/models.json +3 -0
  21. package/package.json +1 -2
  22. package/packages/const/src/image.ts +9 -0
  23. package/packages/database/vitest.config.mts +1 -0
  24. package/packages/database/vitest.config.server.mts +1 -0
  25. package/packages/file-loaders/package.json +1 -1
  26. package/packages/model-runtime/src/RouterRuntime/createRuntime.ts +11 -9
  27. package/packages/model-runtime/src/google/createImage.test.ts +657 -0
  28. package/packages/model-runtime/src/google/createImage.ts +152 -0
  29. package/packages/model-runtime/src/google/index.test.ts +0 -328
  30. package/packages/model-runtime/src/google/index.ts +3 -40
  31. package/packages/model-runtime/src/utils/modelParse.ts +2 -1
  32. package/packages/model-runtime/src/utils/openaiCompatibleFactory/createImage.ts +239 -0
  33. package/packages/model-runtime/src/utils/openaiCompatibleFactory/index.test.ts +22 -22
  34. package/packages/model-runtime/src/utils/openaiCompatibleFactory/index.ts +9 -116
  35. package/packages/model-runtime/src/utils/postProcessModelList.ts +55 -0
  36. package/packages/model-runtime/src/utils/streams/google-ai.test.ts +7 -7
  37. package/packages/model-runtime/src/utils/streams/google-ai.ts +15 -2
  38. package/packages/model-runtime/src/utils/streams/openai/openai.test.ts +41 -0
  39. package/packages/model-runtime/src/utils/streams/openai/openai.ts +38 -2
  40. package/packages/model-runtime/src/utils/streams/protocol.test.ts +32 -0
  41. package/packages/model-runtime/src/utils/streams/protocol.ts +7 -3
  42. package/packages/model-runtime/src/utils/usageConverter.test.ts +58 -0
  43. package/packages/model-runtime/src/utils/usageConverter.ts +5 -1
  44. package/packages/utils/vitest.config.mts +1 -0
  45. package/src/components/ChatItem/ChatItem.tsx +183 -0
  46. package/src/components/ChatItem/components/Actions.tsx +25 -0
  47. package/src/components/ChatItem/components/Avatar.tsx +50 -0
  48. package/src/components/ChatItem/components/BorderSpacing.tsx +13 -0
  49. package/src/components/ChatItem/components/ErrorContent.tsx +24 -0
  50. package/src/components/ChatItem/components/Loading.tsx +26 -0
  51. package/src/components/ChatItem/components/MessageContent.tsx +76 -0
  52. package/src/components/ChatItem/components/Title.tsx +43 -0
  53. package/src/components/ChatItem/index.ts +2 -0
  54. package/src/components/ChatItem/style.ts +208 -0
  55. package/src/components/ChatItem/type.ts +80 -0
  56. package/src/config/aiModels/google.ts +42 -22
  57. package/src/config/aiModels/openrouter.ts +33 -0
  58. package/src/config/aiModels/vertexai.ts +4 -4
  59. package/src/features/ChatItem/index.tsx +1 -1
  60. package/src/features/Conversation/Extras/Usage/UsageDetail/index.tsx +6 -0
  61. package/src/features/Conversation/Extras/Usage/UsageDetail/tokens.test.ts +38 -0
  62. package/src/features/Conversation/Extras/Usage/UsageDetail/tokens.ts +13 -1
  63. package/src/locales/default/chat.ts +1 -0
  64. package/packages/model-runtime/src/UniformRuntime/index.ts +0 -117
@@ -1,117 +0,0 @@
1
- /**
2
- * @see https://github.com/lobehub/lobe-chat/discussions/6563
3
- */
4
- import { LobeRuntimeAI } from '../BaseAI';
5
- import { LobeOpenAI } from '../openai';
6
- import { providerRuntimeMap } from '../runtimeMap';
7
- import {
8
- type ChatCompletionErrorPayload,
9
- ChatMethodOptions,
10
- ChatStreamPayload,
11
- EmbeddingsOptions,
12
- EmbeddingsPayload,
13
- TextToImagePayload,
14
- TextToSpeechPayload,
15
- } from '../types';
16
-
17
- export interface RuntimeItem {
18
- id: string;
19
- models?: string[];
20
- runtime: LobeRuntimeAI;
21
- }
22
-
23
- interface ProviderInitParams extends Record<string, any> {
24
- accessKeyId?: string;
25
- accessKeySecret?: string;
26
- apiKey?: string;
27
- apiVersion?: string;
28
- baseURL?: string;
29
- baseURLOrAccountID?: string;
30
- dangerouslyAllowBrowser?: boolean;
31
- region?: string;
32
- sessionToken?: string;
33
- }
34
-
35
- interface ProviderInstance {
36
- apiType: keyof typeof providerRuntimeMap;
37
- models?: string[];
38
- params: ProviderInitParams;
39
- runtime?: typeof LobeOpenAI;
40
- }
41
-
42
- interface UniformRuntimeOptions {
43
- chat?: {
44
- handleError?: (error: any) => Omit<ChatCompletionErrorPayload, 'provider'> | undefined;
45
- };
46
- }
47
-
48
- class UniformRuntime {
49
- private _runtimes: RuntimeItem[];
50
- private _options: UniformRuntimeOptions;
51
-
52
- constructor(id: string, providers: ProviderInstance[], options: UniformRuntimeOptions) {
53
- if (providers.length === 0) {
54
- throw new Error('empty providers');
55
- }
56
-
57
- this._runtimes = providers.map((options) => {
58
- const providerAI = options.runtime ?? providerRuntimeMap[options.apiType] ?? LobeOpenAI;
59
- const runtime: LobeRuntimeAI = new providerAI({ ...options.params, id });
60
-
61
- return { id: options.apiType, models: options.models, runtime };
62
- });
63
-
64
- this._options = options;
65
- }
66
-
67
- // 检查下是否能匹配到特定模型,否则默认使用第一个 runtime
68
- getRuntimeByModel(model: string) {
69
- const runtimeItem =
70
- this._runtimes.find((runtime) => runtime.models && runtime.models.includes(model)) ||
71
- this._runtimes[0];
72
-
73
- return runtimeItem.runtime;
74
- }
75
-
76
- async chat(payload: ChatStreamPayload, options?: ChatMethodOptions) {
77
- try {
78
- const runtime = this.getRuntimeByModel(payload.model);
79
-
80
- return await runtime.chat!(payload, options);
81
- } catch (e) {
82
- if (this._options.chat?.handleError) {
83
- const error = this._options.chat.handleError(e);
84
-
85
- if (error) {
86
- throw error;
87
- }
88
- }
89
-
90
- throw e;
91
- }
92
- }
93
-
94
- async textToImage(payload: TextToImagePayload) {
95
- const runtime = this.getRuntimeByModel(payload.model);
96
-
97
- return runtime.textToImage?.(payload);
98
- }
99
-
100
- async models() {
101
- return this._runtimes[0].runtime.models?.();
102
- }
103
-
104
- async embeddings(payload: EmbeddingsPayload, options?: EmbeddingsOptions) {
105
- const runtime = this.getRuntimeByModel(payload.model);
106
-
107
- return runtime.embeddings?.(payload, options);
108
- }
109
-
110
- async textToSpeech(payload: TextToSpeechPayload, options?: EmbeddingsOptions) {
111
- const runtime = this.getRuntimeByModel(payload.model);
112
-
113
- return runtime.textToSpeech?.(payload, options);
114
- }
115
- }
116
-
117
- export default UniformRuntime;