openai_compat library

OpenAI 互換 Chat Completions API のリクエスト構築・レスポンス解析ヘルパー。

import 'package:ai_box/openai_compat.dart'; して使う。 OpenAI 互換の各プロバイダーパッケージ (chatgpt_box / deepseek_box / grok_box / minimax_box / openrouter_box)が 共有する実装で、アプリから直接使う想定ではない。

画像・音声・ファイル・ツール呼び出し・構造化出力を raw JSON として 組み立てる(freezed のコード生成に依存しない)。

Functions

buildOpenAiBody(LLMCompletionRequest request, {required String maxTokensKey}) → Map<String, dynamic>
LLMCompletionRequest を OpenAI 互換のリクエストボディに変換する。
buildOpenAiEmbeddingBody(EmbeddingRequest request) → Map<String, dynamic>
OpenAI 形式の埋め込みリクエストのボディ(encoding_format: float)。
buildOpenAiImageBody(ImageGenerationRequest request, {bool b64ResponseFormat = false, bool sendSize = true, bool sendAspectRatio = false}) → Map<String, dynamic>
OpenAI 形式の画像生成リクエストのボディ。
getOpenAiJson({required String url, required String apiKey, required String provider, Map<String, String> extraHeaders = const {}}) → Future<Map<String, dynamic>>
OpenAI 互換 API に GET し、JSON ボディを返す(モデル一覧など)。
openAiChunksFromEvents(Stream<Map<String, dynamic>> events, {String? provider}) → Stream<LLMStreamChunk>
OpenAI 互換のストリーミングイベント(chat.completion.chunk)列を LLMStreamChunk 列へ変換する。
parseModelList(Map<String, dynamic> data) → List<AIModel>
モデル一覧のレスポンス(data[] か models[] の id / name / created / context_length)を AIModel のリストにする。
parseOpenAiEmbeddingResponse(Map<String, dynamic> data, {required int expectedCount, required String provider}) → EmbeddingResponse
OpenAI 形式の埋め込みレスポンス(data[].embedding、index 順に並べ直す)を EmbeddingResponse に変換する。数が入力と合わなければ LLMUnknownException。
parseOpenAiImageResponse(Map<String, dynamic> data, {String defaultMimeType = 'image/png'}) → ImageGenerationResponse
OpenAI 形式の画像生成レスポンス(data[].b64_json / data[].url)を ImageGenerationResponse に変換する。
parseOpenAiResponse(Map<String, dynamic> data) → LLMCompletionResponse
OpenAI 互換のレスポンスボディを LLMCompletionResponse に変換する。
postOpenAiJson({required String url, required String apiKey, required String provider, required Map<String, dynamic> body, Map<String, String> extraHeaders = const {}}) → Future<Map<String, dynamic>>
OpenAI 互換 API に POST し、JSON ボディを返す。失敗時は LLMException。
streamOpenAiCompletions({required String url, required String apiKey, required String provider, required LLMCompletionRequest request, required String maxTokensKey, bool includeUsage = false, Map<String, String> extraHeaders = const {}}) → Stream<LLMStreamChunk>
OpenAI 互換 API へ stream: true で POST し、LLMStreamChunk を流す。