feat: add multi-image vision analysis

This commit is contained in:
QiuSW
2026-07-16 14:13:19 +08:00
parent 0ea65d4df4
commit 5325eacdfe
29 changed files with 1013 additions and 51 deletions
+32
View File
@@ -50,6 +50,38 @@ class GenerateImageRequestSerializer(serializers.Serializer):
parameters = serializers.DictField(required=False, default=dict)
class VisionImageInputSerializer(serializers.Serializer):
image_url = serializers.URLField(required=False, allow_blank=True)
image_base64 = serializers.CharField(required=False, allow_blank=True)
def validate(self, attrs):
has_url = bool(str(attrs.get("image_url") or "").strip())
has_base64 = bool(str(attrs.get("image_base64") or "").strip())
if has_url == has_base64:
raise serializers.ValidationError(
"每张图片必须且只能提供 image_url 或 image_base64。"
)
return attrs
class AnalyzeImagesRequestSerializer(serializers.Serializer):
prompt = serializers.CharField(trim_whitespace=True, allow_blank=False)
model = serializers.CharField(
required=False,
allow_blank=True,
trim_whitespace=True,
max_length=64,
)
images = VisionImageInputSerializer(many=True, allow_empty=False)
parameters = serializers.DictField(required=False, default=dict)
def validate_images(self, value):
max_images = max(1, int(settings.VISION_MAX_IMAGES))
if len(value) > max_images:
raise serializers.ValidationError(f"单次最多上传 {max_images} 张图片。")
return value
class RechargeCreateRequestSerializer(serializers.Serializer):
amount = serializers.DecimalField(
max_digits=12,