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