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< events, {String? provider}) → Stream<String, dynamic> >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 を流す。