Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,8 @@ URLs and base64 work; raw `bytes` do **not** (must be base64-encoded — this SD
## Good to know

- Interfaze implements `chat.completions` and `models`; other OpenAI endpoints are not exposed.
- `temperature` ≤ 1, `max_tokens` ≤ 32000, `top_p` ≤ 1 (above → 400). Use `max_tokens` (not
`max_completion_tokens`) to bound output.
- `temperature` ≤ 1, `max_tokens` ≤ 32000, `top_p` ≤ 1 (above → 400). Both `max_tokens` and
`max_completion_tokens` bound output (`max_tokens` wins if both are set).
- `n`, `seed`, `stop`, penalties, `logprobs`, `tool_choice`, `top_k` are ignored by Interfaze.
- The underlying OpenAI client is available at `interfaze.openai`.

Expand Down
41 changes: 41 additions & 0 deletions tests/test_models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
from __future__ import annotations

import httpx
import pytest
import respx
from openai import NotFoundError

from interfaze import Interfaze

MODELS_URL = "https://api.interfaze.ai/v1/models"
MODEL = {"id": "interfaze-beta", "object": "model", "owned_by": "interfaze", "name": "Interfaze Beta"}
MODELS_LIST = {"object": "list", "data": [MODEL]}
NOT_FOUND = {
"error": {
"message": "The model 'nope' does not exist",
"type": "invalid_request_error",
"code": "model_not_found",
}
}


@respx.mock
def test_models_list():
respx.get(MODELS_URL).mock(return_value=httpx.Response(200, json=MODELS_LIST))
page = Interfaze(api_key="t").models.list()
assert [m.id for m in page] == ["interfaze-beta"]
assert page.data[0].owned_by == "interfaze"


@respx.mock
def test_models_retrieve():
respx.get(f"{MODELS_URL}/interfaze-beta").mock(return_value=httpx.Response(200, json=MODEL))
m = Interfaze(api_key="t").models.retrieve("interfaze-beta")
assert m.id == "interfaze-beta" and m.owned_by == "interfaze"


@respx.mock
def test_models_retrieve_not_found():
respx.get(f"{MODELS_URL}/nope").mock(return_value=httpx.Response(404, json=NOT_FOUND))
with pytest.raises(NotFoundError):
Interfaze(api_key="t").models.retrieve("nope")