instructor
31 строка · 1012.0 Байт
1from pydantic import BaseModel, ValidationError, field_validator, ValidationInfo2
3
4class AnswerWithCitation(BaseModel):5answer: str6citation: str7
8@field_validator("citation")9@classmethod10def remove_stopwords(cls, v: str, info: ValidationInfo):11context = info.context12if context:13text_chunks = context.get("text_chunk")14if v not in text_chunks:15raise ValueError(f"Citation `{v}` not found in text chunks")16return v17
18
19try:20AnswerWithCitation.model_validate(21{"answer": "Jason is a cool guy", "citation": "Jason is cool"},22context={"text_chunk": "Jason is just a guy"},23)24except ValidationError as e:25print(e)26"""271 validation error for AnswerWithCitation
28citation
29Value error, Citation `Jason is cool`` not found in text chunks [type=value_error, input_value='Jason is cool', input_type=str]
30For further information visit https://errors.pydantic.dev/2.4/v/value_error
31"""
32