Files
Jason Liu 1674045a68 Blog post: Validation is Validation (#121)
Co-authored-by: Rémi Louf <remilouf@protonmail.com>
Co-authored-by: Ivan Leo <ivanleomk@gmail.com>
2023-10-25 13:55:08 -04:00

32 lines
1012 B
Python

from pydantic import BaseModel, ValidationError, field_validator, ValidationInfo
class AnswerWithCitation(BaseModel):
answer: str
citation: str
@field_validator("citation")
@classmethod
def remove_stopwords(cls, v: str, info: ValidationInfo):
context = info.context
if context:
text_chunks = context.get("text_chunk")
if v not in text_chunks:
raise ValueError(f"Citation `{v}` not found in text chunks")
return v
try:
AnswerWithCitation.model_validate(
{"answer": "Jason is a cool guy", "citation": "Jason is cool"},
context={"text_chunk": "Jason is just a guy"},
)
except ValidationError as e:
print(e)
"""
1 validation error for AnswerWithCitation
citation
Value error, Citation `Jason is cool`` not found in text chunks [type=value_error, input_value='Jason is cool', input_type=str]
For further information visit https://errors.pydantic.dev/2.4/v/value_error
"""