This commit is contained in:
2026-09-28 16:35:04 +03:30
parent 7ddf4d90c4
commit 767479e80d
10 changed files with 852 additions and 39 deletions
+63
View File
@@ -2,8 +2,10 @@ using System;
using System.Net.Http;
using System.Threading;
using xAiModels.Models;
using xAiModels.Models.Dtos;
using System.Threading.Tasks;
using Microsoft.Extensions.AI;
using Microsoft.AspNetCore.Http;
using System.Collections.Generic;
namespace xAiApi.Interfaces
@@ -23,6 +25,8 @@ namespace xAiApi.Interfaces
/// </summary>
XAiModelDescriptor Descriptor { get; }
//
#region Actions ...
/// <summary>
/// Base Method for Communicate with LLM ...
/// </summary>
@@ -79,5 +83,64 @@ namespace xAiApi.Interfaces
ChatMessage message = null,
bool forceMessage = true
);
#endregion
//
#region Data Provider Based Actions ...
/// <summary>
/// Load AI Projects ...
/// </summary>
/// <param name="ownerId"></param>
/// <param name="connectionId"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
Task<IEnumerable<XAiProjectDto>> LoadProjects(
string ownerId,
string connectionId = null,
CancellationToken cancellationToken = default
);
/// <summary>
/// Ask a Question as Prompt and Retrieve Response ...
/// </summary>
/// <param name="prompt"></param>
/// <param name="ownerId"></param>
/// <param name="projectId"></param>
/// <param name="conversationId"></param>
/// <param name="connectionId"></param>
/// <param name="files"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
Task<XAiMessageDto> AskAsync(
string prompt,
string ownerId,
Guid projectId,
Guid conversationId,
string connectionId = null,
IFormFileCollection files = null,
CancellationToken cancellationToken = default
);
/// <summary>
/// Ask a Question as Prompt and Retrieve Response as Async Enumerable ...
/// </summary>
/// <param name="prompt"></param>
/// <param name="ownerId"></param>
/// <param name="projectId"></param>
/// <param name="conversationId"></param>
/// <param name="connectionId"></param>
/// <param name="files"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
IAsyncEnumerable<XAiResonseMessage> AskAsEnumerable(
string prompt,
string ownerId,
Guid projectId,
Guid conversationId,
string connectionId = null,
IFormFileCollection files = null,
CancellationToken cancellationToken = default
);
#endregion
}
}
+44 -1
View File
@@ -1,11 +1,16 @@
using System.Threading;
using xAiModels.Models;
using xAiModels.Models.Dtos;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
namespace xAiApi.Interfaces
{
public interface IXAiServiceControllerBase
{
//
#region Actions ...
/// <summary>
/// Ask Question and Get Response ...
/// </summary>
@@ -28,6 +33,44 @@ namespace xAiApi.Interfaces
Task AskTextStream(
[FromQuery] string question,
CancellationToken cancellationToken = default
);
);
#endregion
//
#region Data Provided Actions ...
/// <summary>
/// Load AI Projects ...
/// </summary>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpGet("LoadProjects")]
Task<ActionResult<IEnumerable<XAiProjectDto>>> LoadProjects(
CancellationToken cancellationToken = default
);
/// <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
);
#endregion
}
}