- LoadModelsAsync() prüft zuerst data/models_cache.json - Bei Cache-Hit: kein API-Call, sofortiger Start - RefreshModelsFromApis() lädt von APIs + speichert Cache - POST /api/models/refresh Endpoint für manuellen Refresh - dataDir an OpenAiService-Konstruktor übergeben
50 lines
1.7 KiB
C#
50 lines
1.7 KiB
C#
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Gott.Services;
|
|
using Microsoft.AspNetCore.Builder;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Routing;
|
|
|
|
namespace Gott.Endpoints;
|
|
|
|
public static class ModelsEndpoint
|
|
{
|
|
public static void MapModelsEndpoint(this IEndpointRouteBuilder app)
|
|
{
|
|
app.MapGet("/api/models/nvidia", HandleNvidiaModels);
|
|
app.MapGet("/api/models/pollinations", HandlePollinationsModels);
|
|
app.MapGet("/api/models/gemini", HandleGeminiModels);
|
|
app.MapPost("/api/models/refresh", HandleRefresh);
|
|
}
|
|
|
|
private static IResult HandleNvidiaModels(OpenAiService openAiService)
|
|
{
|
|
var models = openAiService.GetNvidiaModels()
|
|
.Select(m => new { id = m.Id, displayName = m.DisplayName })
|
|
.ToList();
|
|
return Results.Json(new { models });
|
|
}
|
|
|
|
private static IResult HandlePollinationsModels(OpenAiService openAiService)
|
|
{
|
|
var models = openAiService.GetPollinationsModels()
|
|
.Select(m => new { id = m.Id, displayName = m.DisplayName })
|
|
.ToList();
|
|
return Results.Json(new { models });
|
|
}
|
|
|
|
private static IResult HandleGeminiModels(OpenAiService openAiService)
|
|
{
|
|
var models = openAiService.GetGeminiModels()
|
|
.Select(m => new { id = m.Id, displayName = m.DisplayName })
|
|
.ToList();
|
|
return Results.Json(new { models });
|
|
}
|
|
|
|
private static async Task<IResult> HandleRefresh(OpenAiService openAiService)
|
|
{
|
|
await openAiService.RefreshModelsFromApis();
|
|
return Results.Json(new { success = true, message = "Modelle neu geladen und gecacht." });
|
|
}
|
|
}
|