@lobehub/chat 1.64.2 → 1.65.0

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 (62) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/changelog/v1.json +21 -0
  3. package/locales/ar/chat.json +7 -1
  4. package/locales/ar/models.json +6 -0
  5. package/locales/bg-BG/chat.json +7 -1
  6. package/locales/bg-BG/models.json +6 -0
  7. package/locales/de-DE/chat.json +7 -1
  8. package/locales/de-DE/models.json +6 -0
  9. package/locales/en-US/chat.json +7 -1
  10. package/locales/en-US/models.json +6 -0
  11. package/locales/es-ES/chat.json +8 -2
  12. package/locales/es-ES/models.json +6 -0
  13. package/locales/fa-IR/chat.json +7 -1
  14. package/locales/fa-IR/models.json +6 -0
  15. package/locales/fr-FR/chat.json +7 -1
  16. package/locales/fr-FR/models.json +6 -0
  17. package/locales/it-IT/chat.json +7 -1
  18. package/locales/it-IT/models.json +6 -0
  19. package/locales/ja-JP/chat.json +7 -1
  20. package/locales/ja-JP/models.json +6 -0
  21. package/locales/ko-KR/chat.json +7 -1
  22. package/locales/ko-KR/models.json +6 -0
  23. package/locales/nl-NL/chat.json +8 -2
  24. package/locales/nl-NL/models.json +6 -0
  25. package/locales/pl-PL/chat.json +7 -1
  26. package/locales/pl-PL/models.json +6 -0
  27. package/locales/pt-BR/chat.json +7 -1
  28. package/locales/pt-BR/models.json +6 -0
  29. package/locales/ru-RU/chat.json +8 -2
  30. package/locales/ru-RU/models.json +6 -0
  31. package/locales/tr-TR/chat.json +7 -1
  32. package/locales/tr-TR/models.json +6 -0
  33. package/locales/vi-VN/chat.json +7 -1
  34. package/locales/vi-VN/models.json +6 -0
  35. package/locales/zh-CN/chat.json +7 -1
  36. package/locales/zh-CN/models.json +6 -0
  37. package/locales/zh-TW/chat.json +7 -1
  38. package/locales/zh-TW/models.json +6 -0
  39. package/package.json +2 -2
  40. package/src/config/aiModels/anthropic.ts +26 -0
  41. package/src/config/aiModels/bedrock.ts +23 -2
  42. package/src/config/aiModels/google.ts +7 -0
  43. package/src/config/modelProviders/anthropic.ts +34 -0
  44. package/src/config/modelProviders/bedrock.ts +51 -0
  45. package/src/const/settings/agent.ts +2 -0
  46. package/src/features/ChatInput/ActionBar/Model/ControlsForm.tsx +38 -13
  47. package/src/features/ChatInput/ActionBar/Model/ReasoningTokenSlider.tsx +92 -0
  48. package/src/features/ChatInput/ActionBar/Model/index.tsx +13 -18
  49. package/src/libs/agent-runtime/anthropic/index.ts +32 -14
  50. package/src/libs/agent-runtime/types/chat.ts +7 -1
  51. package/src/libs/agent-runtime/utils/streams/anthropic.test.ts +126 -0
  52. package/src/libs/agent-runtime/utils/streams/anthropic.ts +46 -16
  53. package/src/libs/agent-runtime/utils/streams/protocol.ts +4 -0
  54. package/src/locales/default/chat.ts +7 -1
  55. package/src/services/chat.ts +26 -0
  56. package/src/store/agent/slices/chat/__snapshots__/selectors.test.ts.snap +2 -0
  57. package/src/store/aiInfra/slices/aiModel/selectors.ts +6 -6
  58. package/src/store/chat/slices/builtinTool/actions/searXNG.test.ts +288 -0
  59. package/src/store/user/slices/settings/selectors/__snapshots__/settings.test.ts.snap +2 -0
  60. package/src/types/agent/index.ts +23 -9
  61. package/src/types/aiModel.ts +3 -8
  62. package/src/features/ChatInput/ActionBar/Model/ExtendControls.tsx +0 -40
@@ -467,6 +467,9 @@
467
467
  "anthropic.claude-3-5-sonnet-20241022-v2:0": {
468
468
  "description": "Claude 3.5 Sonnet установил новые стандарты в отрасли, превзойдя модели конкурентов и Claude 3 Opus, продемонстрировав отличные результаты в широкомасштабных оценках, при этом обладая скоростью и стоимостью наших моделей среднего уровня."
469
469
  },
470
+ "anthropic.claude-3-7-sonnet-20250219-v1:0": {
471
+ "description": "Claude 3.7 Sonnet — это самая мощная модель от Anthropic, обладающая передовыми характеристиками в области высоко сложных задач. Она может обрабатывать открытые подсказки и невидимые сценарии, демонстрируя отличную плавность и человеческое понимание. Claude 3.7 Sonnet демонстрирует передовые возможности генеративного AI. Claude 3.7 Sonnet может обрабатывать изображения и возвращать текстовый вывод, имея контекстное окно в 200K."
472
+ },
470
473
  "anthropic.claude-3-haiku-20240307-v1:0": {
471
474
  "description": "Claude 3 Haiku — это самая быстрая и компактная модель от Anthropic, обеспечивающая почти мгновенную скорость ответа. Она может быстро отвечать на простые запросы и запросы. Клиенты смогут создать бесшовный AI-опыт, имитирующий человеческое взаимодействие. Claude 3 Haiku может обрабатывать изображения и возвращать текстовый вывод, имея контекстное окно в 200K."
472
475
  },
@@ -524,6 +527,9 @@
524
527
  "claude-3-5-sonnet-20241022": {
525
528
  "description": "Claude 3.5 Sonnet предлагает возможности, превышающие Opus, и скорость, превышающую Sonnet, при этом сохраняя ту же цену. Sonnet особенно хорош в программировании, данных, визуальной обработке и代理задачах."
526
529
  },
530
+ "claude-3-7-sonnet-20250219": {
531
+ "description": "Claude 3.7 Sonnet — это самая мощная модель от Anthropic, обладающая передовыми характеристиками в области высоко сложных задач. Она может обрабатывать открытые подсказки и невидимые сценарии, демонстрируя отличную плавность и человеческое понимание. Claude 3.7 Sonnet демонстрирует передовые возможности генеративного AI. Claude 3.7 Sonnet может обрабатывать изображения и возвращать текстовый вывод, имея контекстное окно в 200K."
532
+ },
527
533
  "claude-3-haiku-20240307": {
528
534
  "description": "Claude 3 Haiku — это самая быстрая и компактная модель от Anthropic, предназначенная для достижения почти мгновенных ответов. Она обладает быстрой и точной направленной производительностью."
529
535
  },
@@ -31,7 +31,13 @@
31
31
  },
32
32
  "duplicateTitle": "{{title}} Kopya",
33
33
  "emptyAgent": "Asistan yok",
34
- "extendControls": {
34
+ "extendParams": {
35
+ "enableReasoning": {
36
+ "title": "Derin Düşünmeyi Aç"
37
+ },
38
+ "reasoningBudgetToken": {
39
+ "title": "Düşünme Tüketim Tokeni"
40
+ },
35
41
  "title": "Model Genişletme Özellikleri"
36
42
  },
37
43
  "historyRange": "Geçmiş Aralığı",
@@ -467,6 +467,9 @@
467
467
  "anthropic.claude-3-5-sonnet-20241022-v2:0": {
468
468
  "description": "Claude 3.5 Sonnet, sektör standartlarını yükselterek, rakip modelleri ve Claude 3 Opus'u geride bırakarak, geniş bir değerlendirme yelpazesinde mükemmel performans sergilemekte, orta seviye modellerimizin hız ve maliyet avantajlarını sunmaktadır."
469
469
  },
470
+ "anthropic.claude-3-7-sonnet-20250219-v1:0": {
471
+ "description": "Claude 3.7 Sonnet, endüstri standartlarını yükselterek, rakip modelleri ve Claude 3 Opus'u geride bırakarak, geniş bir değerlendirme yelpazesinde mükemmel performans sergilemekte, orta seviye modellerimizin hız ve maliyet avantajlarını sunmaktadır."
472
+ },
470
473
  "anthropic.claude-3-haiku-20240307-v1:0": {
471
474
  "description": "Claude 3 Haiku, Anthropic'in en hızlı ve en kompakt modelidir, neredeyse anında yanıt hızı sunar. Basit sorgular ve taleplere hızlı bir şekilde yanıt verebilir. Müşteriler, insan etkileşimini taklit eden kesintisiz bir AI deneyimi oluşturabileceklerdir. Claude 3 Haiku, görüntüleri işleyebilir ve metin çıktısı döndürebilir, 200K bağlam penceresine sahiptir."
472
475
  },
@@ -524,6 +527,9 @@
524
527
  "claude-3-5-sonnet-20241022": {
525
528
  "description": "Claude 3.5 Sonnet, Opus'tan daha fazla yetenek ve Sonnet'ten daha hızlı performans sunarken, aynı fiyatta kalmaktadır. Sonnet, programlama, veri bilimi, görsel işleme ve aracı görevlerde özellikle güçlüdür."
526
529
  },
530
+ "claude-3-7-sonnet-20250219": {
531
+ "description": "Claude 3.7 Sonnet, endüstri standartlarını yükselterek, rakip modelleri ve Claude 3 Opus'u geride bırakarak, geniş bir değerlendirme yelpazesinde mükemmel performans sergilemekte, orta seviye modellerimizin hız ve maliyet avantajlarını sunmaktadır."
532
+ },
527
533
  "claude-3-haiku-20240307": {
528
534
  "description": "Claude 3 Haiku, Anthropic'in en hızlı ve en kompakt modelidir, neredeyse anlık yanıtlar sağlamak için tasarlanmıştır. Hızlı ve doğru yönlendirme performansına sahiptir."
529
535
  },
@@ -31,7 +31,13 @@
31
31
  },
32
32
  "duplicateTitle": "{{title}} Bản sao",
33
33
  "emptyAgent": "Không có trợ lý",
34
- "extendControls": {
34
+ "extendParams": {
35
+ "enableReasoning": {
36
+ "title": "Bật tư duy sâu sắc"
37
+ },
38
+ "reasoningBudgetToken": {
39
+ "title": "Token tiêu tốn cho tư duy"
40
+ },
35
41
  "title": "Chức năng mở rộng mô hình"
36
42
  },
37
43
  "historyRange": "Phạm vi lịch sử",
@@ -467,6 +467,9 @@
467
467
  "anthropic.claude-3-5-sonnet-20241022-v2:0": {
468
468
  "description": "Claude 3.5 Sonnet nâng cao tiêu chuẩn ngành, hiệu suất vượt trội so với các mô hình đối thủ và Claude 3 Opus, thể hiện xuất sắc trong các đánh giá rộng rãi, đồng thời có tốc độ và chi phí tương đương với các mô hình tầm trung của chúng tôi."
469
469
  },
470
+ "anthropic.claude-3-7-sonnet-20250219-v1:0": {
471
+ "description": "Claude 3.7 Sonnet là mô hình AI mạnh nhất của Anthropic, với hiệu suất vượt trội so với các mô hình đối thủ và Claude 3 Opus, thể hiện xuất sắc trong nhiều đánh giá rộng rãi, đồng thời có tốc độ và chi phí tương đương với các mô hình tầm trung của chúng tôi."
472
+ },
470
473
  "anthropic.claude-3-haiku-20240307-v1:0": {
471
474
  "description": "Claude 3 Haiku là mô hình nhanh nhất và gọn nhẹ nhất của Anthropic, cung cấp tốc độ phản hồi gần như ngay lập tức. Nó có thể nhanh chóng trả lời các truy vấn và yêu cầu đơn giản. Khách hàng sẽ có thể xây dựng trải nghiệm AI liền mạch mô phỏng tương tác của con người. Claude 3 Haiku có thể xử lý hình ảnh và trả về đầu ra văn bản, với cửa sổ ngữ cảnh 200K."
472
475
  },
@@ -524,6 +527,9 @@
524
527
  "claude-3-5-sonnet-20241022": {
525
528
  "description": "Claude 3.5 Sonnet cung cấp khả năng vượt xa Opus và tốc độ nhanh hơn Sonnet, đồng thời giữ mức giá giống như Sonnet. Sonnet đặc biệt xuất sắc trong lập trình, khoa học dữ liệu, xử lý hình ảnh và các nhiệm vụ đại diện."
526
529
  },
530
+ "claude-3-7-sonnet-20250219": {
531
+ "description": "Claude 3.7 Sonnet là mô hình AI mạnh nhất của Anthropic, với hiệu suất vượt trội so với các mô hình đối thủ và Claude 3 Opus, thể hiện xuất sắc trong nhiều đánh giá rộng rãi, đồng thời có tốc độ và chi phí tương đương với các mô hình tầm trung của chúng tôi."
532
+ },
527
533
  "claude-3-haiku-20240307": {
528
534
  "description": "Claude 3 Haiku là mô hình nhanh nhất và gọn nhẹ nhất của Anthropic, được thiết kế để đạt được phản hồi gần như ngay lập tức. Nó có hiệu suất định hướng nhanh và chính xác."
529
535
  },
@@ -31,7 +31,13 @@
31
31
  },
32
32
  "duplicateTitle": "{{title}} 副本",
33
33
  "emptyAgent": "暂无助手",
34
- "extendControls": {
34
+ "extendParams": {
35
+ "enableReasoning": {
36
+ "title": "开启深度思考"
37
+ },
38
+ "reasoningBudgetToken": {
39
+ "title": "思考消耗 Token"
40
+ },
35
41
  "title": "模型扩展功能"
36
42
  },
37
43
  "historyRange": "历史范围",
@@ -467,6 +467,9 @@
467
467
  "anthropic.claude-3-5-sonnet-20241022-v2:0": {
468
468
  "description": "Claude 3.5 Sonnet 提升了行业标准,性能超过竞争对手模型和 Claude 3 Opus,在广泛的评估中表现出色,同时具有我们中等层级模型的速度和成本。"
469
469
  },
470
+ "anthropic.claude-3-7-sonnet-20250219-v1:0": {
471
+ "description": "Claude 3.7 sonnet 是 Anthropic 最快的下一代模型。与 Claude 3 Haiku 相比,Claude 3.7 Sonnet 在各项技能上都有所提升,并在许多智力基准测试中超越了上一代最大的模型 Claude 3 Opus。"
472
+ },
470
473
  "anthropic.claude-3-haiku-20240307-v1:0": {
471
474
  "description": "Claude 3 Haiku 是 Anthropic 最快、最紧凑的模型,提供近乎即时的响应速度。它可以快速回答简单的查询和请求。客户将能够构建模仿人类互动的无缝 AI 体验。Claude 3 Haiku 可以处理图像并返回文本输出,具有 200K 的上下文窗口。"
472
475
  },
@@ -524,6 +527,9 @@
524
527
  "claude-3-5-sonnet-20241022": {
525
528
  "description": "Claude 3.5 Sonnet 提供了超越 Opus 的能力和比 Sonnet 更快的速度,同时保持与 Sonnet 相同的价格。Sonnet 特别擅长编程、数据科学、视觉处理、代理任务。"
526
529
  },
530
+ "claude-3-7-sonnet-20250219": {
531
+ "description": "Claude 3.7 Sonnet 是 Anthropic 迄今为止最智能的模型,也是市场上首个混合推理模型。Claude 3.7 Sonnet 可以产生近乎即时的响应或延长的逐步思考,用户可以清晰地看到这些过程。Sonnet 特别擅长编程、数据科学、视觉处理、代理任务。"
532
+ },
527
533
  "claude-3-haiku-20240307": {
528
534
  "description": "Claude 3 Haiku 是 Anthropic 的最快且最紧凑的模型,旨在实现近乎即时的响应。它具有快速且准确的定向性能。"
529
535
  },
@@ -31,7 +31,13 @@
31
31
  },
32
32
  "duplicateTitle": "{{title}} 副本",
33
33
  "emptyAgent": "暫無助手",
34
- "extendControls": {
34
+ "extendParams": {
35
+ "enableReasoning": {
36
+ "title": "開啟深度思考"
37
+ },
38
+ "reasoningBudgetToken": {
39
+ "title": "思考消耗 Token"
40
+ },
35
41
  "title": "模型擴展功能"
36
42
  },
37
43
  "historyRange": "歷史範圍",
@@ -467,6 +467,9 @@
467
467
  "anthropic.claude-3-5-sonnet-20241022-v2:0": {
468
468
  "description": "Claude 3.5 Sonnet 提升了行業標準,性能超越競爭對手模型和 Claude 3 Opus,在廣泛的評估中表現出色,同時具備我們中等層級模型的速度和成本。"
469
469
  },
470
+ "anthropic.claude-3-7-sonnet-20250219-v1:0": {
471
+ "description": "Claude 3.7 Sonnet 提升了行業標準,性能超越競爭對手模型和 Claude 3 Opus,在廣泛的評估中表現出色,同時具備我們中等層級模型的速度和成本。"
472
+ },
470
473
  "anthropic.claude-3-haiku-20240307-v1:0": {
471
474
  "description": "Claude 3 Haiku是Anthropic最快、最緊湊的模型,提供近乎即時的響應速度。它可以快速回答簡單的查詢和請求。客戶將能夠構建模仿人類互動的無縫AI體驗。Claude 3 Haiku可以處理圖像並返回文本輸出,具有200K的上下文窗口。"
472
475
  },
@@ -524,6 +527,9 @@
524
527
  "claude-3-5-sonnet-20241022": {
525
528
  "description": "Claude 3.5 Sonnet 提供了超越 Opus 的能力和比 Sonnet 更快的速度,同時保持與 Sonnet 相同的價格。Sonnet 特別擅長編程、數據科學、視覺處理、代理任務。"
526
529
  },
530
+ "claude-3-7-sonnet-20250219": {
531
+ "description": "Claude 3.7 Sonnet 提升了行業標準,性能超越競爭對手模型和 Claude 3 Opus,在廣泛的評估中表現出色,同時具備我們中等層級模型的速度和成本。"
532
+ },
527
533
  "claude-3-haiku-20240307": {
528
534
  "description": "Claude 3 Haiku 是 Anthropic 的最快且最緊湊的模型,旨在實現近乎即時的響應。它具有快速且準確的定向性能。"
529
535
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/chat",
3
- "version": "1.64.2",
3
+ "version": "1.65.0",
4
4
  "description": "Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
5
5
  "keywords": [
6
6
  "framework",
@@ -104,7 +104,7 @@
104
104
  "dependencies": {
105
105
  "@ant-design/icons": "^5.5.2",
106
106
  "@ant-design/pro-components": "^2.8.3",
107
- "@anthropic-ai/sdk": "^0.36.3",
107
+ "@anthropic-ai/sdk": "^0.37.0",
108
108
  "@auth/core": "^0.37.4",
109
109
  "@aws-sdk/client-bedrock-runtime": "^3.723.0",
110
110
  "@aws-sdk/client-s3": "^3.723.0",
@@ -4,6 +4,32 @@ const anthropicChatModels: AIChatModelCard[] = [
4
4
  {
5
5
  abilities: {
6
6
  functionCall: true,
7
+ reasoning: true,
8
+ vision: true,
9
+ },
10
+ contextWindowTokens: 200_000,
11
+ description:
12
+ 'Claude 3.7 Sonnet 是 Anthropic 迄今为止最智能的模型,也是市场上首个混合推理模型。Claude 3.7 Sonnet 可以产生近乎即时的响应或延长的逐步思考,用户可以清晰地看到这些过程。Sonnet 特别擅长编程、数据科学、视觉处理、代理任务。',
13
+ displayName: 'Claude 3.7 Sonnet 0219',
14
+ enabled: true,
15
+ id: 'claude-3-7-sonnet-20250219',
16
+ maxOutput: 8192,
17
+ pricing: {
18
+ cachedInput: 0.3,
19
+ input: 3,
20
+ output: 15,
21
+ writeCacheInput: 3.75,
22
+ },
23
+ releasedAt: '2025-02-24',
24
+ settings: {
25
+ extendParams: ['enableReasoning', 'reasoningBudgetToken'],
26
+ },
27
+ type: 'chat',
28
+ },
29
+ {
30
+ abilities: {
31
+ functionCall: true,
32
+ vision: true,
7
33
  },
8
34
  contextWindowTokens: 200_000,
9
35
  description:
@@ -22,6 +22,26 @@ const bedrockChatModels: AIChatModelCard[] = [
22
22
  tokens: 32_000,
23
23
  },
24
24
  */
25
+ {
26
+ abilities: {
27
+ functionCall: true,
28
+ reasoning: true,
29
+ vision: true,
30
+ },
31
+ contextWindowTokens: 200_000,
32
+ description:
33
+ 'Claude 3.7 sonnet 是 Anthropic 最快的下一代模型。与 Claude 3 Haiku 相比,Claude 3.7 Sonnet 在各项技能上都有所提升,并在许多智力基准测试中超越了上一代最大的模型 Claude 3 Opus。',
34
+ displayName: 'Claude 3.7 Sonnet',
35
+ enabled: true,
36
+ id: 'anthropic.claude-3-7-sonnet-20250219-v1:0',
37
+ maxOutput: 8192,
38
+ pricing: {
39
+ input: 3,
40
+ output: 15,
41
+ },
42
+ releasedAt: '2025-02-24',
43
+ type: 'chat',
44
+ },
25
45
  {
26
46
  abilities: {
27
47
  functionCall: true,
@@ -33,6 +53,7 @@ const bedrockChatModels: AIChatModelCard[] = [
33
53
  displayName: 'Claude 3.5 Sonnet',
34
54
  enabled: true,
35
55
  id: 'anthropic.claude-3-5-sonnet-20241022-v2:0',
56
+ maxOutput: 8192,
36
57
  pricing: {
37
58
  input: 3,
38
59
  output: 15,
@@ -51,7 +72,7 @@ const bedrockChatModels: AIChatModelCard[] = [
51
72
  displayName: 'Claude 3.5 Sonnet v2 (Inference profile)',
52
73
  enabled: true,
53
74
  id: 'us.anthropic.claude-3-5-sonnet-20241022-v2:0',
54
- maxOutput: 4096,
75
+ maxOutput: 8192,
55
76
  pricing: {
56
77
  input: 3,
57
78
  output: 15,
@@ -69,8 +90,8 @@ const bedrockChatModels: AIChatModelCard[] = [
69
90
  'Claude 3.5 Sonnet 提升了行业标准,性能超过竞争对手模型和 Claude 3 Opus,在广泛的评估中表现出色,同时具有我们中等层级模型的速度和成本。',
70
91
  displayName: 'Claude 3.5 Sonnet 0620',
71
92
  enabled: true,
72
-
73
93
  id: 'anthropic.claude-3-5-sonnet-20240620-v1:0',
94
+ maxOutput: 8192,
74
95
  pricing: {
75
96
  input: 3,
76
97
  output: 15,
@@ -4,6 +4,7 @@ const googleChatModels: AIChatModelCard[] = [
4
4
  {
5
5
  abilities: {
6
6
  functionCall: true,
7
+ search: true,
7
8
  vision: true,
8
9
  },
9
10
  contextWindowTokens: 2_097_152 + 8192,
@@ -19,6 +20,10 @@ const googleChatModels: AIChatModelCard[] = [
19
20
  output: 0,
20
21
  },
21
22
  releasedAt: '2025-02-05',
23
+ settings: {
24
+ searchImpl: 'params',
25
+ searchProvider: 'google',
26
+ },
22
27
  type: 'chat',
23
28
  },
24
29
  {
@@ -49,6 +54,7 @@ const googleChatModels: AIChatModelCard[] = [
49
54
  {
50
55
  abilities: {
51
56
  functionCall: true,
57
+ search: true,
52
58
  vision: true,
53
59
  },
54
60
  contextWindowTokens: 1_048_576 + 8192,
@@ -65,6 +71,7 @@ const googleChatModels: AIChatModelCard[] = [
65
71
  releasedAt: '2025-02-05',
66
72
  settings: {
67
73
  searchImpl: 'params',
74
+ searchProvider: 'google',
68
75
  },
69
76
  type: 'chat',
70
77
  },
@@ -3,6 +3,40 @@ import { ModelProviderCard } from '@/types/llm';
3
3
  // ref: https://docs.anthropic.com/en/docs/about-claude/models#model-names
4
4
  const Anthropic: ModelProviderCard = {
5
5
  chatModels: [
6
+ {
7
+ contextWindowTokens: 200_000,
8
+ description:
9
+ 'Claude 3.7 sonnet 是 Anthropic 最快的下一代模型。与 Claude 3 Haiku 相比,Claude 3.7 Sonnet 在各项技能上都有所提升,并在许多智力基准测试中超越了上一代最大的模型 Claude 3 Opus。',
10
+ displayName: 'Claude 3.7 Sonnet',
11
+ enabled: true,
12
+ functionCall: true,
13
+ id: 'claude-3-7-sonnet-20250219',
14
+ maxOutput: 8192,
15
+ pricing: {
16
+ cachedInput: 0.1,
17
+ input: 1,
18
+ output: 5,
19
+ writeCacheInput: 1.25,
20
+ },
21
+ releasedAt: '2025-02-24',
22
+ },
23
+ {
24
+ contextWindowTokens: 200_000,
25
+ description:
26
+ 'Claude 3.7 sonnet Extended thinking 是 Anthropic 最快的下一代模型。与 Claude 3 Haiku 相比,Claude 3.7 Sonnet 在各项技能上都有所提升,并在许多智力基准测试中超越了上一代最大的模型 Claude 3 Opus。',
27
+ displayName: 'Claude 3.7 Sonnet Extended thinking',
28
+ enabled: true,
29
+ functionCall: true,
30
+ id: 'claude-3-7-sonnet-20250219',
31
+ maxOutput: 64_000,
32
+ pricing: {
33
+ cachedInput: 0.1,
34
+ input: 1,
35
+ output: 5,
36
+ writeCacheInput: 1.25,
37
+ },
38
+ releasedAt: '2025-02-24',
39
+ },
6
40
  {
7
41
  contextWindowTokens: 200_000,
8
42
  description:
@@ -26,6 +26,57 @@ const Bedrock: ModelProviderCard = {
26
26
  tokens: 32_000,
27
27
  },
28
28
  */
29
+ {
30
+ contextWindowTokens: 200_000,
31
+ description:
32
+ 'Claude 3.7 sonnet 是 Anthropic 最快的下一代模型。与 Claude 3 Haiku 相比,Claude 3.7 Sonnet 在各项技能上都有所提升,并在许多智力基准测试中超越了上一代最大的模型 Claude 3 Opus。',
33
+ displayName: 'Claude 3.7 Sonnet',
34
+ enabled: true,
35
+ functionCall: true,
36
+ id: 'anthropic.claude-3-7-sonnet-20250219-v1:0',
37
+ maxOutput: 8192,
38
+ pricing: {
39
+ cachedInput: 0.1,
40
+ input: 1,
41
+ output: 5,
42
+ writeCacheInput: 1.25,
43
+ },
44
+ releasedAt: '2025-02-24',
45
+ },
46
+ {
47
+ contextWindowTokens: 200_000,
48
+ description:
49
+ 'Claude 3.7 sonnet Extended thinking 是 Anthropic 最快的下一代模型。与 Claude 3 Haiku 相比,Claude 3.7 Sonnet 在各项技能上都有所提升,并在许多智力基准测试中超越了上一代最大的模型 Claude 3 Opus。',
50
+ displayName: 'Claude 3.7 Sonnet Extended thinking',
51
+ enabled: true,
52
+ functionCall: true,
53
+ id: 'anthropic.claude-3-7-sonnet-20250219-v1:0',
54
+ maxOutput: 64_000,
55
+ pricing: {
56
+ cachedInput: 0.1,
57
+ input: 1,
58
+ output: 5,
59
+ writeCacheInput: 1.25,
60
+ },
61
+ releasedAt: '2025-02-24',
62
+ },
63
+ {
64
+ contextWindowTokens: 200_000,
65
+ description:
66
+ 'Claude 3.5 Haiku 是 Anthropic 最快的下一代模型。与 Claude 3 Haiku 相比,Claude 3.5 Haiku 在各项技能上都有所提升,并在许多智力基准测试中超越了上一代最大的模型 Claude 3 Opus。',
67
+ displayName: 'Claude 3.5 Haiku',
68
+ enabled: true,
69
+ functionCall: true,
70
+ id: 'anthropic.claude-3-5-haiku-20241022-v1:0',
71
+ maxOutput: 8192,
72
+ pricing: {
73
+ cachedInput: 0.1,
74
+ input: 1,
75
+ output: 5,
76
+ writeCacheInput: 1.25,
77
+ },
78
+ releasedAt: '2024-11-05',
79
+ },
29
80
  {
30
81
  contextWindowTokens: 200_000,
31
82
  description:
@@ -19,7 +19,9 @@ export const DEFAULT_AGENT_CHAT_CONFIG: LobeAgentChatConfig = {
19
19
  enableAutoCreateTopic: true,
20
20
  enableCompressHistory: true,
21
21
  enableHistoryCount: true,
22
+ enableReasoning: true,
22
23
  historyCount: 8,
24
+ reasoningBudgetToken: 1024,
23
25
  searchMode: 'off',
24
26
  };
25
27
 
@@ -1,32 +1,57 @@
1
1
  import { Form } from '@lobehub/ui';
2
+ import type { FormItemProps } from '@lobehub/ui';
2
3
  import { Switch } from 'antd';
4
+ import isEqual from 'fast-deep-equal';
3
5
  import { memo } from 'react';
6
+ import { useTranslation } from 'react-i18next';
4
7
 
5
8
  import { useAgentStore } from '@/store/agent';
6
9
  import { agentSelectors } from '@/store/agent/slices/chat';
7
10
  import { aiModelSelectors, useAiInfraStore } from '@/store/aiInfra';
8
11
 
12
+ import ReasoningTokenSlider from './ReasoningTokenSlider';
13
+
9
14
  const ControlsForm = memo(() => {
10
- const [model, provider] = useAgentStore((s) => [
15
+ const { t } = useTranslation('chat');
16
+ const [model, provider, updateAgentChatConfig] = useAgentStore((s) => [
11
17
  agentSelectors.currentAgentModel(s),
12
18
  agentSelectors.currentAgentModelProvider(s),
19
+ s.updateAgentChatConfig,
13
20
  ]);
14
- const modelExtendControls = useAiInfraStore(
15
- aiModelSelectors.modelExtendControls(model, provider),
16
- );
21
+ const config = useAgentStore(agentSelectors.currentAgentChatConfig, isEqual);
22
+
23
+ const modelExtendParams = useAiInfraStore(aiModelSelectors.modelExtendParams(model, provider));
24
+
25
+ const items: FormItemProps[] = [
26
+ {
27
+ children: <Switch />,
28
+ label: t('extendParams.enableReasoning.title'),
29
+ minWidth: undefined,
30
+ name: 'enableReasoning',
31
+ },
32
+ {
33
+ children: <ReasoningTokenSlider />,
34
+ label: t('extendParams.reasoningBudgetToken.title'),
35
+ layout: 'vertical',
36
+ minWidth: undefined,
37
+ name: 'reasoningBudgetToken',
38
+ style: {
39
+ paddingBottom: 0,
40
+ },
41
+ },
42
+ ];
17
43
 
18
44
  return (
19
45
  <Form
20
- itemMinWidth={200}
21
- items={modelExtendControls!.map((item: any) => ({
22
- children: <Switch />,
23
- label: item.key,
24
- minWidth: undefined,
25
- name: item.key,
26
- }))}
46
+ initialValues={config}
47
+ items={
48
+ (modelExtendParams || [])
49
+ .map((item: any) => items.find((i) => i.name === item))
50
+ .filter(Boolean) as FormItemProps[]
51
+ }
27
52
  itemsType={'flat'}
28
- onValuesChange={(_, values) => {
29
- console.log(values);
53
+ onValuesChange={async (_, values) => {
54
+ await updateAgentChatConfig(values);
30
55
  }}
31
56
  size={'small'}
32
57
  style={{ fontSize: 12 }}
@@ -0,0 +1,92 @@
1
+ import { InputNumber, Slider } from 'antd';
2
+ import { memo, useMemo } from 'react';
3
+ import { Flexbox } from 'react-layout-kit';
4
+ import useMergeState from 'use-merge-value';
5
+
6
+ const Kibi = 1024;
7
+
8
+ const exponent = (num: number) => Math.log2(num);
9
+ const getRealValue = (num: number) => Math.round(Math.pow(2, num));
10
+ const powerKibi = (num: number) => Math.round(Math.pow(2, num) * Kibi);
11
+
12
+ interface MaxTokenSliderProps {
13
+ defaultValue?: number;
14
+ onChange?: (value: number) => void;
15
+ value?: number;
16
+ }
17
+
18
+ const MaxTokenSlider = memo<MaxTokenSliderProps>(({ value, onChange, defaultValue }) => {
19
+ const [token, setTokens] = useMergeState(0, {
20
+ defaultValue,
21
+ onChange,
22
+ value: value,
23
+ });
24
+
25
+ const [powValue, setPowValue] = useMergeState(0, {
26
+ defaultValue: exponent(typeof defaultValue === 'undefined' ? 0 : defaultValue / 1024),
27
+ value: exponent(typeof value === 'undefined' ? 0 : value / Kibi),
28
+ });
29
+
30
+ const updateWithPowValue = (value: number) => {
31
+ setPowValue(value);
32
+
33
+ setTokens(powerKibi(value));
34
+ };
35
+
36
+ const updateWithRealValue = (value: number) => {
37
+ setTokens(Math.round(value));
38
+
39
+ setPowValue(exponent(value / Kibi));
40
+ };
41
+
42
+ const marks = useMemo(() => {
43
+ return {
44
+ [exponent(1)]: '1k',
45
+ [exponent(2)]: '2k',
46
+ [exponent(4)]: '4k', // 4 kibi = 4096
47
+ [exponent(8)]: '8k',
48
+ [exponent(16)]: '16k',
49
+ [exponent(32)]: '32k',
50
+ [exponent(64)]: '64k',
51
+ };
52
+ }, []);
53
+
54
+ return (
55
+ <Flexbox align={'center'} gap={12} horizontal>
56
+ <Flexbox flex={1}>
57
+ <Slider
58
+ marks={marks}
59
+ max={exponent(64)}
60
+ min={exponent(1)}
61
+ onChange={updateWithPowValue}
62
+ step={null}
63
+ tooltip={{
64
+ formatter: (x) => {
65
+ if (typeof x === 'undefined') return;
66
+
67
+ let value = getRealValue(x);
68
+
69
+ if (value < Kibi) return ((value * Kibi) / 1000).toFixed(0) + 'k';
70
+ },
71
+ }}
72
+ value={powValue}
73
+ />
74
+ </Flexbox>
75
+ <div>
76
+ <InputNumber
77
+ changeOnWheel
78
+ min={0}
79
+ onChange={(e) => {
80
+ if (!e && e !== 0) return;
81
+
82
+ updateWithRealValue(e);
83
+ }}
84
+ step={4 * Kibi}
85
+ style={{ width: 60 }}
86
+ value={token}
87
+ />
88
+ </div>
89
+ </Flexbox>
90
+ );
91
+ });
92
+ export default MaxTokenSlider;
@@ -1,5 +1,5 @@
1
1
  import { ModelIcon } from '@lobehub/icons';
2
- import { ActionIcon, Tooltip } from '@lobehub/ui';
2
+ import { ActionIcon } from '@lobehub/ui';
3
3
  import { Popover } from 'antd';
4
4
  import { createStyles } from 'antd-style';
5
5
  import { Settings2Icon } from 'lucide-react';
@@ -63,8 +63,8 @@ const ModelSwitch = memo(() => {
63
63
  agentSelectors.currentAgentModelProvider(s),
64
64
  ]);
65
65
 
66
- const isModelHasExtendControls = useAiInfraStore(
67
- aiModelSelectors.isModelHasExtendControls(model, provider),
66
+ const isModelHasExtendParams = useAiInfraStore(
67
+ aiModelSelectors.isModelHasExtendParams(model, provider),
68
68
  );
69
69
 
70
70
  const isMobile = useIsMobile();
@@ -82,34 +82,29 @@ const ModelSwitch = memo(() => {
82
82
  // );
83
83
 
84
84
  return (
85
- <Flexbox
86
- align={'center'}
87
- className={isModelHasExtendControls ? styles.container : ''}
88
- horizontal
89
- >
85
+ <Flexbox align={'center'} className={isModelHasExtendParams ? styles.container : ''} horizontal>
90
86
  <ModelSwitchPanel>
91
87
  <Center
92
- className={cx(styles.model, isModelHasExtendControls && styles.modelWithControl)}
88
+ className={cx(styles.model, isModelHasExtendParams && styles.modelWithControl)}
93
89
  height={36}
94
90
  width={36}
95
91
  >
96
- <Tooltip placement={'bottom'} title={[provider, model].join(' / ')}>
97
- <div className={styles.icon}>
98
- <ModelIcon model={model} size={22} />
99
- </div>
100
- </Tooltip>
92
+ <div className={styles.icon}>
93
+ <ModelIcon model={model} size={22} />
94
+ </div>
101
95
  </Center>
102
96
  </ModelSwitchPanel>
103
97
 
104
- {isModelHasExtendControls && (
98
+ {isModelHasExtendParams && (
105
99
  <Flexbox style={{ marginInlineStart: -4 }}>
106
100
  <Popover
107
101
  arrow={false}
108
102
  content={<ControlsForm />}
109
- open
103
+ placement={'topLeft'}
110
104
  styles={{
111
105
  body: {
112
- minWidth: isMobile ? undefined : 200,
106
+ minWidth: isMobile ? undefined : 350,
107
+ paddingBlock: 4,
113
108
  width: isMobile ? '100vw' : undefined,
114
109
  },
115
110
  }}
@@ -118,7 +113,7 @@ const ModelSwitch = memo(() => {
118
113
  icon={Settings2Icon}
119
114
  placement={'bottom'}
120
115
  style={{ borderRadius: 20 }}
121
- title={t('extendControls.title')}
116
+ title={t('extendParams.title')}
122
117
  />
123
118
  </Popover>
124
119
  </Flexbox>