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