1. 問題の概要

iOS (iPhone 13, iOS 17.x) 環境で X(旧Twitter)アプリを通じて保存した画像をiPhoneの写真アプリから直接GPTにアップロードする場合、その画像のMIMEタイプが正しく認識されず、Action APIのリクエスト時に null として処理されて400エラーが発生する問題が発見されました。画像フォーマットはJPEGであるにも関わらず、OpenAIのファイルサービスがMIMEを正しく推論できません。


2. 発生条件

  • 使用機器: iPhone 13 (iOS 17.x)
  • アップロード方法: 写真アプリから直接GPTにアップロード
  • 画像生成経路: Xアプリのダウンロードボタンを通じて保存
  • ファイルフォーマット: JPEG (EXIF情報および圧縮方式に基づく)
  • 拡張子表記: .jpeg または .JPEG (写真アプリ) → .jpg (UbuntuではNextcloud連携時に確認)
  • 写真アプリの動作: Xアプリで保存した画像が自動的にアルバムに分類される

3. 実験結果の概要

実験条件 出所 拡張子 MIME推論値 結果
写真アプリからX画像をアップロード Xアプリのダウンロード .jpeg null ❌ 失敗
ファイルアプリ/Nextcloudにコピー後アップロード X画像のコピー .jpg image/jpeg ✅ 成功
同一画像をUbuntuにアップロード Nextcloud同期されたフォルダ .jpg image/jpeg ✅ 成功

4. 分析および推定原因

4.1 Xアプリのメタデータ干渉の可能性

  • com.apple.metadata:kMDItemWhereFromsなどのiOS専用メタタグがMIMEタイプ推論を妨げる可能性がある

4.2 拡張子と内部フォーマットの不一致

  • iOSでは .jpeg と表記されるが、Ubuntuなどでは .jpg として処理され、プラットフォーム間の推論方式に差異が生じる

4.3 GPTが指定したMIMEタイプが無視される

  • GPTが image/jpeg と明記していても、OpenAIのファイルサービスがこれを無視して独自に null として処理する

5. 提案および対応方針

5.1 ユーザー側の対応

  • Xアプリで保存した画像は写真アプリから直接アップロードしないこと
  • ファイルアプリやPC/Macを通じて画像ファイルを移動させてアップロードする方法を推奨

5.2 OpenAIおよびAction SDKの改善要請

  1. .jpeg 拡張子に対するMIMEタイプ推論の改善
  2. GPTが指定したMIMEタイプを無視しないようSDKを改善
  3. メタデータに依存せず、Content-Sniffingに基づくフォールバック処理の検討

6. 参考資料提供可能項目

要請時に以下の資料を提供可能: - iOS写真アプリとUbuntu環境でのメタデータ比較スクリーンショット - Ubuntuで抽出したメディア属性情報 - GPTが指定した mime_type が無視された実際のリクエストログ