mirror of
https://github.com/kennethreitz/instructor.git
synced 2026-06-05 22:50:18 +00:00
Add multiple modalities: tools, functions, json_mode (#218)
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
This commit is contained in:
@@ -1,17 +1,38 @@
|
||||
import pytest
|
||||
|
||||
import instructor
|
||||
import instructor
|
||||
|
||||
from typing_extensions import Annotated
|
||||
from pydantic import BaseModel, AfterValidator, ValidationError
|
||||
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))]
|
||||
|
||||
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")
|
||||
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",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user