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
43 lines
1.0 KiB
Python
43 lines
1.0 KiB
Python
import pytest
|
|
from itertools import product
|
|
from pydantic import BaseModel
|
|
from writerai import Writer
|
|
import instructor
|
|
from ..util import models, modes
|
|
|
|
|
|
class UserDetails(BaseModel):
|
|
first_name: str
|
|
age: int
|
|
|
|
|
|
test_data = [
|
|
("Jason is 10", "Jason", 10),
|
|
("Alice is 25", "Alice", 25),
|
|
("Bob is 35", "Bob", 35),
|
|
]
|
|
|
|
|
|
@pytest.mark.parametrize("model, data, mode", product(models, test_data, modes))
|
|
def test_writer_extract(
|
|
model: str, data: list[tuple[str, str, int]], mode: instructor.Mode
|
|
):
|
|
client = instructor.from_writer(client=Writer(), mode=mode)
|
|
|
|
sample_data, expected_name, expected_age = data
|
|
|
|
response = client.chat.completions.create(
|
|
model=model,
|
|
response_model=UserDetails,
|
|
messages=[
|
|
{"role": "user", "content": sample_data},
|
|
],
|
|
)
|
|
|
|
assert response.first_name == expected_name, (
|
|
f"Expected name {expected_name}, got {response.first_name}"
|
|
)
|
|
assert response.age == expected_age, (
|
|
f"Expected age {expected_age}, got {response.age}"
|
|
)
|