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