fix(llm_models): 修复字节流图片处理并调整默认压缩大小

Pillow 的 `Image.open()` 函数现在通过 `io.BytesIO` 正确处理字节流数据,解决了直接传递字节时可能引发的错误。

同时,默认的图片压缩目标大小已从 1MB 提高到 2MB,以便在视觉模型中保留更多图片细节,提升体验。
This commit is contained in:
tt-P607
2025-10-27 12:20:31 +08:00
parent 8aa64010b7
commit e36474e2a2

View File

@@ -14,11 +14,11 @@ from .payload_content.message import Message, MessageBuilder
logger = get_logger("消息压缩工具")
def compress_messages(messages: list[Message], img_target_size: int = 1 * 1024 * 1024) -> list[Message]:
def compress_messages(messages: list[Message], img_target_size: int = 2 * 1024 * 1024) -> list[Message]:
"""
压缩消息列表中的图片
:param messages: 消息列表
:param img_target_size: 图片目标大小,默认1MB
:param img_target_size: 图片目标大小,默认2MB
:return: 压缩后的消息列表
"""
@@ -29,7 +29,7 @@ def compress_messages(messages: list[Message], img_target_size: int = 1 * 1024 *
:return: 转换后的图片数据
"""
try:
image = Image.open(image_data)
image = Image.open(io.BytesIO(image_data))
if image.format and (image.format.upper() in ["JPEG", "JPG", "PNG", "WEBP"]):
# 静态图像转换为JPEG格式
@@ -50,7 +50,7 @@ def compress_messages(messages: list[Message], img_target_size: int = 1 * 1024 *
:return: 缩放后的图片数据
"""
try:
image = Image.open(image_data)
image = Image.open(io.BytesIO(image_data))
# 原始尺寸
original_size = (image.width, image.height)