Files
MaliangAINovalWriter/AINoval/lib/models/model_info.dart
2025-09-10 00:07:52 +08:00

48 lines
1.5 KiB
Dart

import 'package:equatable/equatable.dart';
import 'package:meta/meta.dart';
/// Represents detailed information about an AI model provided by the backend.
@immutable
class ModelInfo extends Equatable {
final String id; // Usually the unique model identifier (e.g., "gpt-4o")
final String name; // User-friendly name (might be the same as id or different)
final String provider;
final String? description;
final int? maxTokens;
// Add other fields as needed based on backend response (e.g., pricing)
// final double? unifiedPrice;
const ModelInfo({
required this.id,
required this.name,
required this.provider,
this.description,
this.maxTokens,
// this.unifiedPrice,
});
factory ModelInfo.fromJson(Map<String, dynamic> json) {
return ModelInfo(
id: json['id'] as String? ?? '',
name: json['name'] as String? ?? json['id'] as String? ?? '', // Fallback name to id
provider: json['provider'] as String? ?? '',
description: json['description'] as String?,
maxTokens: json['maxTokens'] as int?,
// unifiedPrice: (json['unifiedPrice'] as num?)?.toDouble(),
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'name': name,
'provider': provider,
'description': description,
'maxTokens': maxTokens,
// 'unifiedPrice': unifiedPrice,
};
}
@override
List<Object?> get props => [id, name, provider, description, maxTokens /*, unifiedPrice*/];
}