Forge
csharpdeeb25a2
1namespace CascadeIDE.Models;
2
3/// <summary>Детали модели Ollama из API (POST /api/show и GET /api/tags).</summary>
4public sealed class OllamaModelDetails
5{
6 public string? ParameterSize { get; init; }
7 public string? QuantizationLevel { get; init; }
8 public string? Family { get; init; }
9 public IReadOnlyList<string> Capabilities { get; init; } = [];
10 public long? ContextLength { get; init; }
11 public string? License { get; init; }
12 public long? SizeBytes { get; init; }
13 public string? Format { get; init; }
14 public string? ModifiedAt { get; init; }
15
16 /// <summary>Краткая строка для отображения (размер, квантизация, контекст, возможности).</summary>
17 public string ToShortString()
18 {
19 var parts = new List<string>();
20 if (!string.IsNullOrEmpty(ParameterSize))
21 parts.Add(ParameterSize);
22 if (!string.IsNullOrEmpty(QuantizationLevel))
23 parts.Add(QuantizationLevel);
24 if (ContextLength is > 0)
25 parts.Add($"контекст {ContextLength:N0}");
26 if (Capabilities.Count > 0)
27 parts.Add(string.Join(", ", Capabilities));
28 return parts.Count == 0 ? "" : string.Join(" · ", parts);
29 }
30
31 /// <summary>Размер в человекочитаемом виде.</summary>
32 public string? SizeFormatted =>
33 SizeBytes is null or <= 0 ? null
34 : SizeBytes < 1024 ? $"{SizeBytes} B"
35 : SizeBytes < 1024 * 1024 ? $"{SizeBytes / 1024.0:F1} KB"
36 : SizeBytes < 1024 * 1024 * 1024 ? $"{SizeBytes / (1024.0 * 1024):F1} MB"
37 : $"{SizeBytes / (1024.0 * 1024 * 1024):F1} GB";
38}
39
View only · write via MCP/CIDE