namespace OASystem.API.OAMethodLib.TokenHubAI.Models; /// /// TokenHub AI 聊天响应 /// public class ChatResponse { // ============ 响应标识 ============ /// /// 响应 ID /// public string? Id { get; set; } /// /// 使用的模型 /// public string? Model { get; set; } /// /// 对象类型 /// public string? Object { get; set; } /// /// 创建时间戳 /// public long? Created { get; set; } // ============ 响应内容 ============ /// /// 回复内容 /// public string? Content { get; set; } /// /// 完整的选择列表 /// public List? Choices { get; set; } /// /// Token 使用统计 /// public TokenUsage? Usage { get; set; } // ============ 工具调用 ============ /// /// 工具调用列表(Function Calling) /// public List? ToolCalls { get; set; } // ============ 状态信息 ============ /// /// 是否成功 /// public bool IsSuccess { get; set; } /// /// 错误信息(如有) /// public string? ErrorMessage { get; set; } /// /// 完成原因 /// /// /// - stop:正常结束 /// - length:达到最大长度 /// - content_filter:内容被过滤 /// - tool_calls:工具调用 /// public string? FinishReason { get; set; } /// /// 原始响应 JSON(调试用) /// public string? RawJson { get; set; } // ============ 工厂方法 ============ /// /// 创建成功响应 /// public static ChatResponse Success(string content, string? model = null) { return new ChatResponse { IsSuccess = true, Content = content, Model = model, FinishReason = "stop" }; } /// /// 创建失败响应 /// public static ChatResponse Failure(string errorMessage) { return new ChatResponse { IsSuccess = false, ErrorMessage = errorMessage }; } } /// /// 选择项 /// public class Choice { /// /// 索引 /// public int Index { get; set; } /// /// 消息 /// public ChatMessage? Message { get; set; } /// /// 增量消息(流式) /// public ChatMessage? Delta { get; set; } /// /// 完成原因 /// public string? FinishReason { get; set; } /// /// 日志概率 /// public object? LogProbs { get; set; } } /// /// Token 使用统计 /// public class TokenUsage { /// /// 输入 Token 数 /// public int PromptTokens { get; set; } /// /// 输出 Token 数 /// public int CompletionTokens { get; set; } /// /// 总 Token 数 /// public int TotalTokens { get; set; } /// /// 获取使用详情 /// public override string ToString() { return $"输入: {PromptTokens}, 输出: {CompletionTokens}, 总计: {TotalTokens}"; } }