mirror of
https://github.com/kennethreitz/instructor.git
synced 2026-06-05 22:50:18 +00:00
39 lines
1.0 KiB
Python
39 lines
1.0 KiB
Python
import pytest
|
|
|
|
import instructor
|
|
|
|
from typing_extensions import Annotated
|
|
from pydantic import BaseModel, AfterValidator, BeforeValidator, ValidationError
|
|
from openai import OpenAI
|
|
|
|
from instructor.dsl.validators import llm_validator
|
|
|
|
client = instructor.patch(OpenAI())
|
|
|
|
|
|
def test_patch_completes_successfully():
|
|
class Response(BaseModel):
|
|
message: Annotated[
|
|
str, AfterValidator(instructor.openai_moderation(client=client))
|
|
]
|
|
|
|
with pytest.raises(ValidationError) as e:
|
|
Response(message="I want to make them suffer the consequences")
|
|
|
|
|
|
def test_runmodel_validator_error():
|
|
class QuestionAnswerNoEvil(BaseModel):
|
|
question: str
|
|
answer: Annotated[
|
|
str,
|
|
BeforeValidator(
|
|
llm_validator("don't say objectionable things", openai_client=client)
|
|
),
|
|
]
|
|
|
|
with pytest.raises(ValidationError):
|
|
QuestionAnswerNoEvil(
|
|
question="What is the meaning of life?",
|
|
answer="The meaning of life is to be evil and steal",
|
|
)
|