dramaling-vocab-learning/backend/DramaLing.Api/Services/AI/Gemini/GeminiService.cs

47 lines
1.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using DramaLing.Api.Models.DTOs;
using DramaLing.Api.Models.Entities;
using DramaLing.Api.Services.AI.Gemini;
namespace DramaLing.Api.Services;
public interface IGeminiService
{
Task<SentenceAnalysisData> AnalyzeSentenceAsync(string inputText, AnalysisOptions options);
Task<string> GenerateImageDescriptionAsync(Flashcard flashcard, GenerationOptionsDto options);
}
/// <summary>
/// Gemini 服務 Facade統一管理句子分析和圖片描述生成功能
/// </summary>
public class GeminiService : IGeminiService
{
private readonly ISentenceAnalyzer _sentenceAnalyzer;
private readonly IImageDescriptionGenerator _imageDescriptionGenerator;
private readonly ILogger<GeminiService> _logger;
public GeminiService(
ISentenceAnalyzer sentenceAnalyzer,
IImageDescriptionGenerator imageDescriptionGenerator,
ILogger<GeminiService> logger)
{
_sentenceAnalyzer = sentenceAnalyzer ?? throw new ArgumentNullException(nameof(sentenceAnalyzer));
_imageDescriptionGenerator = imageDescriptionGenerator ?? throw new ArgumentNullException(nameof(imageDescriptionGenerator));
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
_logger.LogInformation("GeminiService Facade initialized successfully");
}
public async Task<SentenceAnalysisData> AnalyzeSentenceAsync(string inputText, AnalysisOptions options)
{
return await _sentenceAnalyzer.AnalyzeSentenceAsync(inputText, options);
}
public async Task<string> GenerateImageDescriptionAsync(Flashcard flashcard, GenerationOptionsDto options)
{
return await _imageDescriptionGenerator.GenerateImageDescriptionAsync(flashcard, options);
}
}