Files
AI/참고/instructor-main/tests/llm/test_genai/test_reask.py
2026-05-12 19:40:31 +09:00

37 lines
1.1 KiB
Python

import os
import pytest
from pydantic import BaseModel, field_validator
import instructor
@pytest.mark.parametrize("mode", [instructor.Mode.GENAI_TOOLS])
def test_genai_tools_validation_retry_preserves_model_content(mode):
"""Ensure GENAI_TOOLS validation retries are wired end-to-end."""
from instructor.core.exceptions import InstructorRetryException
model = os.getenv("GOOGLE_GENAI_MODEL", "gemini-2.0-flash")
class AlwaysInvalid(BaseModel):
value: int
@field_validator("value")
@classmethod
def always_fail(cls, v: int) -> int: # noqa: ARG003
raise ValueError("force retry for reask validation coverage")
client = instructor.from_provider(f"google/{model}", mode=mode)
with pytest.raises(InstructorRetryException) as exc_info:
client.chat.completions.create(
model=model,
messages=[
{
"role": "user",
"content": "Return any integer value",
}
],
response_model=AlwaysInvalid,
max_retries=2,
)
assert exc_info.value.n_attempts == 2