using System.Text.Json.Serialization; namespace Yi.Framework.AiHub.Domain.Shared.Dtos.OpenAi; /// /// 发出的消息内容,包含图文,一般是一文一图,一文多图两种情况,请使用CreeateXXX系列方法构建内容 /// public class ThorChatMessageContent { public ThorChatMessageContent() { } /// /// 消息内容类型,只能使用 定义的值赋值,如:ThorMessageContentTypeConst.Text /// [JsonPropertyName("type")] public string Type { get; set; } /// /// 消息内容类型为 text 时候的赋值,如:图片上描述了什么 /// [JsonPropertyName("text")] public string? Text { get; set; } /// /// 消息内容类型为 image_url 时候的赋值 /// [JsonPropertyName("image_url")] public ThorVisionImageUrl? ImageUrl { get; set; } /// /// 音频消息内容,包含音频数据和格式信息。 /// [JsonPropertyName("input_audio")] public ThorChatMessageAudioContent? InputAudio { get; set; } /// /// 创建文本类消息 /// 文本内容 /// public static ThorChatMessageContent CreateTextContent(string text) { return new() { Type = ThorMessageContentTypeConst.Text, Text = text }; } /// /// 创建图片类消息,图片url形式 /// 图片 url /// 指定图像的详细程度。通过控制 detail 参数(该参数具有三个选项: low 、 high 或 auto ),您 /// 可以控制模型的处理方式图像并生成其文本理解。默认情况下,模型将使用 auto 设置, /// 该设置将查看图像输入大小并决定是否应使用 low 或 high 设置。 /// public static ThorChatMessageContent CreateImageUrlContent(string imageUrl, string? detail = "auto") { return new() { Type = ThorMessageContentTypeConst.ImageUrl, ImageUrl = new() { Url = imageUrl, Detail = detail } }; } /// /// 创建图片类消息,字节流转base64字符串形式 /// The image binary data as byte array /// 图片类型,如 png,jpg /// 指定图像的详细程度。 /// public static ThorChatMessageContent CreateImageBinaryContent( byte[] binaryImage, string imageType, string? detail = "auto" ) { return new() { Type = ThorMessageContentTypeConst.ImageUrl, ImageUrl = new() { Url = string.Format( "data:image/{0};base64,{1}", imageType, Convert.ToBase64String(binaryImage) ), Detail = detail } }; } }