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