Skip to main content

jocaagura_ai 0.1.0 copy "jocaagura_ai: ^0.1.0" to clipboard
jocaagura_ai: ^0.1.0 copied to clipboard

Pure Dart domain contracts for local AI inference and model lifecycle management, with immutable JSON models and runtime-independent interfaces.

example/jocaagura_ai_example.dart

import 'dart:convert';
import 'dart:io';

import 'package:jocaagura_ai/jocaagura_ai.dart';

/// Demonstrates immutable JSON contracts with a fixture, not real inference.
void main() {
  final ModelAiRequest request = ModelAiRequest(
    requestId: 'example-request',
    modelId: 'local-demo',
    messages: <ModelAiMessage>[
      ModelAiMessage.text(
        role: EnumAiMessageRole.user,
        text: 'Respond only with OK',
      ),
    ],
    options: ModelAiGenerationOptions(maxOutputTokens: 8),
  );
  final String encoded = jsonEncode(request.toJson());
  final ModelAiRequest restored = ModelAiRequest.fromJson(
    jsonDecode(encoded) as Map<String, dynamic>,
  );
  final ModelAiRequest updated = restored.copyWith(
    requestId: 'another-request',
    options: restored.options.copyWith(maxOutputTokens: null),
  );
  final AiResult<ModelAiResponse> fixture = AiSuccess<ModelAiResponse>(
    ModelAiResponse(
      requestId: updated.requestId,
      modelId: updated.modelId,
      text: 'OK',
      finishReason: EnumAiFinishReason.completed,
    ),
  );
  final Map<String, dynamic> json = switch (fixture) {
    AiSuccess<ModelAiResponse>(:final ModelAiResponse value) => value.toJson(),
    AiFailureResult<ModelAiResponse>(:final ModelAiFailure failure) =>
      failure.toJson(),
  };
  stdout.writeln(jsonEncode(json));

  // An input declaration, not a valid image or a real inference request.
  final ModelAiRequest mixed = request.copyWith(
    messages: <ModelAiMessage>[
      ModelAiMessage(
        role: EnumAiMessageRole.user,
        parts: <ModelAiContentPart>[
          ModelAiTextPart(text: 'Describe:'),
          ModelAiImagePart(
            mimeType: 'image/png',
            source: ModelAiInlineBytesSource(bytes: <int>[1, 2, 3]),
          ),
        ],
      ),
    ],
  );
  final ModelAiContentCapabilities imageDeclaration =
      ModelAiContentCapabilities(
        inputModalities: EnumAiInputModality.values.toSet(),
        outputModalities: <EnumAiOutputModality>{EnumAiOutputModality.text},
        inputRoles: <EnumAiMessageRole>{EnumAiMessageRole.user},
        imageSourceTypes: <EnumAiContentSourceType>{
          EnumAiContentSourceType.inlineBytes,
        },
        imageMimeTypes: <String>{'image/png'},
      );
  final ModelAiContentCapabilities textDeclaration = ModelAiContentCapabilities(
    inputModalities: <EnumAiInputModality>{EnumAiInputModality.text},
    outputModalities: <EnumAiOutputModality>{EnumAiOutputModality.text},
    inputRoles: <EnumAiMessageRole>{EnumAiMessageRole.user},
  );
  final ModelAiContentCompatibility assessment = assessAiContentCompatibility(
    request: mixed,
    modelCapabilities: imageDeclaration,
    backendCapabilities: textDeclaration,
  );
  stdout.writeln(jsonEncode(mixed.toJson()));
  stdout.writeln(jsonEncode(assessment.toJson())); // unsupported, without IO.
}
3
likes
160
points
185
downloads

Documentation

API reference

Publisher

verified publisherjocaagura.com

Weekly Downloads

Pure Dart domain contracts for local AI inference and model lifecycle management, with immutable JSON models and runtime-independent interfaces.

Repository (GitHub)
View/report issues

License

MIT (license)

More

Packages that depend on jocaagura_ai