Decode Gemini errors sent as a single object, not only as an array
メンテナーはふだん 2 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 55/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- swift
調査の方向性
Read JSONResponseErrorDecoder.decodeErrorResponse(data:) and the existing testAsyncChatsThrowsStatusErrorForSingleGeminiErrorObject test added in #471. First verify whether Gemini's OpenAI-compatible endpoint returns errors as a single object; the issue says this is unconfirmed. If it does, update decoding and the test to expect GeminiAPIErrorResponse; done means the caller receives the Gemini error message for that response.
索引モデルが issue の本文から書いたものです。
説明
JSONResponseErrorDecoder recognizes a Gemini error only when it comes wrapped in an array:
[{"error": {"code": 400, "message": "Request contains an invalid argument.", "status": "INVALID_ARGUMENT"}}]
The same error sent as a single object isn't recognized:
{"error": {"code": 400, "message": "Request contains an invalid argument.", "status": "INVALID_ARGUMENT"}}
It isn't an APIErrorResponse either, because type is required. So the caller never sees the message:
- Before #471, the body surfaced as a
DecodingErrorabout the expected result type. - With #471, a status of 400 or above surfaces as
OpenAIError.statusError, which carries no body.
The single-object shape is Google's standard API error format, which the native Gemini API uses. Nobody has confirmed yet whether the OpenAI-compatible endpoint ever returns it.
Proposal
- Check whether Gemini's OpenAI-compatible endpoint returns errors as a single object.
- If it does, make
JSONResponseErrorDecoder.decodeErrorResponse(data:)also try a singleGeminiAPIErrorResponse, so the caller gets the message. - Update
testAsyncChatsThrowsStatusErrorForSingleGeminiErrorObject(added in #471) to expect aGeminiAPIErrorResponse.
- 主要言語
- Swift
- スター
- 2.9k
- フォーク
- 519
- 平均マージ
- 3日 12時間
- マージ済み PR(30日)
- 11
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
MacPaw/OpenAI のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 2 日以内に返信
-
Enable batch promptsオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
MacPaw/OpenAI#73 · コメント 1 件 · リアクション 1 件 ·
メンテナーはふだん 2 日以内に返信
-
難易度 3/5 1〜2日 初心者へのやさしさ 70/100
メンテナーはふだん 2 日以内に返信
-
Demo release check 2026-10-27: failures, skips and notes対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンbug
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
MacPaw/OpenAI#478 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
メンテナーはふだん 2 日以内に返信
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
swiftlang/swift-markdown#299 ·
-
area: agents follow-up
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
manaflow-ai/cmux#37234 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100
メンテナーはふだん 1 日以内に返信
-
bug product / functions
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信