# GPT 5.4 API OpenAI による GPT 5.4 LLMの完全な API リファレンスです。 ## モデルバリアント この API は 4 種類のモデルバリアントをサポートしています: | モデル | ID | 説明 | |-------|----|-------------| | **GPT 5.4 Text to Text** | `gpt-5.4-text-to-text` | 一般的なテキストLLMと推論 | | **GPT 5.4 Image to Text** | `gpt-5.4-image-to-text` | テキスト指示による画像理解 | | **GPT 5.4 Web Search** | `gpt-5.4-web-search` | Web 検索機能付きテキストLLM | | **GPT 5.4 File Analysis** | `gpt-5.4-file-analysis` | テキスト指示によるファイル分析 | ## クイック比較 | 機能 | Text to Text | Image to Text | Web Search | File Analysis | |---------|--------------|---------------|------------|---------------| | テキスト入力 | 必須 ✅ | 任意 | 必須 ✅ | 任意 | | 画像入力 | 非対応 ❌ | 任意 | 任意 | 任意 | | ファイル入力 | 非対応 ❌ | 非対応 ❌ | 任意 | 任意 | | ストリーミングレスポンス | SSE | SSE | SSE | SSE | | `max_tokens` | 任意 | 任意 | 任意 | 任意 | ## GPT 5.4 Text to Text ### エンドポイント ```http POST /api/v1/chat/completions ``` ### リクエストパラメータ #### 必須 | パラメータ | 型 | 説明 | |-----------|------|-------------| | `model` | string | 必ず `"gpt-5.4-text-to-text"` を指定してください | | `messages` | array | 順序付きメッセージ。メッセージ構造については LLM API を参照してください。 | | `stream` | boolean | `true` の場合は SSE、`false` の場合は単一の JSON レスポンス。 | #### メッセージ対応 | フィールド | テキスト | ファイル | 画像 | |-------|------|------|-------| | `messages` | 必須 ✅ | 非対応 ❌ | 非対応 ❌ | #### 任意 | パラメータ | 型 | 範囲 | 説明 | |-----------|------|-------|-------------| | `max_tokens` | integer | `> 1` | 最大出力トークン数。 | ### リクエスト例 ```javascript const response = await fetch('https://api.flaq.ai/api/v1/chat/completions', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Accept': 'text/event-stream', 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'gpt-5.4-text-to-text', messages: [ { role: 'user', content: 'Write a short launch announcement for a new AI feature.' } ], stream: true, max_tokens: 2048 }) }); ``` ## GPT 5.4 Image to Text ### エンドポイント ```http POST /api/v1/chat/completions ``` ### リクエストパラメータ #### 必須 | パラメータ | 型 | 説明 | |-----------|------|-------------| | `model` | string | 必ず `"gpt-5.4-image-to-text"` を指定してください | | `messages` | array | 順序付きメッセージ。LLM API とメッセージ添付を参照してください。 | | `stream` | boolean | `true` の場合は SSE、`false` の場合は単一の JSON レスポンス。 | #### メッセージ対応 | フィールド | テキスト | ファイル | 画像 | |-------|------|------|-------| | `messages` | 任意 | 非対応 ❌ | 任意 | #### 任意 | パラメータ | 型 | 範囲 | 説明 | |-----------|------|-------|-------------| | `max_tokens` | integer | `> 1` | 最大出力トークン数。 | ### リクエスト例 ```javascript const response = await fetch('https://api.flaq.ai/api/v1/chat/completions', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Accept': 'text/event-stream', 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'gpt-5.4-image-to-text', messages: [ { role: 'user', content: [ { type: 'text', text: 'Describe the image and extract any visible text.' }, { type: 'image_url', image_url: { url: 'https://example.com/sample-image.jpg' } } ] } ], stream: true, max_tokens: 2048 }) }); ``` ## GPT 5.4 Web Search ### エンドポイント ```http POST /api/v1/chat/completions ``` ### リクエストパラメータ #### 必須 | パラメータ | 型 | 説明 | |-----------|------|-------------| | `model` | string | 必ず `"gpt-5.4-web-search"` を指定してください | | `messages` | array | 順序付きメッセージ。LLM API とメッセージ添付を参照してください。 | | `stream` | boolean | `true` の場合は SSE、`false` の場合は単一の JSON レスポンス。 | #### メッセージ対応 | フィールド | テキスト | ファイル | 画像 | |-------|------|------|-------| | `messages` | 必須 ✅ | 任意 | 任意 | #### 任意 | パラメータ | 型 | 範囲 | 説明 | |-----------|------|-------|-------------| | `max_tokens` | integer | `> 1` | 最大出力トークン数。 | ### リクエスト例 ```javascript const response = await fetch('https://api.flaq.ai/api/v1/chat/completions', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Accept': 'text/event-stream', 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'gpt-5.4-web-search', messages: [ { role: 'user', content: 'Find recent product launch trends in AI developer tools.' } ], stream: true, max_tokens: 2048 }) }); ``` ## GPT 5.4 File Analysis ### エンドポイント ```http POST /api/v1/chat/completions ``` ### リクエストパラメータ #### 必須 | パラメータ | 型 | 説明 | |-----------|------|-------------| | `model` | string | 必ず `"gpt-5.4-file-analysis"` を指定してください | | `messages` | array | 順序付きメッセージ。LLM API とメッセージ添付を参照してください。 | | `stream` | boolean | `true` の場合は SSE、`false` の場合は単一の JSON レスポンス。 | #### メッセージ対応 | フィールド | テキスト | ファイル | 画像 | |-------|------|------|-------| | `messages` | 任意 | 任意 | 任意 | #### 任意 | パラメータ | 型 | 範囲 | 説明 | |-----------|------|-------|-------------| | `max_tokens` | integer | `> 1` | 最大出力トークン数。 | ### リクエスト例 ```javascript const response = await fetch('https://api.flaq.ai/api/v1/chat/completions', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Accept': 'text/event-stream', 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'gpt-5.4-file-analysis', messages: [ { role: 'user', content: [ { type: 'text', text: 'Summarize this document and list the key action items.' }, { type: 'file', file: { filename: 'demo.pdf', file_data: 'https://example.com/demo.pdf' } } ] } ], stream: true, max_tokens: 2048 }) }); ``` ## レスポンス形式 GPT 5.4 LLMモデルは OpenAI 互換の completion レスポンスを返します。`stream: true` の場合は Server-Sent Events、`stream: false` の場合は単一の JSON オブジェクトです。 ### 成功レスポンス ```text data: {"id":"chatcmpl-...","object":"chat.completion.chunk","created":1710000000,"model":"gpt-5.4-image-to-text","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]} data: {"id":"chatcmpl-...","object":"chat.completion.chunk","created":1710000000,"model":"gpt-5.4-image-to-text","choices":[{"index":0,"delta":{"content":"The image shows"},"finish_reason":null}]} data: {"id":"chatcmpl-...","object":"chat.completion.chunk","created":1710000000,"model":"gpt-5.4-image-to-text","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]} data: {"id":"chatcmpl-...","object":"chat.completion.chunk","created":1710000000,"model":"gpt-5.4-image-to-text","choices":[],"usage":{"prompt_tokens":12,"completion_tokens":8,"total_tokens":20}} data: [DONE] ``` ### エラーレスポンス ```text event: error data: {"error":{"message":"API requests too frequent, exceeding rate limit","type":"rate_limit_error","code":"1302","param":null}} ``` ## ベストプラクティス 1. **メッセージを構造化する:** コンテキストを 1 つのプロンプトにまとめず、会話履歴には `messages[]` を使用します。 2. **ファイルと画像をメッセージに添付する:** `image_url` と `file` パートは、それらを導入するメッセージ内に配置します。 3. **SSE を解析する:** 増分表示には `choices[0].delta.content` を使用し、最終コンテンツには `data: [DONE]` を使用します。 4. **対応する入力だけを送信する:** テキスト、画像、ファイルのパートを選択したモデルバリアントに合わせます。 5. **リクエスト状態をローカルに保存する:** チャンクには completion の `id` が含まれますが、クライアントは引き続きアクティブなリクエスト状態に紐づけて処理してください。