@lobehub/chat 1.94.10 → 1.94.11

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.
@@ -5,355 +5,67 @@ on:
5
5
  - cron: '0 0 * * *'
6
6
  workflow_dispatch:
7
7
 
8
+ # Add permissions configuration
9
+ permissions:
10
+ contents: write
11
+ pull-requests: write
12
+
8
13
  jobs:
9
14
  update-i18n:
10
15
  runs-on: ubuntu-latest
11
16
  timeout-minutes: 30
12
17
 
13
18
  steps:
14
- - uses: actions/checkout@v4
15
- with:
16
- fetch-depth: 0
17
- token: ${{ secrets.GH_TOKEN }}
18
-
19
19
  - name: Configure Git
20
20
  run: |
21
- git config --global user.name "github-actions[bot]"
22
- git config --global user.email "github-actions[bot]@users.noreply.github.com"
21
+ git config --global user.name "lobehubbot"
22
+ git config --global user.email "i@lobehub.com"
23
+
24
+ - uses: actions/checkout@v4
25
+ with:
26
+ ref: ${{ github.event.pull_request.head.ref }}
23
27
 
24
28
  - name: Install bun
25
29
  uses: oven-sh/setup-bun@v1
26
30
  with:
27
31
  bun-version: ${{ secrets.BUN_VERSION }}
28
32
 
29
- - name: Validate environment
30
- id: validate_env
31
- run: |
32
- echo "🔍 Validating environment..."
33
-
34
- # Check required secrets
35
- if [ -z "${{ secrets.OPENAI_API_KEY }}" ]; then
36
- echo "❌ OPENAI_API_KEY is missing"
37
- echo "env_valid=false" >> $GITHUB_OUTPUT
38
- echo "ERROR_VALIDATE_ENV=OPENAI_API_KEY secret is not configured" >> $GITHUB_ENV
39
- exit 1
40
- fi
41
-
42
- if [ -z "${{ secrets.GH_TOKEN }}" ]; then
43
- echo "❌ GH_TOKEN is missing"
44
- echo "env_valid=false" >> $GITHUB_OUTPUT
45
- echo "ERROR_VALIDATE_ENV=GH_TOKEN secret is not configured" >> $GITHUB_ENV
46
- exit 1
47
- fi
48
-
49
- # Test OpenAI API connectivity (optional, with timeout)
50
- echo "🌐 Testing OpenAI API connectivity..."
51
- if timeout 30s curl -s -H "Authorization: Bearer ${{ secrets.OPENAI_API_KEY }}" \
52
- ${{ secrets.OPENAI_PROXY_URL || 'https://api.openai.com' }}/v1/models >/dev/null 2>&1; then
53
- echo "✅ OpenAI API accessible"
54
- else
55
- echo "⚠️ OpenAI API test failed (but continuing...)"
56
- fi
57
-
58
- echo "env_valid=true" >> $GITHUB_OUTPUT
59
-
60
- - name: Check if branch exists
61
- id: check_branch
62
- run: |
63
- echo "🔍 Checking for existing branch..."
64
-
65
- # Retry mechanism for network issues
66
- for i in {1..3}; do
67
- if git ls-remote --exit-code --heads origin style/auto-i18n >/dev/null 2>&1; then
68
- echo "branch_exists=true" >> $GITHUB_OUTPUT
69
- echo "🔍 Found existing branch: style/auto-i18n"
70
- exit 0
71
- elif [ $i -eq 3 ]; then
72
- echo "branch_exists=false" >> $GITHUB_OUTPUT
73
- echo "ℹ️ Branch style/auto-i18n does not exist"
74
- exit 0
75
- else
76
- echo "⚠️ Network issue, retrying... ($i/3)"
77
- sleep 5
78
- fi
79
- done
80
-
81
- - name: Handle existing branch with rebase
82
- if: steps.check_branch.outputs.branch_exists == 'true'
83
- id: rebase_attempt
84
- run: |
85
- echo "🔄 Attempting to rebase existing branch..."
86
-
87
- # Fetch the existing branch with error handling
88
- if ! git fetch origin style/auto-i18n; then
89
- echo "❌ Failed to fetch existing branch"
90
- echo "rebase_success=false" >> $GITHUB_OUTPUT
91
- echo "ERROR_REBASE_ATTEMPT=Failed to fetch existing branch from origin" >> $GITHUB_ENV
92
- exit 1
93
- fi
94
-
95
- if ! git checkout -b style/auto-i18n origin/style/auto-i18n; then
96
- echo "❌ Failed to checkout existing branch"
97
- echo "rebase_success=false" >> $GITHUB_OUTPUT
98
- echo "ERROR_REBASE_ATTEMPT=Failed to checkout existing branch" >> $GITHUB_ENV
99
- exit 1
100
- fi
101
-
102
- # Try to rebase onto latest main
103
- if git rebase origin/main; then
104
- echo "✅ Rebase successful"
105
- echo "rebase_success=true" >> $GITHUB_OUTPUT
106
- else
107
- echo "❌ Rebase failed due to conflicts"
108
- echo "rebase_success=false" >> $GITHUB_OUTPUT
109
-
110
- # Abort the failed rebase
111
- git rebase --abort || echo "⚠️ Failed to abort rebase cleanly"
112
-
113
- # Go back to main and delete the problematic branch
114
- git checkout main
115
- git branch -D style/auto-i18n || echo "⚠️ Failed to delete local branch"
116
-
117
- # Try to delete remote branch, handle if it fails
118
- if git push origin --delete style/auto-i18n 2>/dev/null; then
119
- echo "🗑️ Deleted old branch due to rebase conflicts"
120
- else
121
- echo "⚠️ Could not delete remote branch (may not exist or permission issue)"
122
- fi
123
- fi
124
-
125
- - name: Create clean branch if needed
126
- if: steps.check_branch.outputs.branch_exists == 'false' || steps.rebase_attempt.outputs.rebase_success == 'false'
127
- id: create_branch
128
- run: |
129
- echo "🌿 Creating fresh branch from main..."
130
-
131
- # Ensure we're on main and it's up to date
132
- git checkout main
133
- git pull origin main
134
-
135
- # Create new branch
136
- if git checkout -b style/auto-i18n; then
137
- echo "✅ Successfully created new branch"
138
- echo "branch_created=true" >> $GITHUB_OUTPUT
139
- else
140
- echo "❌ Failed to create new branch"
141
- echo "branch_created=false" >> $GITHUB_OUTPUT
142
- echo "ERROR_CREATE_BRANCH=Failed to create new branch style/auto-i18n" >> $GITHUB_ENV
143
- exit 1
144
- fi
145
-
146
33
  - name: Install deps
147
- id: install_deps
148
- run: |
149
- echo "📦 Installing dependencies..."
150
-
151
- # Retry mechanism for dependency installation
152
- for i in {1..3}; do
153
- if bun i; then
154
- echo "✅ Dependencies installed successfully"
155
- echo "deps_installed=true" >> $GITHUB_OUTPUT
156
- exit 0
157
- elif [ $i -eq 3 ]; then
158
- echo "❌ Failed to install dependencies after 3 attempts"
159
- echo "deps_installed=false" >> $GITHUB_OUTPUT
160
- echo "ERROR_INSTALL_DEPS=Failed to install dependencies with bun after 3 retries" >> $GITHUB_ENV
161
- exit 1
162
- else
163
- echo "⚠️ Dependency installation failed, retrying... ($i/3)"
164
- sleep 10
165
- fi
166
- done
167
-
168
- - name: Run i18n update
169
- id: run_i18n
170
- run: |
171
- echo "🌐 Running i18n update..."
34
+ run: bun i
172
35
 
173
- # Set timeout and capture output
174
- if timeout 900s bun run i18n 2>&1 | tee i18n_output.log; then
175
- echo "✅ i18n update completed successfully"
176
- echo "i18n_success=true" >> $GITHUB_OUTPUT
177
- else
178
- exit_code=$?
179
- echo "❌ i18n update failed with exit code: $exit_code"
180
- echo "i18n_success=false" >> $GITHUB_OUTPUT
181
-
182
- # Capture error details
183
- if [ $exit_code -eq 124 ]; then
184
- echo "ERROR_RUN_I18N=i18n update timed out after 15 minutes" >> $GITHUB_ENV
185
- else
186
- echo "ERROR_RUN_I18N=i18n update failed with exit code $exit_code" >> $GITHUB_ENV
187
- fi
188
-
189
- # Save output for debugging
190
- echo "📋 Saving debug output..."
191
- exit 1
192
- fi
36
+ - name: Update i18n
37
+ run: bun run i18n
193
38
  env:
194
39
  OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
195
40
  OPENAI_PROXY_URL: ${{ secrets.OPENAI_PROXY_URL }}
196
41
 
197
- - name: Check for changes
198
- id: git_status
199
- if: steps.run_i18n.outputs.i18n_success == 'true'
200
- run: |
201
- echo "🔍 Checking for changes..."
202
-
203
- if git diff --exit-code >/dev/null 2>&1; then
204
- echo "changes_exist=false" >> $GITHUB_OUTPUT
205
- echo "ℹ️ No changes detected"
206
- else
207
- echo "changes_exist=true" >> $GITHUB_OUTPUT
208
- echo "✨ Changes detected"
209
-
210
- # Show what changed
211
- echo "📝 Changed files:"
212
- git diff --name-only | head -20
213
- fi
214
-
215
- - name: Commit and push changes
216
- if: steps.git_status.outputs.changes_exist == 'true'
217
- id: commit_push
218
- run: |
219
- echo "💾 Committing and pushing changes..."
220
-
221
- git add .
222
-
223
- # Check if there are staged changes after adding files
224
- if git diff --cached --exit-code >/dev/null 2>&1; then
225
- echo "ℹ️ No staged changes detected after git add. Skipping commit."
226
- echo "push_success=false" >> $GITHUB_OUTPUT
227
- echo "no_changes_after_stage=true" >> $GITHUB_OUTPUT
228
- exit 0
229
- fi
230
-
231
- # Attempt to commit with handling for lint-staged preventing empty commits
232
- if git commit -m "🤖 style: update i18n
233
-
234
- - Auto-generated i18n updates
235
- - Generated at: $(date -u '+%Y-%m-%d %H:%M:%S UTC')
236
- - Workflow run: ${{ github.run_number }}"; then
237
- echo "✅ Successfully committed changes"
238
- else
239
- commit_exit_code=$?
240
- if [ $commit_exit_code -eq 1 ]; then
241
- echo "ℹ️ No changes to commit after lint-staged processing. This is normal."
242
- echo "push_success=false" >> $GITHUB_OUTPUT
243
- echo "no_changes_after_lint=true" >> $GITHUB_OUTPUT
244
- exit 0
245
- else
246
- echo "❌ Commit failed with exit code: $commit_exit_code"
247
- echo "push_success=false" >> $GITHUB_OUTPUT
248
- echo "ERROR_COMMIT_PUSH=Git commit failed with exit code $commit_exit_code" >> $GITHUB_ENV
249
- exit 1
250
- fi
251
- fi
252
-
253
- # Push with retry mechanism
254
- for i in {1..3}; do
255
- if git push origin style/auto-i18n --force-with-lease; then
256
- echo "✅ Successfully pushed changes"
257
- echo "push_success=true" >> $GITHUB_OUTPUT
258
- exit 0
259
- elif [ $i -eq 3 ]; then
260
- echo "❌ Failed to push changes after 3 attempts"
261
- echo "push_success=false" >> $GITHUB_OUTPUT
262
- echo "ERROR_COMMIT_PUSH=Failed to push changes to remote repository after 3 retries" >> $GITHUB_ENV
263
- exit 1
264
- else
265
- echo "⚠️ Push failed, retrying... ($i/3)"
266
- sleep 5
267
- fi
268
- done
269
-
270
- - name: Create or Update Pull Request
271
- if: steps.git_status.outputs.changes_exist == 'true' && steps.commit_push.outputs.push_success == 'true'
272
- id: create_pr
273
- uses: peter-evans/create-pull-request@v4
42
+ - name: create pull request
43
+ id: cpr
44
+ uses: peter-evans/create-pull-request@v7
274
45
  with:
275
46
  token: ${{ secrets.GH_TOKEN }}
276
- branch: 'style/auto-i18n'
277
- title: '🤖 style: update i18n'
278
- body: |
279
- This PR updates the i18n files.
280
-
281
- ## 🔄 Update Strategy
282
- ${{ steps.check_branch.outputs.branch_exists == 'true' && steps.rebase_attempt.outputs.rebase_success == 'true' && '✅ Successfully rebased existing branch onto latest main' || '' }}
283
- ${{ steps.check_branch.outputs.branch_exists == 'true' && steps.rebase_attempt.outputs.rebase_success == 'false' && '🔄 Recreated branch due to rebase conflicts' || '' }}
284
- ${{ steps.check_branch.outputs.branch_exists == 'false' && '🌿 Created fresh branch from main' || '' }}
285
-
286
- ## 📝 Changes
287
- - Auto-generated i18n updates
288
- - Generated at: ${{ github.run_number }}
289
- - Timestamp: $(date -u '+%Y-%m-%d %H:%M:%S UTC')
290
-
291
- ## 🤖 Automation Info
292
- - Workflow: `${{ github.workflow }}`
293
- - Run ID: `${{ github.run_id }}`
294
- - Commit: `${{ github.sha }}`
295
-
296
- > This PR is automatically generated by GitHub Actions and kept up-to-date with the latest main branch.
297
- base: main
47
+ add-paths: |
48
+ locales/**/*.json
298
49
  labels: |
299
50
  i18n
300
51
  automated
301
52
  style
53
+ branch: style/auto-i18n
54
+ delete-branch: true
55
+ title: '🤖 style: update i18n'
56
+ commit-message: '💄 style: update i18n'
57
+ body: |
58
+ This PR was automatically generated by the i18n update workflow.
59
+ Please review the changes and merge if everything looks good.
302
60
 
303
- - name: Check Pull Request Status
304
- if: steps.git_status.outputs.changes_exist == 'true' && steps.commit_push.outputs.push_success == 'true'
305
- run: |
306
- if [ "${{ steps.create_pr.outputs.pull-request-number }}" ]; then
307
- echo "✅ Pull request #${{ steps.create_pr.outputs.pull-request-number }} created/updated successfully."
308
- echo "🔗 PR URL: ${{ steps.create_pr.outputs.pull-request-url }}"
309
- else
310
- echo "❌ Failed to create/update pull request."
311
- exit 1
312
- fi
313
-
314
- - name: No changes
315
- if: |
316
- (steps.git_status.outputs.changes_exist != 'true' && steps.run_i18n.outputs.i18n_success == 'true') ||
317
- (steps.commit_push.outputs.no_changes_after_stage == 'true') ||
318
- (steps.commit_push.outputs.no_changes_after_lint == 'true')
319
- run: |
320
- if [ "${{ steps.commit_push.outputs.no_changes_after_stage }}" == "true" ]; then
321
- echo "ℹ️ No staged changes detected after git add. Skipping PR creation."
322
- elif [ "${{ steps.commit_push.outputs.no_changes_after_lint }}" == "true" ]; then
323
- echo "ℹ️ No changes remaining after lint-staged processing. Skipping PR creation."
324
- else
325
- echo "ℹ️ No changes to commit. Skipping PR creation."
326
- fi
327
-
328
- # Set step status for issue creation
329
- - name: Set step conclusions
330
- if: always()
331
- run: |
332
- echo "STEP_VALIDATE_ENV=${{ steps.validate_env.conclusion || 'Not run' }}" >> $GITHUB_ENV
333
- echo "STEP_CHECK_BRANCH=${{ steps.check_branch.conclusion || 'Not run' }}" >> $GITHUB_ENV
334
- echo "STEP_REBASE_ATTEMPT=${{ steps.rebase_attempt.conclusion || 'Not run' }}" >> $GITHUB_ENV
335
- echo "STEP_CREATE_BRANCH=${{ steps.create_branch.conclusion || 'Not run' }}" >> $GITHUB_ENV
336
- echo "STEP_INSTALL_DEPS=${{ steps.install_deps.conclusion || 'Not run' }}" >> $GITHUB_ENV
337
- echo "STEP_RUN_I18N=${{ steps.run_i18n.conclusion || 'Not run' }}" >> $GITHUB_ENV
338
- echo "STEP_COMMIT_PUSH=${{ steps.commit_push.conclusion || 'Not run' }}" >> $GITHUB_ENV
339
- echo "STEP_CREATE_PR=${{ steps.create_pr.conclusion || 'Not run' }}" >> $GITHUB_ENV
340
-
341
- # Error handling and issue creation
342
- - name: Upload debug artifacts
343
- if: failure()
344
- uses: actions/upload-artifact@v4
345
- with:
346
- name: debug-logs-${{ github.run_number }}
347
- path: |
348
- i18n_output.log
349
- /tmp/*.log
350
- retention-days: 7
351
-
352
- - name: Create issue on failure
353
- if: failure()
354
- uses: actions/github-script@v6
355
- with:
356
- github-token: ${{ secrets.GH_TOKEN }}
357
- script: |
358
- const createFailureIssue = require('./.github/scripts/create-failure-issue.js');
359
- return await createFailureIssue({ github, context, core });
61
+ ## 🤖 Automation Info
62
+ - Workflow: `${{ github.workflow }}`
63
+ - Run ID: `${{ github.run_id }}`
64
+ - Commit: `${{ github.sha }}`
65
+
66
+ <details>
67
+ <summary>i18n Update Log</summary>
68
+ ```bash
69
+ $(cat i18n_update.log)
70
+ ```
71
+ </details>
package/CHANGELOG.md CHANGED
@@ -2,6 +2,31 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ### [Version 1.94.11](https://github.com/lobehub/lobe-chat/compare/v1.94.10...v1.94.11)
6
+
7
+ <sup>Released on **2025-06-17**</sup>
8
+
9
+ #### 🐛 Bug Fixes
10
+
11
+ - **misc**: Enhance the multi-display window opening experience.
12
+
13
+ <br/>
14
+
15
+ <details>
16
+ <summary><kbd>Improvements and Fixes</kbd></summary>
17
+
18
+ #### What's fixed
19
+
20
+ - **misc**: Enhance the multi-display window opening experience, closes [#8176](https://github.com/lobehub/lobe-chat/issues/8176) ([b132e66](https://github.com/lobehub/lobe-chat/commit/b132e66))
21
+
22
+ </details>
23
+
24
+ <div align="right">
25
+
26
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
27
+
28
+ </div>
29
+
5
30
  ### [Version 1.94.10](https://github.com/lobehub/lobe-chat/compare/v1.94.9...v1.94.10)
6
31
 
7
32
  <sup>Released on **2025-06-15**</sup>
@@ -26,6 +26,7 @@ export const appBrowsers = {
26
26
  identifier: 'devtools',
27
27
  maximizable: false,
28
28
  minWidth: 400,
29
+ parentIdentifier: 'chat',
29
30
  path: '/desktop/devtools',
30
31
  titleBarStyle: 'hiddenInset',
31
32
  vibrancy: 'under-window',
@@ -37,6 +38,7 @@ export const appBrowsers = {
37
38
  identifier: 'settings',
38
39
  keepAlive: true,
39
40
  minWidth: 600,
41
+ parentIdentifier: 'chat',
40
42
  path: '/settings',
41
43
  titleBarStyle: 'hidden',
42
44
  vibrancy: 'under-window',
@@ -1,5 +1,11 @@
1
1
  import { MainBroadcastEventKey, MainBroadcastParams } from '@lobechat/electron-client-ipc';
2
- import { BrowserWindow, BrowserWindowConstructorOptions, ipcMain, nativeTheme } from 'electron';
2
+ import {
3
+ BrowserWindow,
4
+ BrowserWindowConstructorOptions,
5
+ ipcMain,
6
+ nativeTheme,
7
+ screen,
8
+ } from 'electron';
3
9
  import os from 'node:os';
4
10
  import { join } from 'node:path';
5
11
 
@@ -19,6 +25,7 @@ export interface BrowserWindowOpts extends BrowserWindowConstructorOptions {
19
25
  */
20
26
  identifier: string;
21
27
  keepAlive?: boolean;
28
+ parentIdentifier?: string;
22
29
  path: string;
23
30
  showOnInit?: boolean;
24
31
  title?: string;
@@ -145,9 +152,40 @@ export default class Browser {
145
152
 
146
153
  show() {
147
154
  logger.debug(`Showing window: ${this.identifier}`);
155
+ this.determineWindowPosition();
148
156
  this.browserWindow.show();
149
157
  }
150
158
 
159
+ private determineWindowPosition() {
160
+ const { parentIdentifier } = this.options;
161
+
162
+ if (parentIdentifier) {
163
+ // todo: fix ts type
164
+ const parentWin = this.app.browserManager.retrieveByIdentifier(parentIdentifier as any);
165
+ if (parentWin) {
166
+ logger.debug(`[${this.identifier}] Found parent window: ${parentIdentifier}`);
167
+
168
+ const display = screen.getDisplayNearestPoint(parentWin.browserWindow.getContentBounds());
169
+ if (display) {
170
+ const {
171
+ workArea: { x, y, width: displayWidth, height: displayHeight },
172
+ } = display;
173
+
174
+ const { width, height } = this._browserWindow.getContentBounds();
175
+ logger.debug(
176
+ `[${this.identifier}] Display bounds: x=${x}, y=${y}, width=${displayWidth}, height=${displayHeight}`,
177
+ );
178
+
179
+ // Calculate new position
180
+ const newX = Math.floor(Math.max(x + (displayWidth - width) / 2, x));
181
+ const newY = Math.floor(Math.max(y + (displayHeight - height) / 2, y));
182
+ logger.debug(`[${this.identifier}] Calculated position: x=${newX}, y=${newY}`);
183
+ this._browserWindow.setPosition(newX, newY, false);
184
+ }
185
+ }
186
+ }
187
+ }
188
+
151
189
  hide() {
152
190
  logger.debug(`Hiding window: ${this.identifier}`);
153
191
  this.browserWindow.hide();
package/changelog/v1.json CHANGED
@@ -1,4 +1,13 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "fixes": [
5
+ "Enhance the multi-display window opening experience."
6
+ ]
7
+ },
8
+ "date": "2025-06-17",
9
+ "version": "1.94.11"
10
+ },
2
11
  {
3
12
  "children": {
4
13
  "fixes": [
@@ -659,6 +659,9 @@
659
659
  "codestral-latest": {
660
660
  "description": "Codestral هو نموذج توليد متقدم يركز على توليد الشيفرة، تم تحسينه لمهام الملء الوسيط وإكمال الشيفرة."
661
661
  },
662
+ "codex-mini-latest": {
663
+ "description": "codex-mini-latest هو نسخة محسنة من o4-mini، مخصصة لـ Codex CLI. بالنسبة للاستخدام المباشر عبر API، نوصي بالبدء من gpt-4.1."
664
+ },
662
665
  "cognitivecomputations/dolphin-mixtral-8x22b": {
663
666
  "description": "Dolphin Mixtral 8x22B هو نموذج مصمم للامتثال للتعليمات، والحوار، والبرمجة."
664
667
  },
@@ -716,6 +719,9 @@
716
719
  "compound-beta-mini": {
717
720
  "description": "Compound-beta-mini هو نظام ذكاء اصطناعي مركب، مدعوم بنماذج مفتوحة متاحة في GroqCloud، يمكنه استخدام الأدوات بشكل ذكي وانتقائي للإجابة على استفسارات المستخدمين."
718
721
  },
722
+ "computer-use-preview": {
723
+ "description": "نموذج computer-use-preview هو نموذج مخصص مصمم خصيصًا لـ \"أدوات استخدام الكمبيوتر\"، تم تدريبه لفهم وتنفيذ المهام المتعلقة بالكمبيوتر."
724
+ },
719
725
  "dall-e-2": {
720
726
  "description": "النموذج الثاني من DALL·E، يدعم توليد صور أكثر واقعية ودقة، بدقة تعادل أربعة أضعاف الجيل الأول."
721
727
  },
@@ -905,6 +911,15 @@
905
911
  "doubao-1.5-vision-lite": {
906
912
  "description": "Doubao-1.5-vision-lite هو نموذج كبير متعدد الوسائط تم ترقيته حديثًا، يدعم التعرف على الصور بدقة غير محدودة ونسب عرض إلى ارتفاع متطرفة، ويعزز قدرات الاستدلال البصري، التعرف على الوثائق، فهم المعلومات التفصيلية، واتباع التعليمات. يدعم نافذة سياق 128k، وطول الإخراج يدعم حتى 16k توكن."
907
913
  },
914
+ "doubao-seed-1.6": {
915
+ "description": "نموذج Doubao-Seed-1.6 متعدد الوسائط للتفكير العميق، يدعم ثلاثة أوضاع تفكير: تلقائي/تفكير/عدم تفكير. في وضع عدم التفكير، يتحسن أداء النموذج بشكل كبير مقارنة بـ Doubao-1.5-pro/250115. يدعم نافذة سياق تصل إلى 256k وطول إخراج يصل إلى 16k رمز."
916
+ },
917
+ "doubao-seed-1.6-flash": {
918
+ "description": "نموذج Doubao-Seed-1.6-flash هو نموذج متعدد الوسائط للتفكير العميق بسرعات استدلال فائقة، حيث يحتاج TPOT فقط إلى 10 مللي ثانية؛ يدعم فهم النصوص والرؤية، وتفوق قدرات فهم النصوص على الجيل السابق lite، وفهم الرؤية يضاهي نماذج pro المنافسة. يدعم نافذة سياق تصل إلى 256k وطول إخراج يصل إلى 16k رمز."
919
+ },
920
+ "doubao-seed-1.6-thinking": {
921
+ "description": "نموذج Doubao-Seed-1.6-thinking يعزز قدرات التفكير بشكل كبير، مقارنة بـ Doubao-1.5-thinking-pro، مع تحسينات إضافية في القدرات الأساسية مثل البرمجة والرياضيات والاستدلال المنطقي، ويدعم الفهم البصري. يدعم نافذة سياق تصل إلى 256k وطول إخراج يصل إلى 16k رمز."
922
+ },
908
923
  "emohaa": {
909
924
  "description": "Emohaa هو نموذج نفسي، يتمتع بقدرات استشارية متخصصة، يساعد المستخدمين في فهم القضايا العاطفية."
910
925
  },
@@ -1268,6 +1283,9 @@
1268
1283
  "gpt-4o-mini": {
1269
1284
  "description": "نموذج GPT-4o mini هو أحدث نموذج أطلقته OpenAI بعد GPT-4 Omni، ويدعم إدخال الصور والنصوص وإخراج النصوص. كأحد نماذجهم المتقدمة الصغيرة، فهو أرخص بكثير من النماذج الرائدة الأخرى في الآونة الأخيرة، وأرخص بأكثر من 60% من GPT-3.5 Turbo. يحتفظ بذكاء متقدم مع قيمة ممتازة. حصل GPT-4o mini على 82% في اختبار MMLU، وهو حاليًا يتفوق على GPT-4 في تفضيلات الدردشة."
1270
1285
  },
1286
+ "gpt-4o-mini-audio-preview": {
1287
+ "description": "نموذج GPT-4o mini Audio، يدعم إدخال وإخراج الصوت."
1288
+ },
1271
1289
  "gpt-4o-mini-realtime-preview": {
1272
1290
  "description": "الإصدار المصغر الفوري من GPT-4o، يدعم إدخال وإخراج الصوت والنص في الوقت الحقيقي."
1273
1291
  },
@@ -1421,6 +1439,9 @@
1421
1439
  "kimi-latest": {
1422
1440
  "description": "يستخدم منتج كيمي المساعد الذكي أحدث نموذج كبير من كيمي، وقد يحتوي على ميزات لم تستقر بعد. يدعم فهم الصور، وسيختار تلقائيًا نموذج 8k/32k/128k كنموذج للتسعير بناءً على طول سياق الطلب."
1423
1441
  },
1442
+ "kimi-thinking-preview": {
1443
+ "description": "نموذج kimi-thinking-preview هو نموذج تفكير متعدد الوسائط يتمتع بقدرات استدلال متعددة الوسائط وعامة، مقدم من الجانب المظلم للقمر، يتقن الاستدلال العميق ويساعد في حل المزيد من المسائل الصعبة."
1444
+ },
1424
1445
  "learnlm-1.5-pro-experimental": {
1425
1446
  "description": "LearnLM هو نموذج لغوي تجريبي محدد المهام، تم تدريبه ليتماشى مع مبادئ علوم التعلم، يمكنه اتباع التعليمات النظامية في سيناريوهات التعليم والتعلم، ويعمل كمدرب خبير."
1426
1447
  },
@@ -1823,12 +1844,18 @@
1823
1844
  "o1-preview": {
1824
1845
  "description": "o1 هو نموذج استدلال جديد من OpenAI، مناسب للمهام المعقدة التي تتطلب معرفة عامة واسعة. يحتوي هذا النموذج على 128K من السياق وتاريخ انتهاء المعرفة في أكتوبر 2023."
1825
1846
  },
1847
+ "o1-pro": {
1848
+ "description": "سلسلة نماذج o1 مدربة بالتعلم المعزز، قادرة على التفكير قبل الإجابة وتنفيذ مهام استدلال معقدة. يستخدم نموذج o1-pro موارد حسابية أكبر للتفكير بشكل أعمق، مما يضمن تقديم إجابات ذات جودة أعلى باستمرار."
1849
+ },
1826
1850
  "o3": {
1827
1851
  "description": "o3 هو نموذج قوي شامل، يظهر أداءً ممتازًا في مجالات متعددة. يضع معايير جديدة في المهام الرياضية، العلمية، البرمجية، واستدلال الرؤية. كما أنه بارع في الكتابة التقنية واتباع التعليمات. يمكن للمستخدمين استخدامه لتحليل النصوص، الأكواد، والصور، وحل المشكلات المعقدة متعددة الخطوات."
1828
1852
  },
1829
1853
  "o3-mini": {
1830
1854
  "description": "o3-mini هو أحدث نموذج استدلال صغير لدينا، يقدم ذكاءً عالياً تحت نفس تكاليف التأخير والأداء مثل o1-mini."
1831
1855
  },
1856
+ "o3-pro": {
1857
+ "description": "نموذج o3-pro يستخدم المزيد من الحسابات للتفكير بشكل أعمق وتقديم إجابات أفضل دائمًا، ويدعم فقط الاستخدام ضمن Responses API."
1858
+ },
1832
1859
  "o4-mini": {
1833
1860
  "description": "o4-mini هو أحدث نموذج صغير من سلسلة o. تم تحسينه للاستدلال السريع والفعال، ويظهر كفاءة وأداء عاليين في المهام البرمجية والرؤية."
1834
1861
  },