SPB Git forge

spb/doc-api

Public
2commits 1branches 0releases
15.7 MBsize
maindefault branch
13 days agolast push
Python 88.3% TypeScript 7.6% Shell 4.1%
2.4 KB · 50 lines python
Raw Blame History
1"""Cheap smoke tests for POST /v1/embeddings (always run; total cost < $0.00001)."""2from __future__ import annotations34import base645import math6import struct78import pytest910PRICE = {"text-embedding-3-small": 0.02, "text-embedding-3-large": 0.13, "text-embedding-ada-002": 0.10}11NATIVE_DIMS = {"text-embedding-3-small": 1536, "text-embedding-3-large": 3072, "text-embedding-ada-002": 1536}121314@pytest.mark.parametrize("model", list(NATIVE_DIMS))15def test_embedding_shape_and_norm(openai, model):16    st, body, _ = openai("POST", "/v1/embeddings", {"model": model, "input": "OK"},17                         est_cost_usd=PRICE[model] * 2 / 1e6, note=f"test_embeddings {model}")18    assert st == 200, body19    assert body["object"] == "list" and body["data"][0]["object"] == "embedding" and body["data"][0]["index"] == 020    vec = body["data"][0]["embedding"]21    assert len(vec) == NATIVE_DIMS[model]22    assert abs(math.sqrt(sum(x * x for x in vec)) - 1.0) < 1e-3, "embeddings are documented as unit-length"23    assert body["usage"]["prompt_tokens"] >= 1 and body["usage"]["total_tokens"] == body["usage"]["prompt_tokens"]242526def test_dimensions_and_base64(openai):27    st, body, _ = openai("POST", "/v1/embeddings", {"model": "text-embedding-3-small", "input": "OK", "dimensions": 16,28                                                    "encoding_format": "base64"}, est_cost_usd=1e-7, note="test dims=16 base64")29    assert st == 200, body30    raw = base64.b64decode(body["data"][0]["embedding"])31    assert len(raw) == 16 * 432    floats = struct.unpack("<16f", raw)33    assert abs(math.sqrt(sum(x * x for x in floats)) - 1.0) < 1e-3, "shortened vectors are re-normalized"343536def test_dimensions_rejected_on_ada(openai):37    st, body, _ = openai("POST", "/v1/embeddings", {"model": "text-embedding-ada-002", "input": "OK", "dimensions": 16},38                         note="test dimensions on ada-002 (expect 400)")39    assert st == 40040    assert body["error"]["type"] == "invalid_request_error"41    assert "dimensions" in body["error"]["message"]424344def test_array_input_preserves_order(openai):45    st, body, _ = openai("POST", "/v1/embeddings", {"model": "text-embedding-3-small", "input": ["OK", "Reply with OK."], "dimensions": 8},46                         est_cost_usd=2e-7, note="test array input")47    assert st == 200, body48    assert [d["index"] for d in body["data"]] == [0, 1]49    assert all(len(d["embedding"]) == 8 for d in body["data"])50