@lobehub/chat 1.133.2 → 1.133.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.
Files changed (93) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/changelog/v1.json +12 -0
  3. package/locales/ar/image.json +7 -0
  4. package/locales/ar/models.json +1 -1
  5. package/locales/bg-BG/image.json +7 -0
  6. package/locales/de-DE/image.json +7 -0
  7. package/locales/en-US/image.json +7 -0
  8. package/locales/es-ES/image.json +7 -0
  9. package/locales/es-ES/tool.json +1 -1
  10. package/locales/fa-IR/image.json +7 -0
  11. package/locales/fa-IR/models.json +1 -1
  12. package/locales/fr-FR/image.json +7 -0
  13. package/locales/fr-FR/models.json +1 -1
  14. package/locales/it-IT/image.json +7 -0
  15. package/locales/ja-JP/image.json +7 -0
  16. package/locales/ko-KR/image.json +7 -0
  17. package/locales/nl-NL/image.json +7 -0
  18. package/locales/pl-PL/image.json +7 -0
  19. package/locales/pt-BR/image.json +7 -0
  20. package/locales/ru-RU/image.json +7 -0
  21. package/locales/ru-RU/tool.json +1 -1
  22. package/locales/tr-TR/image.json +7 -0
  23. package/locales/tr-TR/models.json +1 -1
  24. package/locales/vi-VN/image.json +7 -0
  25. package/locales/zh-CN/image.json +7 -0
  26. package/locales/zh-TW/image.json +7 -0
  27. package/package.json +4 -5
  28. package/packages/const/package.json +4 -0
  29. package/packages/const/src/currency.ts +2 -0
  30. package/packages/const/src/index.ts +1 -0
  31. package/packages/model-bank/package.json +2 -1
  32. package/packages/model-bank/src/aiModels/google.ts +6 -0
  33. package/packages/model-bank/src/aiModels/openai.ts +6 -22
  34. package/packages/model-bank/src/standard-parameters/index.ts +56 -46
  35. package/packages/model-runtime/package.json +1 -0
  36. package/packages/model-runtime/src/core/RouterRuntime/createRuntime.ts +4 -2
  37. package/packages/model-runtime/src/core/openaiCompatibleFactory/createImage.ts +12 -2
  38. package/packages/model-runtime/src/core/openaiCompatibleFactory/index.ts +16 -5
  39. package/packages/model-runtime/src/core/streams/anthropic.ts +25 -36
  40. package/packages/model-runtime/src/core/streams/google/google-ai.test.ts +1 -1
  41. package/packages/model-runtime/src/core/streams/google/index.ts +18 -42
  42. package/packages/model-runtime/src/core/streams/openai/openai.test.ts +7 -10
  43. package/packages/model-runtime/src/core/streams/openai/openai.ts +14 -11
  44. package/packages/model-runtime/src/core/streams/openai/responsesStream.ts +11 -5
  45. package/packages/model-runtime/src/core/streams/protocol.ts +25 -6
  46. package/packages/model-runtime/src/core/streams/qwen.ts +2 -2
  47. package/packages/model-runtime/src/core/streams/spark.ts +3 -3
  48. package/packages/model-runtime/src/core/streams/vertex-ai.test.ts +2 -2
  49. package/packages/model-runtime/src/core/streams/vertex-ai.ts +14 -23
  50. package/packages/model-runtime/src/core/usageConverters/anthropic.test.ts +99 -0
  51. package/packages/model-runtime/src/core/usageConverters/anthropic.ts +73 -0
  52. package/packages/model-runtime/src/core/usageConverters/google-ai.test.ts +88 -0
  53. package/packages/model-runtime/src/core/usageConverters/google-ai.ts +55 -0
  54. package/packages/model-runtime/src/core/usageConverters/index.ts +4 -0
  55. package/packages/model-runtime/src/core/usageConverters/openai.test.ts +429 -0
  56. package/packages/model-runtime/src/core/usageConverters/openai.ts +152 -0
  57. package/packages/model-runtime/src/core/usageConverters/utils/computeChatCost.test.ts +455 -0
  58. package/packages/model-runtime/src/core/usageConverters/utils/computeChatCost.ts +293 -0
  59. package/packages/model-runtime/src/core/usageConverters/utils/computeImageCost.test.ts +47 -0
  60. package/packages/model-runtime/src/core/usageConverters/utils/computeImageCost.ts +121 -0
  61. package/packages/model-runtime/src/core/usageConverters/utils/index.ts +11 -0
  62. package/packages/model-runtime/src/core/usageConverters/utils/withUsageCost.ts +19 -0
  63. package/packages/model-runtime/src/index.ts +2 -0
  64. package/packages/model-runtime/src/providers/anthropic/index.ts +48 -1
  65. package/packages/model-runtime/src/providers/google/createImage.ts +11 -2
  66. package/packages/model-runtime/src/providers/google/index.ts +8 -1
  67. package/packages/model-runtime/src/providers/openai/__snapshots__/index.test.ts.snap +7 -0
  68. package/packages/model-runtime/src/providers/zhipu/index.ts +3 -1
  69. package/packages/model-runtime/src/types/chat.ts +5 -3
  70. package/packages/model-runtime/src/types/image.ts +20 -9
  71. package/packages/model-runtime/src/utils/getModelPricing.ts +36 -0
  72. package/packages/obervability-otel/package.json +2 -2
  73. package/packages/ssrf-safe-fetch/index.test.ts +343 -0
  74. package/packages/ssrf-safe-fetch/index.ts +37 -0
  75. package/packages/ssrf-safe-fetch/package.json +17 -0
  76. package/packages/ssrf-safe-fetch/vitest.config.mts +10 -0
  77. package/packages/types/src/message/base.ts +43 -17
  78. package/packages/utils/src/client/apiKeyManager.test.ts +70 -0
  79. package/packages/utils/src/client/apiKeyManager.ts +41 -0
  80. package/packages/utils/src/client/index.ts +2 -0
  81. package/packages/utils/src/fetch/fetchSSE.ts +4 -4
  82. package/packages/utils/src/index.ts +1 -0
  83. package/packages/utils/src/toolManifest.ts +2 -1
  84. package/src/app/(backend)/webapi/proxy/route.ts +2 -13
  85. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/components/QualitySelect.tsx +23 -0
  86. package/src/app/[variants]/(main)/image/@menu/features/ConfigPanel/index.tsx +9 -0
  87. package/src/features/Conversation/Extras/Usage/UsageDetail/tokens.test.ts +13 -13
  88. package/src/features/Conversation/Extras/Usage/UsageDetail/tokens.ts +1 -1
  89. package/src/locales/default/image.ts +7 -0
  90. package/src/server/modules/EdgeConfig/index.ts +1 -1
  91. package/src/server/routers/async/image.ts +9 -1
  92. package/src/services/_auth.ts +12 -12
  93. package/src/services/chat/contextEngineering.ts +2 -3
package/CHANGELOG.md CHANGED
@@ -2,6 +2,39 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ### [Version 1.133.3](https://github.com/lobehub/lobe-chat/compare/v1.133.2...v1.133.3)
6
+
7
+ <sup>Released on **2025-10-01**</sup>
8
+
9
+ #### ♻ Code Refactoring
10
+
11
+ - **misc**: Refactor a `ssrf-safe-fetch` module.
12
+
13
+ #### 🐛 Bug Fixes
14
+
15
+ - **misc**: Fix frontend random API key config not work.
16
+
17
+ <br/>
18
+
19
+ <details>
20
+ <summary><kbd>Improvements and Fixes</kbd></summary>
21
+
22
+ #### Code refactoring
23
+
24
+ - **misc**: Refactor a `ssrf-safe-fetch` module, closes [#9474](https://github.com/lobehub/lobe-chat/issues/9474) ([92da716](https://github.com/lobehub/lobe-chat/commit/92da716))
25
+
26
+ #### What's fixed
27
+
28
+ - **misc**: Fix frontend random API key config not work, closes [#9477](https://github.com/lobehub/lobe-chat/issues/9477) [#9255](https://github.com/lobehub/lobe-chat/issues/9255) ([a194d48](https://github.com/lobehub/lobe-chat/commit/a194d48))
29
+
30
+ </details>
31
+
32
+ <div align="right">
33
+
34
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
35
+
36
+ </div>
37
+
5
38
  ### [Version 1.133.2](https://github.com/lobehub/lobe-chat/compare/v1.133.1...v1.133.2)
6
39
 
7
40
  <sup>Released on **2025-09-30**</sup>
package/changelog/v1.json CHANGED
@@ -1,4 +1,16 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "improvements": [
5
+ "Refactor a ssrf-safe-fetch module."
6
+ ],
7
+ "fixes": [
8
+ "Fix frontend random API key config not work."
9
+ ]
10
+ },
11
+ "date": "2025-10-01",
12
+ "version": "1.133.3"
13
+ },
2
14
  {
3
15
  "children": {
4
16
  "improvements": [
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "وصف المحتوى الذي ترغب في إنشائه"
32
32
  },
33
+ "quality": {
34
+ "label": "جودة الصورة",
35
+ "options": {
36
+ "hd": "عالي الدقة",
37
+ "standard": "عادي"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "البذرة",
35
42
  "random": "بذرة عشوائية"
@@ -3149,4 +3149,4 @@
3149
3149
  "zai/glm-4.5v": {
3150
3150
  "description": "GLM-4.5V مبني على نموذج GLM-4.5-Air الأساسي، يرث التقنيات المثبتة من GLM-4.1V-Thinking، ويوسعها بفعالية من خلال بنية MoE القوية التي تضم 106 مليار معلمة."
3151
3151
  }
3152
- }
3152
+ }
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "Опишете съдържанието, което искате да генерирате"
32
32
  },
33
+ "quality": {
34
+ "label": "Качество на изображението",
35
+ "options": {
36
+ "hd": "Висока резолюция",
37
+ "standard": "Стандартно"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "Семена",
35
42
  "random": "Случаен семенен код"
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "Beschreiben Sie den Inhalt, den Sie generieren möchten"
32
32
  },
33
+ "quality": {
34
+ "label": "Bildqualität",
35
+ "options": {
36
+ "hd": "Hohe Auflösung",
37
+ "standard": "Standard"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "Seed",
35
42
  "random": "Zufälliger Seed"
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "Describe what you want to generate"
32
32
  },
33
+ "quality": {
34
+ "label": "Image Quality",
35
+ "options": {
36
+ "hd": "High Definition",
37
+ "standard": "Standard"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "Seed",
35
42
  "random": "Random Seed"
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "Describe el contenido que deseas generar"
32
32
  },
33
+ "quality": {
34
+ "label": "Calidad de imagen",
35
+ "options": {
36
+ "hd": "Alta definición",
37
+ "standard": "Estándar"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "Semilla",
35
42
  "random": "Semilla aleatoria"
@@ -86,4 +86,4 @@
86
86
  "keyRequired": "La clave del campo no puede estar vacía",
87
87
  "stringifyError": "No se puede serializar el parámetro, por favor verifica el formato de los parámetros"
88
88
  }
89
- }
89
+ }
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "توصیف محتوایی که می‌خواهید تولید شود"
32
32
  },
33
+ "quality": {
34
+ "label": "کیفیت تصویر",
35
+ "options": {
36
+ "hd": "وضوح بالا",
37
+ "standard": "استاندارد"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "بذر",
35
42
  "random": "بذر تصادفی"
@@ -3149,4 +3149,4 @@
3149
3149
  "zai/glm-4.5v": {
3150
3150
  "description": "GLM-4.5V بر پایه مدل پایه GLM-4.5-Air ساخته شده است، فناوری اثبات شده GLM-4.1V-Thinking را به ارث برده و در عین حال با معماری قدرتمند MoE با 106 میلیارد پارامتر به طور مؤثر مقیاس‌پذیر شده است."
3151
3151
  }
3152
- }
3152
+ }
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "Décrivez ce que vous souhaitez générer"
32
32
  },
33
+ "quality": {
34
+ "label": "Qualité de l'image",
35
+ "options": {
36
+ "hd": "Haute définition",
37
+ "standard": "Standard"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "Graine",
35
42
  "random": "Graine aléatoire"
@@ -3149,4 +3149,4 @@
3149
3149
  "zai/glm-4.5v": {
3150
3150
  "description": "GLM-4.5V est construit sur le modèle de base GLM-4.5-Air, héritant des techniques éprouvées de GLM-4.1V-Thinking, tout en réalisant une mise à l'échelle efficace grâce à une puissante architecture MoE de 106 milliards de paramètres."
3151
3151
  }
3152
- }
3152
+ }
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "Descrivi ciò che desideri generare"
32
32
  },
33
+ "quality": {
34
+ "label": "Qualità immagine",
35
+ "options": {
36
+ "hd": "Alta definizione",
37
+ "standard": "Standard"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "Seed",
35
42
  "random": "Seme casuale"
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "生成したい内容を記述してください"
32
32
  },
33
+ "quality": {
34
+ "label": "画像品質",
35
+ "options": {
36
+ "hd": "高精細",
37
+ "standard": "標準"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "シード",
35
42
  "random": "ランダムシード"
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "생성하고 싶은 내용을 설명하세요"
32
32
  },
33
+ "quality": {
34
+ "label": "이미지 품질",
35
+ "options": {
36
+ "hd": "고화질",
37
+ "standard": "표준"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "시드",
35
42
  "random": "무작위 시드"
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "Beschrijf wat je wilt genereren"
32
32
  },
33
+ "quality": {
34
+ "label": "Beeldkwaliteit",
35
+ "options": {
36
+ "hd": "Hoge resolutie",
37
+ "standard": "Standaard"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "Zaad",
35
42
  "random": "Willekeurige zaad"
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "Opisz, co chcesz wygenerować"
32
32
  },
33
+ "quality": {
34
+ "label": "Jakość obrazu",
35
+ "options": {
36
+ "hd": "Wysoka rozdzielczość",
37
+ "standard": "Standardowa"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "Ziarno",
35
42
  "random": "Losowy seed"
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "Descreva o conteúdo que deseja gerar"
32
32
  },
33
+ "quality": {
34
+ "label": "Qualidade da imagem",
35
+ "options": {
36
+ "hd": "Alta definição",
37
+ "standard": "Padrão"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "Semente",
35
42
  "random": "Semente aleatória"
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "Опишите, что вы хотите сгенерировать"
32
32
  },
33
+ "quality": {
34
+ "label": "Качество изображения",
35
+ "options": {
36
+ "hd": "Высокое разрешение",
37
+ "standard": "Стандартное"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "Сид",
35
42
  "random": "Случайное начальное значение"
@@ -86,4 +86,4 @@
86
86
  "keyRequired": "Ключ поля не может быть пустым",
87
87
  "stringifyError": "Не удалось сериализовать параметры, проверьте формат параметров"
88
88
  }
89
- }
89
+ }
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "Oluşturmak istediğiniz içeriği tanımlayın"
32
32
  },
33
+ "quality": {
34
+ "label": "Görüntü Kalitesi",
35
+ "options": {
36
+ "hd": "Yüksek Çözünürlük",
37
+ "standard": "Standart"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "Tohum",
35
42
  "random": "Rastgele Tohum"
@@ -3149,4 +3149,4 @@
3149
3149
  "zai/glm-4.5v": {
3150
3150
  "description": "GLM-4.5V, GLM-4.5-Air temel modeli üzerine inşa edilmiştir, GLM-4.1V-Thinking'in doğrulanmış teknolojisini devralır ve güçlü 106 milyar parametreli MoE mimarisi ile etkili ölçeklenebilirlik sağlar."
3151
3151
  }
3152
- }
3152
+ }
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "Mô tả nội dung bạn muốn tạo"
32
32
  },
33
+ "quality": {
34
+ "label": "Chất lượng hình ảnh",
35
+ "options": {
36
+ "hd": "Độ nét cao",
37
+ "standard": "Tiêu chuẩn"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "Hạt giống",
35
42
  "random": "Hạt giống ngẫu nhiên"
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "描述你想要生成的内容"
32
32
  },
33
+ "quality": {
34
+ "label": "图片质量",
35
+ "options": {
36
+ "hd": "高清",
37
+ "standard": "标准"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "种子",
35
42
  "random": "随机种子"
@@ -30,6 +30,13 @@
30
30
  "prompt": {
31
31
  "placeholder": "描述你想要生成的內容"
32
32
  },
33
+ "quality": {
34
+ "label": "圖片品質",
35
+ "options": {
36
+ "hd": "高清",
37
+ "standard": "標準"
38
+ }
39
+ },
33
40
  "seed": {
34
41
  "label": "種子",
35
42
  "random": "隨機種子"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/chat",
3
- "version": "1.133.2",
3
+ "version": "1.133.3",
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",
@@ -122,7 +122,7 @@
122
122
  "dependencies": {
123
123
  "@ant-design/icons": "^5.6.1",
124
124
  "@ant-design/pro-components": "^2.8.10",
125
- "@anthropic-ai/sdk": "^0.64.0",
125
+ "@anthropic-ai/sdk": "^0.65.0",
126
126
  "@auth/core": "^0.40.0",
127
127
  "@aws-sdk/client-s3": "~3.893.0",
128
128
  "@aws-sdk/s3-request-presigner": "~3.893.0",
@@ -262,12 +262,12 @@
262
262
  "remark": "^15.0.1",
263
263
  "remark-gfm": "^4.0.1",
264
264
  "remark-html": "^16.0.1",
265
- "request-filtering-agent": "^3.0.0",
266
265
  "resolve-accept-language": "^3.1.13",
267
266
  "rtl-detect": "^1.1.2",
268
267
  "semver": "^7.7.2",
269
268
  "sharp": "^0.34.3",
270
269
  "shiki": "^3.12.2",
270
+ "ssrf-safe-fetch": "workspace:*",
271
271
  "stripe": "^17.7.0",
272
272
  "superjson": "^2.2.2",
273
273
  "svix": "^1.76.1",
@@ -301,7 +301,7 @@
301
301
  "@peculiar/webcrypto": "^1.5.0",
302
302
  "@prettier/sync": "^0.6.1",
303
303
  "@semantic-release/exec": "^6.0.3",
304
- "@testing-library/jest-dom": "^6.8.0",
304
+ "@testing-library/jest-dom": "~6.8.0",
305
305
  "@testing-library/react": "^16.3.0",
306
306
  "@testing-library/user-event": "^14.6.1",
307
307
  "@types/chroma-js": "^3.1.1",
@@ -323,7 +323,6 @@
323
323
  "@types/systemjs": "^6.15.3",
324
324
  "@types/ua-parser-js": "^0.7.39",
325
325
  "@types/unist": "^3.0.3",
326
- "@types/uuid": "^11.0.0",
327
326
  "@types/ws": "^8.18.1",
328
327
  "@typescript/native-preview": "7.0.0-dev.20250711.1",
329
328
  "@vitest/coverage-v8": "^3.2.4",
@@ -2,6 +2,10 @@
2
2
  "name": "@lobechat/const",
3
3
  "version": "1.0.0",
4
4
  "private": true,
5
+ "exports": {
6
+ ".": "./src/index.ts",
7
+ "./currency": "./src/currency.ts"
8
+ },
5
9
  "main": "./src/index.ts",
6
10
  "dependencies": {
7
11
  "model-bank": "workspace:*",
@@ -1,2 +1,4 @@
1
1
  // in 2025.01.26
2
2
  export const USD_TO_CNY = 7.24;
3
+
4
+ export const CREDITS_PER_DOLLAR = 1_000_000;
@@ -2,6 +2,7 @@ export * from './auth';
2
2
  export * from './branding';
3
3
  export * from './currency';
4
4
  export * from './desktop';
5
+ export * from './guide';
5
6
  export * from './layoutTokens';
6
7
  export * from './message';
7
8
  export * from './session';
@@ -68,7 +68,8 @@
68
68
  "./xai": "./src/aiModels/xai.ts",
69
69
  "./xinference": "./src/aiModels/xinference.ts",
70
70
  "./zeroone": "./src/aiModels/zeroone.ts",
71
- "./zhipu": "./src/aiModels/zhipu.ts"
71
+ "./zhipu": "./src/aiModels/zhipu.ts",
72
+ "./types": "./src/types/index.ts"
72
73
  },
73
74
  "scripts": {
74
75
  "test": "vitest",
@@ -1,6 +1,11 @@
1
1
  import { CHAT_MODEL_IMAGE_GENERATION_PARAMS, ModelParamsSchema } from '../standard-parameters';
2
2
  import { AIChatModelCard, AIImageModelCard } from '../types';
3
3
 
4
+ /**
5
+ * gemini implicit caching not extra cost
6
+ * https://openrouter.ai/docs/features/prompt-caching#implicit-caching
7
+ */
8
+
4
9
  const googleChatModels: AIChatModelCard[] = [
5
10
  {
6
11
  abilities: {
@@ -233,6 +238,7 @@ const googleChatModels: AIChatModelCard[] = [
233
238
  pricing: {
234
239
  units: [
235
240
  { name: 'textInput', rate: 0.3, strategy: 'fixed', unit: 'millionTokens' },
241
+ { name: 'imageInput', rate: 0.3, strategy: 'fixed', unit: 'millionTokens' },
236
242
  { name: 'textOutput', rate: 2.5, strategy: 'fixed', unit: 'millionTokens' },
237
243
  { name: 'imageOutput', rate: 30, strategy: 'fixed', unit: 'millionTokens' },
238
244
  ],
@@ -26,8 +26,7 @@ export const openaiChatModels: AIChatModelCard[] = [
26
26
  vision: true,
27
27
  },
28
28
  contextWindowTokens: 400_000,
29
- description:
30
- 'GPT-5 Codex 是一个针对 Codex 或类似环境中的代理编码任务优化的 GPT-5 版本。',
29
+ description: 'GPT-5 Codex 是一个针对 Codex 或类似环境中的代理编码任务优化的 GPT-5 版本。',
31
30
  displayName: 'GPT-5 Codex',
32
31
  id: 'gpt-5-codex',
33
32
  maxOutput: 128_000,
@@ -1047,25 +1046,6 @@ export const openaiImageModels: AIImageModelCard[] = [
1047
1046
  { name: 'imageInput', rate: 10, strategy: 'fixed', unit: 'millionTokens' },
1048
1047
  { name: 'imageInput_cacheRead', rate: 2.5, strategy: 'fixed', unit: 'millionTokens' },
1049
1048
  { name: 'imageOutput', rate: 40, strategy: 'fixed', unit: 'millionTokens' },
1050
- {
1051
- lookup: {
1052
- prices: {
1053
- low_1024x1024: 0.011,
1054
- low_1024x1536: 0.016,
1055
- low_1536x1024: 0.016,
1056
- medium_1024x1024: 0.042,
1057
- medium_1024x1536: 0.063,
1058
- medium_1536x1024: 0.063,
1059
- high_1024x1024: 0.167,
1060
- high_1024x1536: 0.25,
1061
- high_1536x1024: 0.25,
1062
- },
1063
- pricingParams: ['quality', 'size'],
1064
- },
1065
- name: 'imageGeneration',
1066
- strategy: 'lookup',
1067
- unit: 'image',
1068
- },
1069
1049
  ],
1070
1050
  },
1071
1051
  resolutions: ['1024x1024', '1024x1536', '1536x1024'],
@@ -1078,6 +1058,10 @@ export const openaiImageModels: AIImageModelCard[] = [
1078
1058
  id: 'dall-e-3',
1079
1059
  parameters: {
1080
1060
  prompt: { default: '' },
1061
+ quality: {
1062
+ default: 'standard',
1063
+ enum: ['standard', 'hd'],
1064
+ },
1081
1065
  size: {
1082
1066
  default: '1024x1024',
1083
1067
  enum: ['1024x1024', '1792x1024', '1024x1792'],
@@ -1151,7 +1135,7 @@ export const openaiRealtimeModels: AIRealtimeModelCard[] = [
1151
1135
  description: '通用实时模型,支持文本与音频的实时输入输出,并支持图像输入。',
1152
1136
  displayName: 'GPT Realtime',
1153
1137
  id: 'gpt-realtime',
1154
- maxOutput: 4_096,
1138
+ maxOutput: 4096,
1155
1139
  pricing: {
1156
1140
  units: [
1157
1141
  { name: 'audioInput', rate: 32, strategy: 'fixed', unit: 'millionTokens' },