using System; using xModels.Dtos; using System.Threading; using xAiModels.Models; using xAiModels.Models.Dtos; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Http; using System.Collections.Generic; namespace xAiApi.Interfaces { public interface IXAiServiceControllerBase { // #region Actions ... /// /// Ask Question and Get Response ... /// /// /// /// [HttpGet("AskText")] Task> AskText( [FromQuery] string question, CancellationToken cancellationToken = default ); /// /// Ask Question and Get Response Stream ... /// /// /// /// [HttpGet("AskTextStream")] Task AskTextStream( [FromQuery] string question, CancellationToken cancellationToken = default ); #endregion // #region Loaders ... /// /// Retrieve AI Projects ... /// /// /// /// [HttpGet("Projects")] Task>> LoadProjects( [FromQuery] bool includeDefaults = false, CancellationToken cancellationToken = default ); /// /// Retrieve Specified AI Project's Conversations ... /// /// /// /// [HttpGet("Projects/{projectId}/Conversations")] Task>> LoadConversations( [FromRoute] Guid projectId, CancellationToken cancellationToken = default ); /// /// Retrieve Specified AI Conversation's Messages ... /// /// /// /// [HttpGet("Conversations/{conversationId}/Messages")] Task>> LoadMessages( [FromRoute] Guid conversationId, CancellationToken cancellationToken = default ); #endregion // #region Queries ... /// /// Query Projects ... /// /// /// /// /// /// [HttpGet("Projects/Query")] Task>> QueryProjects( [FromQuery] XQuery query, CancellationToken cancellationToken = default ); /// /// Query Conversations ... /// /// /// /// /// [HttpGet("Projects/{projectId}/Conversations/Query")] Task>> QueryConversations( [FromRoute] Guid projectId, [FromQuery] XQuery query, CancellationToken cancellationToken = default ); /// /// Query Messages ... /// /// /// /// /// [HttpGet("Conversations/{conversationId}/Messages/Query")] Task>> QueryMessages( [FromRoute] Guid conversationId, [FromQuery] XQuery query, CancellationToken cancellationToken = default ); #endregion // #region Creators ... /// /// Create an AI Project ... /// /// /// /// [HttpPost("Projects")] Task> CreateProject( [FromBody] XAiProjectDto item, CancellationToken cancellationToken = default ); /// /// Create an AI Conversation ... /// /// /// /// /// [HttpPost("Projects/{projectId}/Conversations")] Task> CreateConversation( [FromRoute] Guid projectId, [FromBody] XAiConversationDto item, CancellationToken cancellationToken = default ); #endregion // #region Content Extraction ... /// /// Extract Files Content ... /// /// /// /// /// [HttpPost("ExtractContent")] [Consumes("multipart/form-data")] Task> ExtractContent( [FromForm] IFormFileCollection files, [FromForm] string extractors = null, CancellationToken cancellationToken = default ); #endregion // #region Data Actions ... /// /// Ask Question and Get Response ... /// /// /// /// [HttpPost("Ask")] Task> Ask( [FromBody] XAiResponseRequest request, CancellationToken cancellationToken = default ); /// /// Ask Question and Get Response Stream ... /// /// /// /// [HttpPost("AskStream")] Task AskStream( [FromBody] XAiResponseRequest request, CancellationToken cancellationToken = default ); /// /// Ask Question with Files and Get Response ... /// /// /// /// [HttpPost("AskWithFiles")] [Consumes("multipart/form-data")] Task> AskWithFiles( [FromForm] XAiResponseRequest request, [FromForm] IFormFileCollection files, CancellationToken cancellationToken = default ); #endregion } }