123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- namespace OASystem.API.OAMethodLib.DeepSeekAPI
- {
- /// <summary>
- /// DeepSeek API 服务接口
- /// </summary>
- public interface IDeepSeekService
- {
- /// <summary>
- /// 测试API连通性
- /// </summary>
- /// <returns></returns>
- Task<bool> TestApiConnectivityAsync();
- /// <summary>
- /// 检查可用端点
- /// </summary>
- /// <returns></returns>
- Task<List<string>> DiscoverAvailableEndpointsAsync();
- /// <summary>
- /// 上传文件到DeepSeek API
- /// </summary>
- /// <param name="file">要上传的文件</param>
- /// <param name="purpose">文件用途</param>
- /// <returns>文件上传响应</returns>
- Task<DeepSeekFileUploadResponse> UploadFileAsync(IFormFile file, string purpose = "assistants");
- /// <summary>
- /// 批量上传文件
- /// </summary>
- /// <param name="files">文件列表</param>
- /// <param name="purpose">文件用途</param>
- /// <returns>上传结果列表</returns>
- Task<List<FileUploadResult>> UploadFilesAsync(List<IFormFile> files, string purpose = "assistants");
- /// <summary>
- /// 获取文件列表
- /// </summary>
- /// <returns>文件列表响应</returns>
- Task<DeepSeekFileListResponse> ListFilesAsync();
- /// <summary>
- /// 获取文件信息
- /// </summary>
- /// <param name="fileId">文件ID</param>
- /// <returns>文件信息</returns>
- Task<DeepSeekFileUploadResponse> GetFileInfoAsync(string fileId);
- /// <summary>
- /// 删除文件
- /// </summary>
- /// <param name="fileId">文件ID</param>
- /// <returns>是否删除成功</returns>
- Task<bool> DeleteFileAsync(string fileId);
- /// <summary>
- /// 使用已上传的文件进行聊天
- /// </summary>
- /// <param name="fileIds">文件ID列表</param>
- /// <param name="question">问题</param>
- /// <param name="model">模型名称</param>
- /// <param name="temperature">温度参数</param>
- /// <param name="maxTokens">最大token数</param>
- /// <returns>聊天响应</returns>
- Task<ApiResponse> ChatWithFilesAsync(List<string> fileIds, string question, string model = "deepseek-chat", float temperature = 0.7f, int maxTokens = 4000);
- /// <summary>
- /// 等待文件处理完成
- /// </summary>
- /// <param name="fileId">文件ID</param>
- /// <param name="timeoutSeconds">超时时间(秒)</param>
- /// <returns>处理后的文件状态</returns>
- Task<DeepSeekFileUploadResponse> WaitForFileProcessingAsync(string fileId, int timeoutSeconds = 60);
- #region 本地项目相关
- /// <summary>
- /// 读取项目内的指定文件并转换为IFormFile
- /// </summary>
- /// <param name="relativePaths">文件相对路径列表</param>
- /// <returns>文件读取响应</returns>
- Task<ProjectFileReadResponse> ReadProjectFilesAsync(List<string> relativePaths);
- /// <summary>
- /// 读取项目内指定目录的文件
- /// </summary>
- /// <param name="directoryPath">目录相对路径</param>
- /// <param name="searchPattern">文件搜索模式</param>
- /// <param name="recursive">是否递归搜索</param>
- /// <returns>文件读取响应</returns>
- Task<ProjectFileReadResponse> ReadProjectDirectoryAsync(string directoryPath, string searchPattern = "*.cs", bool recursive = false);
- /// <summary>
- /// 获取项目根目录路径
- /// </summary>
- /// <returns>项目根目录完整路径</returns>
- string GetProjectRootPath();
- /// <summary>
- /// 检查文件是否存在
- /// </summary>
- /// <param name="relativePath">文件相对路径</param>
- /// <returns>是否存在</returns>
- bool FileExists(string relativePath);
- /// <summary>
- /// 将物理文件转换为IFormFile
- /// </summary>
- /// <param name="filePath">文件完整路径</param>
- /// <returns>IFormFile实例</returns>
- Task<IFormFile> ConvertToFormFileAsync(string filePath);
- /// <summary>
- /// 读取特定的签证申请表单文件
- /// </summary>
- /// <param name="fileName"></param>
- /// <returns></returns>
- Task<ProjectFileReadResponse> ReadVisaFormFileAsync(string fileName);
- /// <summary>
- /// 读取OASystem项目中的所有CS文件
- /// </summary>
- Task<ProjectFileReadResponse> ReadOASystemFilesAsync(string searchPattern = "*.cs", bool recursive = true);
- /// <summary>
- /// 读取指定域模型中的CS文件
- /// </summary>
- Task<ProjectFileReadResponse> ReadDomainViewModelsAsync(string searchPattern = "*.cs", bool recursive = true);
- /// <summary>
- /// 读取签证表单相关的所有CS文件
- /// </summary>
- Task<ProjectFileReadResponse> ReadVisaFormFilesAsync(string searchPattern = "*.cs", bool recursive = true);
- #endregion
- }
- }
|