diff --git a/src/models/requests.py b/src/models/requests.py index 5639493b..9db27d4d 100644 --- a/src/models/requests.py +++ b/src/models/requests.py @@ -2,7 +2,7 @@ from typing import Optional, Self -from pydantic import BaseModel, model_validator, field_validator +from pydantic import BaseModel, model_validator, field_validator, Field from llama_stack_client.types.agents.turn_create_params import Document from utils import suid @@ -159,7 +159,13 @@ class FeedbackRequest(BaseModel): user_question: str llm_response: str sentiment: Optional[int] = None - user_feedback: Optional[str] = None + # Optional user feedback limited to 1–4096 characters to prevent abuse. + user_feedback: Optional[str] = Field( + default=None, + max_length=4096, + description="Feedback on the LLM response.", + examples=["I'm not satisfied with the response because it is too vague."], + ) # provides examples for /docs endpoint model_config = { diff --git a/tests/unit/models/test_requests.py b/tests/unit/models/test_requests.py index 7da1cc3b..3f97329b 100644 --- a/tests/unit/models/test_requests.py +++ b/tests/unit/models/test_requests.py @@ -1,5 +1,5 @@ import pytest - +from pydantic import ValidationError from models.requests import QueryRequest, Attachment, FeedbackRequest @@ -176,3 +176,15 @@ def test_check_sentiment_or_user_feedback(self) -> None: sentiment=None, user_feedback=None, ) + + def test_feedback_too_long(self) -> None: + """Test that user feedback is limited to 4096 characters.""" + with pytest.raises( + ValidationError, match="should have at most 4096 characters" + ): + FeedbackRequest( + conversation_id="12345678-abcd-0000-0123-456789abcdef", + user_question="What is this?", + llm_response="Some response", + user_feedback="a" * 4097, + )