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);
- }
- }
|