diff --git a/docs-site/src/content/docs/fr/guides/providers.md b/docs-site/src/content/docs/fr/guides/providers.md index e3c43331042..6c3943e45d6 100644 --- a/docs-site/src/content/docs/fr/guides/providers.md +++ b/docs-site/src/content/docs/fr/guides/providers.md @@ -67,8 +67,9 @@ La relance d'une requête 429 avec la même clé, configurée par [`retryOn429`](/fr/reference/configuration/), s'applique uniquement aux fournisseurs à clé API (`authMode: "key"`). Les préréglages OAuth, de transfert et locaux sont exclus : leurs identifiants ne doivent jamais être réutilisés sur le même jeton, et les environnements locaux ne possèdent aucune clé distante à -préserver. Cette fonction est facultative : elle est désactivée lorsque l'option est absente ; la présence de -l'objet l'active, sauf si `enabled: false`. +préserver. Cette fonction est facultative, sauf pour les valeurs par défaut documentées propres à certaines destinations. Le Chat Mistral canonique utilise une politique de relance patiente (6 relances, intervalle de repli de 10 secondes), dans la limite de l'allocation d'envois existante pour l'ensemble de la requête. Les réglages explicites de `retryOn429`, y compris `enabled: false`, sont prioritaires. Le préréglage Mistral transmet aussi par défaut les clés de cache de prompt fournies ; `promptCacheKey: false` désactive cette transmission. L'affinité de cache augmente les chances de réutilisation, mais ne garantit pas un succès de cache et ne lève pas les limites de débit de jetons. + +Mistral utilise un seul fournisseur à clé API pour les clés Studio et Vibe. Les types de clés et les allocations des offres sont décrits dans la [documentation des clés API de Mistral](https://docs.mistral.ai/admin/identity-access/api-keys) ; le proxy ne déduit pas le niveau d'abonnement à partir de la clé. Pour tous les modèles, les échéances `Retry-After` explicites renvoyées en amont sont partagées entre les appels qui utilisent les mêmes identifiants et le même modèle. Un 429 sans délai de relance peut déclencher une attente de récupération prudente de 60 secondes lorsque des compteurs par minute valides indiquent une capacité épuisée, ou lorsque le coût mesuré de la requête refusée dépasse les jetons restants tout en tenant dans l'allocation complète annoncée. Il s'agit d'une politique de récupération locale, pas d'une prédiction exacte de la réinitialisation côté serveur. Le trafic sain ne prédit jamais le cache ni le coût de la requête suivante. Après l'attente, une seule sonde de récupération est envoyée ; si elle réussit, le trafic ordinaire reprend. Des indications absentes, mal formées, sans droit d'usage, mensuelles épuisées ou supérieures à l'allocation complète n'inventent ni réinitialisation ni compactage de l'historique. `requestPacing: { "enabled": false }` ou `retryOn429: { "respectRetryAfter": false }` désactive le cadencement partagé. Pour une relance avec la même clé, si le délai de relance de Mistral dépasse `retryOn429.maxIntervalMs`, le proxy renvoie le 429 et l'indication de relance au lieu de relancer trop tôt. Lorsque la sélection des clés en rotation est activée, les requêtes en attente revérifient le refroidissement des clés et acquièrent la capacité de cadencement d'une clé de remplacement, et un rejet de clé avant toute sortie peut être récupéré avec une clé saine dans la limite d'envois existante de la requête. Les fenêtres de contexte et les préférences de compactage par modèle restent indépendantes. ## 1. Connexion ChatGPT (transfert direct) @@ -384,6 +385,11 @@ par Sionic, `deepseek/deepseek-v4.1-flash-ultrafast` et `z-ai/glm-5.3-flash-ultr sont affichés en premier. Créez une clé dans le [tableau de bord OpenGateway](https://opengateway.ai/api-keys), puis lancez `ocx provider add opengateway` ou sélectionnez **OpenGateway** dans le tableau de bord. Les requêtes chat utilisent la clé Bearer configurée ; la liste publique ne valide pas cette clé. +Les tableaux de contenu des résultats d'outils sont envoyés sous forme de texte, et les images sont conservées après le groupe de résultats d'outils associé. Les parties de résultat non prises en charge, y compris les refus et les contenus opaques, sont rejetées explicitement par une erreur d'entrée client avant l'envoi. +Le niveau de détail d'image `original` est converti en `high`, que la passerelle accepte ; les octets de l'image restent inchangés. +La route Responses native vérifie aussi les complétions vides en texte seul avant de les présenter comme un succès. +Un budget de sortie épuisé produit `incomplete` avec `max_output_tokens` ; le proxy n'augmente pas le budget demandé. Une complétion vide qui peut être relancée sans risque et qui dispose encore de budget peut être retentée une seule fois, dans la limite d'envois existante. `emptyCompletionRetry: false` explicite ou `OCX_EMPTY_COMPLETION_RETRY=0` désactive cette nouvelle tentative. Le texte, les refus, l'activité d'outils et les événements de flux inconnus empêchent la relance et conservent le flux d'origine. Cette protection ne modifie ni les autres fournisseurs ni leurs valeurs par défaut de nouvelle tentative. +La relance exige `store: false` explicite, une entrée complète et uniquement des outils exécutés par le client ; un outil hébergé comme `web_search` empêche la relance automatique même si aucun événement d'outil n'a été observé. **OpenCode Zen** (`opencode-zen`) utilise `https://opencode.ai/zen/v1` avec une clé API obtenue sur [opencode.ai/auth](https://opencode.ai/auth). Les modèles gratuits peuvent subir une limite courte d’environ 15–20 requêtes/minute (mesure communautaire ; OpenCode ne publie pas de RPM). Si une réponse 429 de limitation omet `Retry-After`, opencodex ajoute des indications et un `Retry-After` synthétique ; les en-têtes valides en amont restent prioritaires. Les tentatives avec la même clé restent facultatives via [`retryOn429`](/fr/reference/configuration/). diff --git a/docs-site/src/content/docs/ja/guides/providers.md b/docs-site/src/content/docs/ja/guides/providers.md index 6e066784772..687305283e8 100644 --- a/docs-site/src/content/docs/ja/guides/providers.md +++ b/docs-site/src/content/docs/ja/guides/providers.md @@ -57,7 +57,9 @@ Codex login を Pool モードで使うと、Providers の概要には任意の [`retryOn429`](/ja/reference/configuration/)(同一キーでの 429 リトライ)は API キー プロバイダー (`authMode: "key"`)のみに適用されます。OAuth・forward・ローカル プリセットは除外されます — 同じトークンを再送すべきではなく、ローカルランタイムには保存すべきリモートキーがありません。 -オプトインです: オプションが無ければ無効、オブジェクトがあれば `enabled: false` でない限り有効です。 +ドキュメントに記載された宛先固有のデフォルトを除き、オプトインです。正規の Mistral Chat は、既存のリクエスト全体の送信枠の範囲内で、粘り強いリトライポリシー(再送 6 回、フォールバック間隔 10 秒)を使います。`enabled: false` を含む明示的な `retryOn429` 設定が優先されます。Mistral プリセットは、渡されたプロンプトキャッシュキーもデフォルトで転送します。`promptCacheKey: false` で転送を無効にできます。キャッシュアフィニティは再利用の可能性を高めますが、キャッシュヒットを保証せず、トークンスループットの制限もなくしません。 + +Mistral は Studio キーと Vibe キーの両方に 1 つの API キー プロバイダーを使います。キーの種類とプランの許容量は [Mistral の API キーのドキュメント](https://docs.mistral.ai/admin/identity-access/api-keys)に記載されています。プロキシはキーからサブスクリプションのティアを推測しません。すべてのモデルで、上流が明示した `Retry-After` の期限は、同じ認証情報とモデルでの呼び出し間で共有されます。リトライ時刻のない 429 は、有効な分単位カウンターが容量の枯渇を示す場合、または拒否されたクエリの実測コストが残りトークンを超えつつ公表された全許容量には収まる場合に、控えめな 60 秒の回復待機を開始することがあります。これはローカルの回復ポリシーであり、サーバーのリセット時刻を正確に予測するものではありません。正常なトラフィックでは、次のクエリのキャッシュやコストを予測しません。待機後に回復プローブを 1 回だけ送り、成功すれば通常のトラフィックに戻ります。欠落、不正な形式、利用権ゼロ、月間枠の枯渇、全許容量超過といった根拠からは、リセットを作り出したり履歴をコンパクトしたりしません。`requestPacing: { "enabled": false }` または `retryOn429: { "respectRetryAfter": false }` で共有ペーシングを無効にします。同じキーでの再送について、Mistral のリトライ時刻が `retryOn429.maxIntervalMs` を超える場合、プロキシは早すぎる再送をせず、429 とリトライのヒントを返します。ラウンドロビンのキー選択が有効な場合、待機中のリクエストはキーのクールダウンを再確認して代替キーのペーシング容量を確保し、出力前のキー拒否はリクエストの既存の送信上限内で正常なキーに切り替えて回復できます。コンテキストウィンドウとモデルごとのコンパクション設定は独立したままです。 ## 1. ChatGPT ログイン(forward / パススルー) @@ -280,6 +282,11 @@ Chat Completions モデル(および Responses 専用で Responses にルー [OpenGateway ダッシュボード](https://opengateway.ai/api-keys)でキーを作成し、 `ocx provider add opengateway` を実行するか、ダッシュボードで **OpenGateway** を選択してください。 Chat リクエストは設定済みの Bearer キーを使います。公開一覧はキーの有効性を検証しません。 +ツール結果のコンテンツ配列はテキストとして送り、画像は対応するツール結果グループの後に保持します。refusal や不透明なコンテンツなど、サポートされない結果パートは送信前に明示的なクライアント入力エラーとして拒否します。 +画像の詳細度 `original` はゲートウェイが受け付ける `high` に変換し、画像のバイトはそのまま保ちます。 +ネイティブ Responses ルートは、テキストのみの空の完了を成功として返す前に検査します。 +出力予算を使い切った場合は `max_output_tokens` を伴う `incomplete` になり、プロキシは要求された予算を増やしません。予算が残っていて安全に再送できる空の完了は、既存の送信上限の範囲内で 1 回だけ再試行することがあります。明示的な `emptyCompletionRetry: false` または `OCX_EMPTY_COMPLETION_RETRY=0` でこの再試行を無効にします。テキスト、refusal、ツールの動作、未知のストリームイベントがあると再送せず、元のストリームを保持します。この保護は他のプロバイダーやそのリトライのデフォルトを変更しません。 +再送には明示的な `store: false`、完全な入力、クライアント実行のツールのみが必要です。`web_search` などのホスト型ツールがあると、ツールイベントが観測されていなくても自動再送しません。 **OpenCode Zen**(`opencode-zen`)は [opencode.ai/auth](https://opencode.ai/auth) の API キーで `https://opencode.ai/zen/v1` を使用します。無料モデルは毎分約 15–20 リクエストの短時間レート制限に当たることがあります(コミュニティ計測。OpenCode は RPM を公表していません)。レート制限 429 に `Retry-After` がない場合、opencodex は案内と合成 `Retry-After` を追加し、有効な上流ヘッダーを優先します。同一キーの再試行は [`retryOn429`](/ja/reference/configuration/) で有効にします。 diff --git a/docs-site/src/content/docs/ko/guides/providers.md b/docs-site/src/content/docs/ko/guides/providers.md index ce40892e76e..a37727fa973 100644 --- a/docs-site/src/content/docs/ko/guides/providers.md +++ b/docs-site/src/content/docs/ko/guides/providers.md @@ -55,8 +55,9 @@ shipped v1 config는 marker 2의 단일 옵션 행으로 자동 이관됩니다. [`retryOn429`](/ko/reference/configuration/)(동일 키 429 재시도)는 API 키 프로바이더 (`authMode: "key"`)에만 적용됩니다. OAuth·forward·로컬 프리셋은 제외됩니다 — 같은 토큰을 -재전송해서는 안 되며, 로컬 런타임에는 보존할 원격 키가 없습니다. 옵트인입니다: 옵션이 없으면 -꺼져 있고, 객체가 있으면 `enabled: false`가 아닌 한 활성화됩니다. +재전송해서는 안 되며, 로컬 런타임에는 보존할 원격 키가 없습니다. 문서화된 대상별 기본값을 제외하면 옵트인입니다. 정식 Mistral Chat은 기존 요청 단위 전송 한도 안에서 끈질긴 재시도 정책(재전송 6회, 대체 간격 10초)을 사용합니다. `enabled: false`를 포함한 명시적인 `retryOn429` 설정이 우선합니다. Mistral 프리셋은 전달받은 프롬프트 캐시 키도 기본으로 전달하며, `promptCacheKey: false`로 전달을 끌 수 있습니다. 캐시 친화성은 재사용 가능성을 높이지만 캐시 적중을 보장하거나 토큰 처리량 제한을 없애지는 않습니다. + +Mistral은 Studio 키와 Vibe 키 모두에 하나의 API 키 프로바이더를 사용합니다. 키 종류와 요금제 허용량은 [Mistral API 키 문서](https://docs.mistral.ai/admin/identity-access/api-keys)에 설명되어 있으며, 프록시는 키에서 구독 등급을 추론하지 않습니다. 모든 모델에서 업스트림이 명시한 `Retry-After` 기한은 같은 자격 증명과 모델의 호출 사이에서 공유됩니다. 재시도 시각이 없는 429는 유효한 분 단위 카운터가 용량 소진을 보여 주거나, 거절된 쿼리의 측정 비용이 남은 토큰을 넘지만 공시된 전체 허용량 안에 들어올 때 보수적인 60초 복구 대기를 시작할 수 있습니다. 이는 로컬 복구 정책이며 서버 재설정 시각을 정확히 예측하는 것이 아닙니다. 정상 트래픽에서는 다음 쿼리의 캐시나 비용을 예측하지 않습니다. 대기 후 복구 프로브를 한 번 보내고, 성공하면 일반 트래픽으로 돌아갑니다. 근거가 없거나, 형식이 잘못됐거나, 이용 권한이 0이거나, 월간 한도가 소진됐거나, 전체 허용량을 넘는 경우에는 재설정을 지어내거나 기록을 압축하지 않습니다. `requestPacing: { "enabled": false }` 또는 `retryOn429: { "respectRetryAfter": false }`로 공유 페이싱을 끕니다. 같은 키로 재전송할 때 Mistral의 재시도 시각이 `retryOn429.maxIntervalMs`를 넘으면 프록시는 일찍 재전송하지 않고 429와 재시도 힌트를 반환합니다. 라운드 로빈 키 선택이 켜져 있으면 대기 중인 요청은 키 쿨다운을 다시 확인하고 대체 키의 페이싱 용량을 확보하며, 출력 전의 키 거절은 요청의 기존 전송 한도 안에서 정상 키로 복구될 수 있습니다. 컨텍스트 창과 모델별 압축 설정은 서로 독립적으로 유지됩니다. ## 1. ChatGPT 로그인 (forward / 패스스루) diff --git a/docs-site/src/content/docs/ru/guides/providers.md b/docs-site/src/content/docs/ru/guides/providers.md index 6d3a7955427..ce68b2eecf3 100644 --- a/docs-site/src/content/docs/ru/guides/providers.md +++ b/docs-site/src/content/docs/ru/guides/providers.md @@ -65,8 +65,9 @@ description: Все способы, которыми opencodex аутентиф Повтор при 429 на том же ключе ([`retryOn429`](/ru/reference/configuration/)) применим только к провайдерам с API-ключом (`authMode: "key"`). Пресеты OAuth, forward и local исключены — их учётные данные нельзя повторно отправлять по тому же токену, а у локальных сред выполнения нет -удалённого ключа. Это opt-in: при отсутствии опции функция выключена; наличие объекта включает -её, если только `enabled: false`. +удалённого ключа. Это opt-in, за исключением задокументированных значений по умолчанию для отдельных назначений. Канонический Mistral Chat использует терпеливую политику повторов (6 повторов, резервный интервал 10 секунд) в пределах существующего лимита отправок на весь запрос. Явные настройки `retryOn429`, включая `enabled: false`, имеют приоритет. Пресет Mistral также по умолчанию пересылает переданные ключи кэша промптов; `promptCacheKey: false` отключает пересылку. Привязка к кэшу повышает шанс повторного использования, но не гарантирует попадание в кэш и не снимает лимиты пропускной способности по токенам. + +Mistral использует одного провайдера с API-ключом и для ключей Studio, и для ключей Vibe. Типы ключей и лимиты тарифов описаны в [документации Mistral по API-ключам](https://docs.mistral.ai/admin/identity-access/api-keys); прокси не определяет уровень подписки по ключу. Для всех моделей явные сроки `Retry-After` от апстрима общие для вызовов с одними и теми же учётными данными и моделью. 429 без времени повтора может запустить консервативное 60-секундное ожидание восстановления, если корректные поминутные счётчики показывают исчерпанную ёмкость или измеренная стоимость отклонённого запроса превышает оставшиеся токены, но укладывается в полный заявленный лимит. Это локальная политика восстановления, а не точный прогноз сброса на сервере. При нормальном трафике кэш и стоимость следующего запроса никогда не прогнозируются. После ожидания выполняется одна пробная попытка восстановления; при успехе обычный трафик возобновляется. Отсутствующие, некорректные, с нулевым правом использования, с исчерпанным месячным лимитом или превышающие полный лимит данные не приводят к выдуманному сбросу или сжатию истории. `requestPacing: { "enabled": false }` или `retryOn429: { "respectRetryAfter": false }` отключает общий темп запросов. Для повтора с тем же ключом: если время повтора от Mistral превышает `retryOn429.maxIntervalMs`, прокси возвращает 429 и подсказку о повторе, а не повторяет запрос раньше времени. Если включён выбор ключей по кругу (round-robin), ожидающие запросы перепроверяют периоды охлаждения ключей и получают ёмкость темпа для запасного ключа, а отказ ключа до начала вывода может быть восстановлен на исправном ключе в пределах существующего лимита отправок запроса. Окна контекста и настройки компактизации для отдельных моделей остаются независимыми. ## 1. Вход через ChatGPT (forward / passthrough) @@ -295,6 +296,11 @@ opencodex поставляется с 104 встроенными пресета Создайте ключ в [панели OpenGateway](https://opengateway.ai/api-keys), затем выполните `ocx provider add opengateway` или выберите **OpenGateway** в панели. Chat-запросы используют настроенный Bearer-ключ; публичный список не подтверждает действительность ключа. +Массивы содержимого результатов инструментов отправляются как текст, а изображения сохраняются после соответствующей группы результатов инструментов. Неподдерживаемые части результатов, включая отказы и непрозрачное содержимое, явно отклоняются с ошибкой клиентского ввода до отправки. +Детализация изображения `original` преобразуется в `high`, которую принимает шлюз; байты изображения не меняются. +Нативный маршрут Responses также проверяет пустые текстовые завершения, прежде чем выдать их как успешные. +Исчерпанный бюджет вывода даёт `incomplete` с `max_output_tokens`; прокси не увеличивает запрошенный бюджет. Пустое завершение, которое безопасно повторить и у которого остался бюджет, может быть повторено один раз в пределах существующего лимита отправок. Явный `emptyCompletionRetry: false` или `OCX_EMPTY_COMPLETION_RETRY=0` отключает этот повтор. Текст, отказы, активность инструментов и неизвестные события потока исключают повтор, и исходный поток сохраняется. Эта защита не меняет других провайдеров и их значения повторов по умолчанию. +Для повтора нужны явный `store: false`, полный ввод и только инструменты, выполняемые клиентом; размещённый инструмент, например `web_search`, исключает автоматический повтор, даже если событий инструмента не было. **OpenCode Zen** (`opencode-zen`) использует `https://opencode.ai/zen/v1` с API-ключом из [opencode.ai/auth](https://opencode.ai/auth). Бесплатные модели могут упираться в короткий лимит около 15–20 запросов в минуту (оценка сообщества; OpenCode не публикует RPM). Если ответ 429 о лимите частоты не содержит `Retry-After`, opencodex добавляет пояснение и синтетический `Retry-After`; корректные заголовки сервера имеют приоритет. Повторы с тем же ключом включаются через [`retryOn429`](/ru/reference/configuration/). diff --git a/docs-site/src/content/docs/tr/guides/providers.md b/docs-site/src/content/docs/tr/guides/providers.md index 317a6b6b50d..491f78605bb 100644 --- a/docs-site/src/content/docs/tr/guides/providers.md +++ b/docs-site/src/content/docs/tr/guides/providers.md @@ -77,8 +77,9 @@ etiketler; bunlar normalde hem `authMode` hem de `apiKey`'i atlar. özelliği yalnızca API anahtarı sağlayıcıları için geçerlidir (`authMode: "key"`). OAuth, iletme ve yerel önayarlar hariç tutulur — kimlik bilgileri asla aynı belirteç üzerinde yeniden oynatılmamalıdır ve yerel çalışma zamanlarının -korunacak uzak bir anahtarı yoktur. İsteğe bağlıdır: seçenek olmadığında özellik -kapalıdır; nesnenin varlığı `enabled: false` olmadığı sürece etkinleştirir. +korunacak uzak bir anahtarı yoktur. Belgelenmiş hedefe özgü varsayılanlar dışında isteğe bağlıdır. Standart Mistral Chat, mevcut istek genelindeki gönderim hakkı içinde sabırlı bir yeniden deneme politikası (6 yeniden oynatma, 10 saniyelik yedek aralık) kullanır. `enabled: false` dahil açık `retryOn429` ayarları önceliklidir. Mistral önayarı, sağlanan istem önbelleği anahtarlarını da varsayılan olarak iletir; `promptCacheKey: false` iletmeyi kapatır. Önbellek yakınlığı yeniden kullanım olasılığını artırır, ancak önbellek isabetini garanti etmez ve belirteç verimi sınırlarını kaldırmaz. + +Mistral, hem Studio hem Vibe anahtarları için tek bir API anahtarı sağlayıcısı kullanır. Anahtar türleri ve plan hakları [Mistral'ın API anahtarı belgelerinde](https://docs.mistral.ai/admin/identity-access/api-keys) açıklanır; proxy anahtardan abonelik katmanı çıkarmaz. Tüm modellerde, yukarı akışın açıkça bildirdiği `Retry-After` süreleri aynı kimlik bilgisi ve model üzerindeki çağrılar arasında paylaşılır. Yeniden deneme zamanı içermeyen bir 429, geçerli dakikalık sayaçlar kapasitenin tükendiğini gösterdiğinde veya reddedilen sorgunun ölçülen maliyeti kalan belirteçleri aşıp ilan edilen tam hakka sığdığında temkinli bir 60 saniyelik kurtarma beklemesi başlatabilir. Bu, sunucu sıfırlamasının kesin bir tahmini değil, yerel bir kurtarma politikasıdır. Sağlıklı trafik, bir sonraki sorgunun önbelleğini veya maliyetini asla tahmin etmez. Beklemeden sonra tek bir kurtarma yoklaması çalışır; başarılı olursa normal trafik geri gelir. Eksik, hatalı biçimli, sıfır haklı, aylık hakkı tükenmiş veya tam hakkın üzerindeki kanıtlar bir sıfırlama uydurmaz ve geçmişi sıkıştırmaz. `requestPacing: { "enabled": false }` veya `retryOn429: { "respectRetryAfter": false }` paylaşılan hız ayarlamasını kapatır. Aynı anahtarla yeniden oynatmada, Mistral'ın yeniden deneme süresi `retryOn429.maxIntervalMs` değerini aşarsa proxy erken yeniden oynatmak yerine 429'u ve yeniden deneme ipucunu döndürür. Döngüsel (round-robin) anahtar seçimi etkinse bekleyen istekler anahtar soğuma sürelerini yeniden denetler ve yedek anahtar için hız kapasitesi alır; çıktıdan önceki bir anahtar reddi, isteğin mevcut gönderim sınırı içinde sağlıklı bir anahtarla kurtarılabilir. Bağlam pencereleri ve model başına sıkıştırma tercihleri bağımsız kalır. ## 1. ChatGPT girişi (iletme / doğrudan geçiş) @@ -422,6 +423,11 @@ yeniler ve etkin Chat Completions modellerini (ve yalnızca Responses ile sunulu [OpenGateway panelinde](https://opengateway.ai/api-keys) bir anahtar oluşturun, ardından `ocx provider add opengateway` çalıştırın veya panelde **OpenGateway** seçin. Chat istekleri yapılandırılmış Bearer anahtarını kullanır; genel model listesi anahtarı doğrulamaz. +Araç sonucu içerik dizileri metin olarak gönderilir; görseller eşleşen araç sonucu grubundan sonra korunur. Ret yanıtları ve opak içerik dahil desteklenmeyen sonuç parçaları, gönderimden önce açık bir istemci girdi hatasıyla reddedilir. +`original` görsel ayrıntısı, ağ geçidinin kabul ettiği `high` değerine eşlenir; görsel baytları değişmez. +Yerel Responses yolu, yalnızca metin içeren boş tamamlamaları başarı olarak sunmadan önce de denetler. +Tükenen çıktı bütçeleri `max_output_tokens` ile `incomplete` üretir; proxy istenen bütçeyi artırmaz. Bütçesi kalan ve güvenle yeniden oynatılabilen boş bir tamamlama, mevcut gönderim sınırı içinde bir kez yeniden denenebilir. Açık `emptyCompletionRetry: false` veya `OCX_EMPTY_COMPLETION_RETRY=0` bu yeniden denemeyi kapatır. Metin, ret yanıtları, araç etkinliği ve bilinmeyen akış olayları yeniden oynatmayı engeller ve özgün akışı korur. Bu koruma diğer sağlayıcıları ve onların yeniden deneme varsayılanlarını değiştirmez. +Yeniden oynatma açık `store: false`, eksiksiz girdi ve yalnızca istemcide çalışan araçlar gerektirir; `web_search` gibi barındırılan bir araç, hiçbir araç olayı gözlenmemiş olsa bile otomatik yeniden oynatmayı engeller. **OpenCode Zen** (`opencode-zen`), [opencode.ai/auth](https://opencode.ai/auth) üzerinden alınan API anahtarıyla `https://opencode.ai/zen/v1` kullanır. Ücretsiz modeller yaklaşık 15–20 istek/dakika kısa pencere sınırına takılabilir (topluluk ölçümü; OpenCode RPM yayımlamaz). Hız sınırı 429 yanıtında `Retry-After` yoksa opencodex açıklama ve sentetik `Retry-After` ekler; geçerli üst kaynak başlıkları önceliklidir. Aynı anahtarla yeniden deneme [`retryOn429`](/tr/reference/configuration/) ile isteğe bağlıdır. diff --git a/docs-site/src/content/docs/zh-cn/guides/providers.md b/docs-site/src/content/docs/zh-cn/guides/providers.md index ef88d8c1837..cf00810d087 100644 --- a/docs-site/src/content/docs/zh-cn/guides/providers.md +++ b/docs-site/src/content/docs/zh-cn/guides/providers.md @@ -52,7 +52,9 @@ shipped v1 配置自动迁移到 marker 2 的单一选项行。原配置只保 [`retryOn429`](/zh-cn/reference/configuration/)(同 key 的 429 重试)仅适用于 API-key 提供商 (`authMode: "key"`)。OAuth、forward 与本地预设均被排除——同一 token 绝不可重放,本地运行时 -也没有需要保留的远程 key。仅在配置后启用,默认关闭;配置了对象即启用,除非 `enabled: false`。 +也没有需要保留的远程 key。除文档中说明的特定目标默认值外,此功能需手动启用。规范的 Mistral Chat 在现有的按请求发送额度内使用耐心重试策略(6 次重放,10 秒回退间隔)。显式的 `retryOn429` 设置(包括 `enabled: false`)优先。Mistral 预设还会默认转发传入的 prompt 缓存 key;`promptCacheKey: false` 可关闭转发。缓存亲和性会提高复用几率,但不保证命中缓存,也不会消除 token 吞吐量限制。 + +Mistral 的 Studio 和 Vibe 密钥共用同一个 API-key 提供商。密钥类型和套餐额度见 [Mistral 的 API 密钥文档](https://docs.mistral.ai/admin/identity-access/api-keys);代理不会根据密钥推断订阅等级。对所有模型,上游显式给出的 `Retry-After` 截止时间会在同一凭据与模型的调用之间共享。没有重试时间的 429,在有效的每分钟计数器显示容量已耗尽,或被拒查询的实测成本超过剩余 token 但仍在公布的完整额度内时,可能触发保守的 60 秒恢复等待。这是本地恢复策略,并非对服务端重置时间的精确预测。正常流量下从不预测下一次查询的缓存或成本。等待结束后发送一次恢复探测;成功即恢复正常流量。缺失、格式错误、零授权、月度额度已耗尽或超过完整额度的依据,不会凭空推断重置,也不会压缩历史。`requestPacing: { "enabled": false }` 或 `retryOn429: { "respectRetryAfter": false }` 可关闭共享节流。对于同一密钥的重放,若 Mistral 的重试时间超过 `retryOn429.maxIntervalMs`,代理会返回 429 及重试提示,而不会提前重放。启用轮询(round-robin)密钥选择时,排队的请求会重新检查密钥冷却并为替代密钥获取节流容量;输出前的密钥拒绝可以在该请求现有的发送上限内切换到健康的密钥恢复。上下文窗口和按模型的压缩偏好保持独立。 ## 1. ChatGPT 登录(forward / 透传) @@ -274,6 +276,11 @@ Sionic 提供的 `deepseek/deepseek-v4.1-flash-ultrafast` 和 [OpenGateway 控制台](https://opengateway.ai/api-keys)创建密钥,再运行 `ocx provider add opengateway` 或在控制台选择 **OpenGateway**。Chat 请求使用配置的 Bearer 密钥;公开模型列表不能验证密钥有效性。 +工具结果内容数组以文本发送,图像保留在配对的工具结果组之后。不支持的结果部分(包括拒绝和不透明内容)会在发送前以明确的客户端输入错误拒绝。 +图像细节 `original` 映射为网关接受的 `high`;图像字节保持不变。 +原生 Responses 路由还会在将纯文本空补全作为成功返回之前进行检查。 +输出预算耗尽时返回带 `max_output_tokens` 的 `incomplete`;代理不会增加请求的预算。仍有预算且可安全重放的空补全,可在现有发送上限内重试一次。显式设置 `emptyCompletionRetry: false` 或 `OCX_EMPTY_COMPLETION_RETRY=0` 可关闭该重试。出现文本、拒绝、工具活动或未知流事件时不会重放,并保留原始流。此保护不改变其他提供商及其重试默认值。 +重放要求显式 `store: false`、完整输入且仅含客户端执行的工具;声明了 `web_search` 等托管工具时,即使未观察到工具事件也不会自动重放。 MiniMax 和 MiniMax (CN) 的提供商卡片也会在配置的密钥有有效 Coding Plan 时显示用量。 仪表盘读取 5 小时窗口,以及套餐提供时的每周窗口;这些仅用于展示,不会改变模型路由。 diff --git a/docs-site/src/content/docs/zh-tw/guides/providers.md b/docs-site/src/content/docs/zh-tw/guides/providers.md index 9be3a8c2aaa..89b0d3f529d 100644 --- a/docs-site/src/content/docs/zh-tw/guides/providers.md +++ b/docs-site/src/content/docs/zh-tw/guides/providers.md @@ -56,8 +56,9 @@ preset 通常同時省略 `authMode` 與 `apiKey`。 [`retryOn429`](/zh-tw/reference/configuration/) 的 same-key 429 replay 只適用於 API-key provider (`authMode: "key"`)。OAuth、forward 與 local preset 都被排除:它們的 credential 絕不能在同一 token -上重播,而 local runtime 也沒有 remote key 可保留。此功能為 opt-in;未設定時關閉,物件存在時預設 -啟用,除非明確設為 `enabled: false`。 +上重播,而 local runtime 也沒有 remote key 可保留。除了文件記載的特定目的地預設值之外,此功能為 opt-in。標準 Mistral Chat 會在既有的整個請求傳送額度內使用耐心的重試策略(6 次 replay,10 秒備援間隔)。明確的 `retryOn429` 設定(包括 `enabled: false`)優先。Mistral preset 也會預設轉送提供的 prompt cache key;`promptCacheKey: false` 可停用轉送。快取親和性能提高重用機會,但不保證快取命中,也不會移除 token 吞吐量限制。 + +Mistral 的 Studio 與 Vibe key 共用同一個 API-key provider。key 類型與方案額度請見 [Mistral 的 API key 文件](https://docs.mistral.ai/admin/identity-access/api-keys);proxy 不會從 key 推斷訂閱等級。對所有模型,上游明確給出的 `Retry-After` 期限會在同一 credential 與模型的呼叫之間共用。沒有重試時間的 429,在有效的每分鐘計數器顯示容量已耗盡,或被拒查詢的實測成本超過剩餘 token 但仍在公告的完整額度內時,可能啟動保守的 60 秒復原等待。這是本地復原策略,並非對伺服器重設時間的精確預測。正常流量從不預測下一次查詢的快取或成本。等待後會執行一次復原探測;成功即恢復一般流量。缺少、格式錯誤、零授權、月額度已耗盡或超過完整額度的依據,不會憑空推斷重設,也不會壓縮歷史。`requestPacing: { "enabled": false }` 或 `retryOn429: { "respectRetryAfter": false }` 可停用共用節流。對於同一 key 的 replay,若 Mistral 的重試時間超過 `retryOn429.maxIntervalMs`,proxy 會回傳 429 與重試提示,而不會提早 replay。啟用 round-robin key 選擇時,排隊中的請求會重新檢查 key 冷卻並為替代 key 取得節流容量;輸出前的 key 拒絕可在該請求既有的送出上限內改用健康的 key 復原。context window 與各模型的壓縮偏好維持獨立。 ## 1. ChatGPT 登入(forward / passthrough) @@ -336,6 +337,11 @@ Sionic 提供的 `deepseek/deepseek-v4.1-flash-ultrafast` 與 [OpenGateway 控制台](https://opengateway.ai/api-keys)建立金鑰,再執行 `ocx provider add opengateway` 或在控制台選擇 **OpenGateway**。Chat 請求使用設定的 Bearer 金鑰;公開模型清單無法驗證金鑰有效性。 +工具結果內容陣列以文字傳送,圖片保留在配對的工具結果群組之後。不支援的結果部分(包括拒絕與不透明內容)會在傳送前以明確的用戶端輸入錯誤拒絕。 +圖片細節 `original` 對應為閘道接受的 `high`;圖片位元組維持不變。 +原生 Responses 路由也會在將純文字空完成以成功回傳之前先檢查。 +輸出預算耗盡時回傳帶 `max_output_tokens` 的 `incomplete`;proxy 不會提高請求的預算。仍有預算且可安全 replay 的空完成,可在既有傳送上限內重試一次。明確設定 `emptyCompletionRetry: false` 或 `OCX_EMPTY_COMPLETION_RETRY=0` 可停用此重試。出現文字、拒絕、工具活動或未知串流事件時不會 replay,並保留原始串流。此保護不會改變其他 provider 及其重試預設值。 +Replay 需要明確的 `store: false`、完整輸入且僅含用戶端執行的工具;宣告了 `web_search` 等託管工具時,即使未觀察到工具事件也不會自動 replay。 **OpenCode Zen**(`opencode-zen`)使用 [opencode.ai/auth](https://opencode.ai/auth) 核發的 API key 存取 `https://opencode.ai/zen/v1`。免費模型可能遇到每分鐘約 15–20 次請求的短時間速率限制(社群測量;OpenCode 未公布 RPM)。速率限制 429 缺少 `Retry-After` 時,opencodex 會加入說明與合成的 `Retry-After`;有效的上游 header 優先。同 key 重試仍須透過 [`retryOn429`](/zh-tw/reference/configuration/) 啟用。