using System; using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using xAiApi.Interfaces; using xCommons.Configurations; using xCommons.Controllers; using xCommons.Providers; namespace xAiApi.Controllers { [Authorize] [Route ("[controller]")] public abstract class XAiServiceControllerBase : XBaseController, IXAiServiceControllerBase where TAiService : IXAiServiceBase { private readonly TAiService aiService; protected XAiServiceControllerBase( ILogger logger, TAiService aiService, XAppConfiguration appConfiguration, XValidationProvider validationProvider ) : base( logger, appConfiguration, validationProvider ) { this.aiService = aiService; } /// /// Ask Question and Get Response ... /// /// /// /// [AllowAnonymous] [HttpGet("Ask")] public virtual async Task> Ask( [FromQuery] string question, CancellationToken cancellationToken = default ) { // try { // // Validate ... ValidationProvider.NotEmpty(question); // var result = await aiService.AskAsync( prompt: question, cancellationToken: cancellationToken ); // return Ok(result); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } } }