using OASystem.API.OAMethodLib.TokenHubAI.Models;
namespace OASystem.API.OAMethodLib.TokenHubAI;
///
/// TokenHub AI 服务接口
///
public interface ITokenHubService
{
///
/// 发送聊天请求(非流式)
///
/// 请求参数
/// 取消令牌
/// 聊天响应
/// API 调用失败时抛出
Task ChatAsync(ChatRequest request, CancellationToken cancellationToken = default);
///
/// 发送聊天请求(流式)
///
/// 请求参数
/// 接收到片段时的回调
/// 取消令牌
/// API 调用失败时抛出
Task StreamChatAsync(ChatRequest request, Action onChunk, CancellationToken cancellationToken = default);
///
/// 发送聊天请求(非流式,带重试)
///
/// 请求参数
/// 最大重试次数
/// 取消令牌
/// 聊天响应
Task ChatWithRetryAsync(ChatRequest request, int maxRetries = 3, CancellationToken cancellationToken = default);
///
/// 获取可用模型列表
///
Task> GetAvailableModelsAsync(CancellationToken cancellationToken = default);
///
/// 设置超时时间
///
void SetTimeout(TimeSpan timeout);
///
/// 设置重试策略
///
void SetRetryPolicy(int maxRetries, TimeSpan? initialDelay = null, TimeSpan? maxDelay = null);
}