using System.Reflection; using System.Text.Json.Serialization; namespace Yi.Framework.AiHub.Application.Contracts.Dtos.Chat; public class AgentResultOutput { /// /// 类型 /// [JsonIgnore] public AgentResultTypeEnum TypeEnum { get; set; } /// /// 类型 /// public string Type => TypeEnum.GetJsonName(); /// /// 内容载体 /// public object Content { get; set; } } public enum AgentResultTypeEnum { /// /// 文本内容 /// [JsonPropertyName("text")] Text, /// /// 工具调用中 /// [JsonPropertyName("toolCalling")] ToolCalling, /// /// 工具调用完成 /// [JsonPropertyName("toolCalled")] ToolCalled, /// /// 用量 /// [JsonPropertyName("usage")] Usage, /// /// 工具调用用量 /// [JsonPropertyName("toolCallUsage")] ToolCallUsage } public static class AgentResultTypeEnumExtensions { public static string GetJsonName(this AgentResultTypeEnum value) { var member = typeof(AgentResultTypeEnum).GetMember(value.ToString()).FirstOrDefault(); var attr = member?.GetCustomAttribute(); return attr?.Name ?? value.ToString(); } }