| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396 | using System.Text.Json.Serialization;namespace OASystem.API.OAMethodLib.DeepSeekAPI{    public class DeepSeekModels    {    }    /// <summary>    /// 基础信息    /// </summary>    public class DeepSeek    {        /// <summary>        /// ApiKey        /// </summary>        public string ApiKey { get; set; }        /// <summary>        /// BaseAddress        /// </summary>        public string BaseAddress { get; set; }    }    /// <summary>    /// 文件上传到DeepSeek API的请求参数    /// </summary>    public class DeepSeekFileUploadRequest    {        /// <summary>        /// 要上传的文件列表        /// </summary>        public List<IFormFile> Files { get; set; } = new List<IFormFile>();        /// <summary>        /// 用途描述(可选)        /// </summary>        public string Purpose { get; set; } = "assistants";        /// <summary>        /// 模型名称,默认为 deepseek-chat        /// </summary>        public string Model { get; set; } = "deepseek-chat";        /// <summary>        /// 是否等待文件处理完成        /// </summary>        public bool WaitForProcessing { get; set; } = true;    }    /// <summary>    /// 使用已上传文件提问的请求参数    /// </summary>    public class AskWithFilesRequest    {        /// <summary>        /// 已上传的文件ID列表        /// </summary>        public List<string> FileIds { get; set; } = new List<string>();        /// <summary>        /// 问题描述        /// </summary>        public string Question { get; set; }        /// <summary>        /// 模型名称        /// </summary>        public string Model { get; set; } = "deepseek-chat";        /// <summary>        /// 温度参数        /// </summary>        public float Temperature { get; set; } = 0.7f;        /// <summary>        /// 最大token数        /// </summary>        public int MaxTokens { get; set; } = 4000;    }    /// <summary>    /// DeepSeek 文件上传响应    /// </summary>    public class DeepSeekFileUploadResponse    {        /// <summary>        /// 文件ID        /// </summary>        [JsonPropertyName("id")]        public string Id { get; set; }        /// <summary>        /// 对象类型        /// </summary>        [JsonPropertyName("object")]        public string Object { get; set; }        /// <summary>        /// 文件大小(字节)        /// </summary>        [JsonPropertyName("bytes")]        public long Bytes { get; set; }        /// <summary>        /// 创建时间戳        /// </summary>        [JsonPropertyName("created_at")]        public long CreatedAt { get; set; }        /// <summary>        /// 文件名        /// </summary>        [JsonPropertyName("filename")]        public string Filename { get; set; }        /// <summary>        /// 文件用途        /// </summary>        [JsonPropertyName("purpose")]        public string Purpose { get; set; }        /// <summary>        /// 文件状态        /// </summary>        [JsonPropertyName("status")]        public string Status { get; set; }        /// <summary>        /// 状态详情        /// </summary>        [JsonPropertyName("status_details")]        public object StatusDetails { get; set; }    }    /// <summary>    /// 文件列表响应    /// </summary>    public class DeepSeekFileListResponse    {        /// <summary>        /// 对象类型        /// </summary>        [JsonPropertyName("object")]        public string Object { get; set; }        /// <summary>        /// 文件数据列表        /// </summary>        [JsonPropertyName("data")]        public List<DeepSeekFileUploadResponse> Data { get; set; }    }    /// <summary>    /// 使用文件进行聊天的请求    /// </summary>    public class DeepSeekChatWithFilesRequest    {        /// <summary>        /// 模型名称        /// </summary>        [JsonPropertyName("model")]        public string Model { get; set; }        /// <summary>        /// 消息列表        /// </summary>        [JsonPropertyName("messages")]        public List<FileMessage> Messages { get; set; }        /// <summary>        /// 温度参数        /// </summary>        [JsonPropertyName("temperature")]        public float Temperature { get; set; }        /// <summary>        /// 最大token数        /// </summary>        [JsonPropertyName("max_tokens")]        public int MaxTokens { get; set; }    }    /// <summary>    /// 包含文件引用的消息    /// </summary>    public class FileMessage    {        /// <summary>        /// 消息角色        /// </summary>        [JsonPropertyName("role")]        public string Role { get; set; }        /// <summary>        /// 消息内容        /// </summary>        [JsonPropertyName("content")]        public object Content { get; set; }    }    /// <summary>    /// 文件内容块    /// </summary>    public class FileContent    {        /// <summary>        /// 内容类型        /// </summary>        [JsonPropertyName("type")]        public string Type { get; set; } = "text";        /// <summary>        /// 文本内容        /// </summary>        [JsonPropertyName("text")]        public string Text { get; set; }    }    /// <summary>    /// API响应结果    /// </summary>    public class ApiResponse    {        /// <summary>        /// 是否成功        /// </summary>        public bool Success { get; set; }        /// <summary>        /// 响应消息        /// </summary>        public string Message { get; set; }        /// <summary>        /// 文件上传结果        /// </summary>        public List<FileUploadResult> FileResults { get; set; } = new List<FileUploadResult>();        /// <summary>        /// 回答内容(如果包含提问)        /// </summary>        public string Answer { get; set; }        /// <summary>        /// 使用的token数量        /// </summary>        public int TokensUsed { get; set; }    }    /// <summary>    /// 文件上传结果    /// </summary>    public class FileUploadResult    {        /// <summary>        /// 文件名        /// </summary>        public string FileName { get; set; }        /// <summary>        /// 文件ID        /// </summary>        public string FileId { get; set; }        /// <summary>        /// 文件大小        /// </summary>        public long FileSize { get; set; }        /// <summary>        /// 是否上传成功        /// </summary>        public bool Success { get; set; }        /// <summary>        /// 状态消息        /// </summary>        public string Message { get; set; }        /// <summary>        /// 文件状态        /// </summary>        public string Status { get; set; }    }    /// <summary>    /// 文件删除请求    /// </summary>    public class DeleteFileRequest    {        /// <summary>        /// 要删除的文件ID        /// </summary>        public string FileId { get; set; }    }    /// <summary>    /// 项目文件读取请求    /// </summary>    public class ProjectFileReadRequest    {        /// <summary>        /// 要读取的文件相对路径列表(相对于项目根目录)        /// </summary>        public List<string> FilePaths { get; set; } = new List<string>();        /// <summary>        /// 是否递归读取子目录        /// </summary>        public bool Recursive { get; set; } = false;        /// <summary>        /// 文件搜索模式(例如:*.cs)        /// </summary>        public string SearchPattern { get; set; } = "*.cs";        /// <summary>        /// 文件用途        /// </summary>        public string Purpose { get; set; } = "assistants";    }    /// <summary>    /// 项目文件信息    /// </summary>    public class ProjectFileInfo    {        /// <summary>        /// 文件相对路径        /// </summary>        public string RelativePath { get; set; }        /// <summary>        /// 文件完整路径        /// </summary>        public string FullPath { get; set; }        /// <summary>        /// 文件大小(字节)        /// </summary>        public long FileSize { get; set; }        /// <summary>        /// 最后修改时间        /// </summary>        public DateTime LastModified { get; set; }        /// <summary>        /// 是否成功读取        /// </summary>        public bool Success { get; set; }        /// <summary>        /// 错误信息(如果有)        /// </summary>        public string ErrorMessage { get; set; }        /// <summary>        /// 转换后的IFormFile(如果成功)        /// </summary>        public IFormFile FormFile { get; set; }    }    /// <summary>    /// 项目文件读取响应    /// </summary>    public class ProjectFileReadResponse    {        /// <summary>        /// 是否成功        /// </summary>        public bool Success { get; set; }        /// <summary>        /// 响应消息        /// </summary>        public string Message { get; set; }        /// <summary>        /// 读取的文件信息列表        /// </summary>        public List<ProjectFileInfo> FileInfos { get; set; } = new List<ProjectFileInfo>();        /// <summary>        /// 成功读取的文件数量        /// </summary>        public int SuccessCount => FileInfos.Count(f => f.Success);        /// <summary>        /// 失败的文件数量        /// </summary>        public int FailureCount => FileInfos.Count(f => !f.Success);    }}
 |