diff --git a/app/api/v1/chat.py b/app/api/v1/chat.py index fdcd8ba..693e534 100644 --- a/app/api/v1/chat.py +++ b/app/api/v1/chat.py @@ -625,6 +625,13 @@ def validate_request(request: ChatCompletionRequest): # video 验证 if model_info and model_info.is_video: config = request.video_config or VideoConfig() + _, image_urls = _extract_prompt_images(request.messages) + if len(image_urls) > 7: + raise ValidationException( + message="Too many image_url references for video. Maximum is 7.", + param="messages", + code="invalid_image_count", + ) effective_stream = ( request.stream if request.stream is not None else get_config("app.stream") ) diff --git a/app/services/grok/services/video.py b/app/services/grok/services/video.py index ea16c67..57961db 100644 --- a/app/services/grok/services/video.py +++ b/app/services/grok/services/video.py @@ -1092,6 +1092,17 @@ class VideoService: parent_post_id = (parent_post_id or "").strip() or None source_image_url = (source_image_url or "").strip() reference_items = [item for item in (reference_items or []) if isinstance(item, dict)] + if image_attachments and not reference_items: + reference_items = [ + { + "parent_post_id": "", + "image_url": str(image_url or "").strip(), + "source_image_url": str(image_url or "").strip(), + "mention_alias": f"Image {index}", + } + for index, image_url in enumerate(image_attachments, start=1) + if str(image_url or "").strip() + ] used_tokens: set[str] = set() for attempt in range(max_token_retries):