IDeepSeekService.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. namespace OASystem.API.OAMethodLib.DeepSeekAPI
  2. {
  3. /// <summary>
  4. /// DeepSeek API 服务接口
  5. /// </summary>
  6. public interface IDeepSeekService
  7. {
  8. /// <summary>
  9. /// 测试API连通性
  10. /// </summary>
  11. /// <returns></returns>
  12. Task<bool> TestApiConnectivityAsync();
  13. /// <summary>
  14. /// 检查可用端点
  15. /// </summary>
  16. /// <returns></returns>
  17. Task<List<string>> DiscoverAvailableEndpointsAsync();
  18. /// <summary>
  19. /// 上传文件到DeepSeek API
  20. /// </summary>
  21. /// <param name="file">要上传的文件</param>
  22. /// <param name="purpose">文件用途</param>
  23. /// <returns>文件上传响应</returns>
  24. Task<DeepSeekFileUploadResponse> UploadFileAsync(IFormFile file, string purpose = "assistants");
  25. /// <summary>
  26. /// 批量上传文件
  27. /// </summary>
  28. /// <param name="files">文件列表</param>
  29. /// <param name="purpose">文件用途</param>
  30. /// <returns>上传结果列表</returns>
  31. Task<List<FileUploadResult>> UploadFilesAsync(List<IFormFile> files, string purpose = "assistants");
  32. /// <summary>
  33. /// 获取文件列表
  34. /// </summary>
  35. /// <returns>文件列表响应</returns>
  36. Task<DeepSeekFileListResponse> ListFilesAsync();
  37. /// <summary>
  38. /// 获取文件信息
  39. /// </summary>
  40. /// <param name="fileId">文件ID</param>
  41. /// <returns>文件信息</returns>
  42. Task<DeepSeekFileUploadResponse> GetFileInfoAsync(string fileId);
  43. /// <summary>
  44. /// 删除文件
  45. /// </summary>
  46. /// <param name="fileId">文件ID</param>
  47. /// <returns>是否删除成功</returns>
  48. Task<bool> DeleteFileAsync(string fileId);
  49. /// <summary>
  50. /// 使用已上传的文件进行聊天
  51. /// </summary>
  52. /// <param name="fileIds">文件ID列表</param>
  53. /// <param name="question">问题</param>
  54. /// <param name="model">模型名称</param>
  55. /// <param name="temperature">温度参数</param>
  56. /// <param name="maxTokens">最大token数</param>
  57. /// <returns>聊天响应</returns>
  58. Task<ApiResponse> ChatWithFilesAsync(List<string> fileIds, string question, string model = "deepseek-chat", float temperature = 0.7f, int maxTokens = 4000);
  59. /// <summary>
  60. /// 等待文件处理完成
  61. /// </summary>
  62. /// <param name="fileId">文件ID</param>
  63. /// <param name="timeoutSeconds">超时时间(秒)</param>
  64. /// <returns>处理后的文件状态</returns>
  65. Task<DeepSeekFileUploadResponse> WaitForFileProcessingAsync(string fileId, int timeoutSeconds = 60);
  66. #region 本地项目相关
  67. /// <summary>
  68. /// 读取项目内的指定文件并转换为IFormFile
  69. /// </summary>
  70. /// <param name="relativePaths">文件相对路径列表</param>
  71. /// <returns>文件读取响应</returns>
  72. Task<ProjectFileReadResponse> ReadProjectFilesAsync(List<string> relativePaths);
  73. /// <summary>
  74. /// 读取项目内指定目录的文件
  75. /// </summary>
  76. /// <param name="directoryPath">目录相对路径</param>
  77. /// <param name="searchPattern">文件搜索模式</param>
  78. /// <param name="recursive">是否递归搜索</param>
  79. /// <returns>文件读取响应</returns>
  80. Task<ProjectFileReadResponse> ReadProjectDirectoryAsync(string directoryPath, string searchPattern = "*.cs", bool recursive = false);
  81. /// <summary>
  82. /// 获取项目根目录路径
  83. /// </summary>
  84. /// <returns>项目根目录完整路径</returns>
  85. string GetProjectRootPath();
  86. /// <summary>
  87. /// 检查文件是否存在
  88. /// </summary>
  89. /// <param name="relativePath">文件相对路径</param>
  90. /// <returns>是否存在</returns>
  91. bool FileExists(string relativePath);
  92. /// <summary>
  93. /// 将物理文件转换为IFormFile
  94. /// </summary>
  95. /// <param name="filePath">文件完整路径</param>
  96. /// <returns>IFormFile实例</returns>
  97. Task<IFormFile> ConvertToFormFileAsync(string filePath);
  98. /// <summary>
  99. /// 读取特定的签证申请表单文件
  100. /// </summary>
  101. /// <param name="fileName"></param>
  102. /// <returns></returns>
  103. Task<ProjectFileReadResponse> ReadVisaFormFileAsync(string fileName);
  104. /// <summary>
  105. /// 读取OASystem项目中的所有CS文件
  106. /// </summary>
  107. Task<ProjectFileReadResponse> ReadOASystemFilesAsync(string searchPattern = "*.cs", bool recursive = true);
  108. /// <summary>
  109. /// 读取指定域模型中的CS文件
  110. /// </summary>
  111. Task<ProjectFileReadResponse> ReadDomainViewModelsAsync(string searchPattern = "*.cs", bool recursive = true);
  112. /// <summary>
  113. /// 读取签证表单相关的所有CS文件
  114. /// </summary>
  115. Task<ProjectFileReadResponse> ReadVisaFormFilesAsync(string searchPattern = "*.cs", bool recursive = true);
  116. #endregion
  117. }
  118. }