97e91a83f3
Ruff / Ruff (push) Has been cancelled
Test / Core Tests (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.10) (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.11) (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.12) (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.13) (push) Has been cancelled
Test / Offline Coverage Tests (Python 3.9) (push) Has been cancelled
Test / Full Coverage (Python 3.11) (push) Has been cancelled
Test / Core Provider Tests (OpenAI) (push) Has been cancelled
Test / Core Provider Tests (Anthropic) (push) Has been cancelled
Test / Core Provider Tests (Google) (push) Has been cancelled
Test / Core Provider Tests (Other) (push) Has been cancelled
Test / Anthropic Tests (push) Has been cancelled
Test / Gemini Tests (push) Has been cancelled
Test / Google GenAI Tests (push) Has been cancelled
Test / Vertex AI Tests (push) Has been cancelled
Test / OpenAI Tests (push) Has been cancelled
Test / Writer Tests (push) Has been cancelled
Test / Auto Client Tests (push) Has been cancelled
ty / type-check (push) Has been cancelled
32 lines
1012 B
Python
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
|
|
"""
|