moving to openrouter
All checks were successful
Mindforge API Build and Deploy / Build Mindforge API Image (push) Successful in 3m39s
Mindforge Cronjob Build and Deploy / Build Mindforge Cronjob Image (push) Successful in 3m49s
Mindforge API Build and Deploy / Deploy Mindforge API (internal) (push) Successful in 38s
Mindforge Cronjob Build and Deploy / Deploy Mindforge Cronjob (internal) (push) Successful in 30s
All checks were successful
Mindforge API Build and Deploy / Build Mindforge API Image (push) Successful in 3m39s
Mindforge Cronjob Build and Deploy / Build Mindforge Cronjob Image (push) Successful in 3m49s
Mindforge API Build and Deploy / Deploy Mindforge API (internal) (push) Successful in 38s
Mindforge Cronjob Build and Deploy / Deploy Mindforge Cronjob (internal) (push) Successful in 30s
This commit is contained in:
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Mindforge.API.Models.Enums;
|
||||
using Mindforge.API.Providers;
|
||||
using Mindforge.API.Services.Interfaces;
|
||||
|
||||
@@ -10,39 +6,16 @@ namespace Mindforge.API.Services
|
||||
{
|
||||
public class AgentService : IAgentService
|
||||
{
|
||||
private readonly IEnumerable<ILlmApiProvider> _providers;
|
||||
private readonly ILlmApiProvider _provider;
|
||||
|
||||
public AgentService(IEnumerable<ILlmApiProvider> providers)
|
||||
public AgentService(ILlmApiProvider provider)
|
||||
{
|
||||
_providers = providers;
|
||||
_provider = provider;
|
||||
}
|
||||
|
||||
public Task<string> ProcessRequestAsync(LlmProvider providerEnum, string systemPrompt, string userPrompt, string model)
|
||||
public Task<string> ProcessRequestAsync(string systemPrompt, string userPrompt)
|
||||
{
|
||||
ILlmApiProvider provider = providerEnum switch
|
||||
{
|
||||
LlmProvider.OpenAI => _providers.OfType<OpenAIApiProvider>().FirstOrDefault()
|
||||
?? throw new Exception("OpenAI provider not registered"),
|
||||
LlmProvider.Gemini => _providers.OfType<GeminiApiProvider>().FirstOrDefault()
|
||||
?? throw new Exception("Gemini provider not registered"),
|
||||
_ => throw new Exception("Unknown provider")
|
||||
};
|
||||
|
||||
return provider.SendRequestAsync(systemPrompt, userPrompt, model);
|
||||
}
|
||||
|
||||
public Task<string> ProcessRequestBatchAsync(LlmProvider providerEnum, string systemPrompt, string userPrompt, string model)
|
||||
{
|
||||
ILlmApiProvider provider = providerEnum switch
|
||||
{
|
||||
LlmProvider.OpenAI => _providers.OfType<OpenAIApiProvider>().FirstOrDefault()
|
||||
?? throw new Exception("OpenAI provider not registered"),
|
||||
LlmProvider.Gemini => _providers.OfType<GeminiApiProvider>().FirstOrDefault()
|
||||
?? throw new Exception("Gemini provider not registered"),
|
||||
_ => throw new Exception("Unknown provider")
|
||||
};
|
||||
|
||||
return provider.SendRequestBatchAsync(systemPrompt, userPrompt, model);
|
||||
return _provider.SendRequestAsync(systemPrompt, userPrompt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Mindforge.API.Models.Enums;
|
||||
using Mindforge.API.Models.Requests;
|
||||
using Mindforge.API.Services.Interfaces;
|
||||
using Mindforge.API.Exceptions;
|
||||
@@ -11,9 +9,6 @@ namespace Mindforge.API.Services
|
||||
{
|
||||
private readonly IAgentService _agentService;
|
||||
|
||||
private const LlmProvider DefaultProvider = LlmProvider.OpenAI;
|
||||
private const string DefaultModel = "gpt-5-mini";
|
||||
|
||||
public FileService(IAgentService agentService)
|
||||
{
|
||||
_agentService = agentService;
|
||||
@@ -55,7 +50,7 @@ Os resumos serão utilizados para concursos públicos, principalmente para a ban
|
||||
|
||||
string userPrompt = $"Arquivo: {request.FileName}\nConteúdo:\n{request.FileContent}";
|
||||
|
||||
return await _agentService.ProcessRequestAsync(DefaultProvider, systemPrompt, userPrompt, DefaultModel);
|
||||
return await _agentService.ProcessRequestAsync(systemPrompt, userPrompt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System.Threading.Tasks;
|
||||
using Mindforge.API.Models.Enums;
|
||||
using Mindforge.API.Models.Requests;
|
||||
using Mindforge.API.Services.Interfaces;
|
||||
|
||||
@@ -10,9 +9,6 @@ namespace Mindforge.API.Services
|
||||
private readonly IAgentService _agentService;
|
||||
private readonly ILogger<FlashcardService> _logger;
|
||||
|
||||
private const LlmProvider DefaultProvider = LlmProvider.Gemini;
|
||||
private string DefaultModel = "gemini-3.1-flash-image-preview";
|
||||
|
||||
public FlashcardService(IAgentService agentService, ILogger<FlashcardService> logger)
|
||||
{
|
||||
_agentService = agentService;
|
||||
@@ -21,25 +17,12 @@ namespace Mindforge.API.Services
|
||||
|
||||
public async Task<string> GenerateFlashcardsAsync(FlashcardGenerateRequest request)
|
||||
{
|
||||
var extraPrompt = "";
|
||||
|
||||
switch (request.Mode)
|
||||
var extraPrompt = request.Mode switch
|
||||
{
|
||||
case FlashcardMode.Basic:
|
||||
DefaultModel = "gemini-3.1-flash-lite-preview";
|
||||
break;
|
||||
case FlashcardMode.Simple:
|
||||
DefaultModel = "gemini-3.1-flash-image-preview";
|
||||
break;
|
||||
case FlashcardMode.Detailed:
|
||||
DefaultModel = "gemini-3.1-flash-image-preview";
|
||||
extraPrompt = "Crie flashcards mais detalhados.";
|
||||
break;
|
||||
case FlashcardMode.Hyper:
|
||||
DefaultModel = "gemini-3.1-pro-preview";
|
||||
extraPrompt = "Adicione também pequenas questões para fixação, para que o usuário possa testar seus conhecimentos. As questões devem ser curtas e objetivas, como se fosse cobradas em prova mesmo.";
|
||||
break;
|
||||
}
|
||||
FlashcardMode.Detailed => "Crie flashcards mais detalhados.",
|
||||
FlashcardMode.Hyper => "Adicione também pequenas questões para fixação, para que o usuário possa testar seus conhecimentos. As questões devem ser curtas e objetivas, como se fosse cobradas em prova mesmo.",
|
||||
_ => ""
|
||||
};
|
||||
|
||||
string systemPrompt = $@"Você é um assistente educacional especializado em criar flashcards para o Anki.
|
||||
Baseado no texto fornecido, crie exatamente {request.Amount} flashcards que focam nos conceitos mais importantes e difíceis.
|
||||
@@ -57,8 +40,7 @@ Com base no arquivo fornecido, crie exatamente {request.Amount} flashcards que f
|
||||
|
||||
string userPrompt = $"Arquivo: {request.FileName}\nConteúdo:\n{request.FileContent}";
|
||||
|
||||
//var result = await _agentService.ProcessRequestAsync(DefaultProvider, systemPrompt, userPrompt, DefaultModel);
|
||||
var result = await _agentService.ProcessRequestBatchAsync(DefaultProvider, systemPrompt, userPrompt, DefaultModel);
|
||||
var result = await _agentService.ProcessRequestAsync(systemPrompt, userPrompt);
|
||||
|
||||
var lines = result.Split('\n');
|
||||
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
using System.Threading.Tasks;
|
||||
using Mindforge.API.Models.Enums;
|
||||
|
||||
namespace Mindforge.API.Services.Interfaces
|
||||
{
|
||||
public interface IAgentService
|
||||
{
|
||||
Task<string> ProcessRequestAsync(LlmProvider provider, string systemPrompt, string userPrompt, string model);
|
||||
Task<string> ProcessRequestBatchAsync(LlmProvider provider, string systemPrompt, string userPrompt, string model);
|
||||
Task<string> ProcessRequestAsync(string systemPrompt, string userPrompt);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user