feat: add multi-image vision analysis
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user