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%
1.6 KB · 37 lines python
Raw Blame History
1#!/usr/bin/env python32"""Embeddings with the Python SDK: default float vectors, then `dimensions` + `encoding_format="base64"`.34STATUS: LIVE_VERIFIED 2026-09-18 (3-small 1536 dims; dimensions=16 base64 -> 64 bytes = 16 float32, unit norm).5Run:  .venv/bin/python examples/openai/embeddings/create.py6"""7from __future__ import annotations89import base6410import math11import struct12import sys13from pathlib import Path1415ROOT = Path(__file__).resolve().parents[3]16sys.path.insert(0, str(ROOT))17from scripts import live  # noqa: E4021819from openai import OpenAI  # noqa: E4022021client = OpenAI()2223# 1) plain call, several inputs at once (array in, one Embedding per item, same order)24resp = client.embeddings.create(model="text-embedding-3-small", input=["OK", "Reply with OK."])25live.log_request("openai", "POST", "/v1/embeddings", 200, 0.02 * resp.usage.total_tokens / 1e6, "example create.py float")26for e in resp.data:27    v = e.embedding28    print(f"index={e.index} dims={len(v)} l2={math.sqrt(sum(x * x for x in v)):.4f}")29print("usage:", resp.usage.model_dump())3031# 2) shortened + base64 (smaller payload; decode as little-endian float32)32resp2 = client.embeddings.create(model="text-embedding-3-small", input="OK", dimensions=16, encoding_format="base64")33live.log_request("openai", "POST", "/v1/embeddings", 200, 0.02 / 1e6, "example create.py dims=16 base64")34raw = base64.b64decode(resp2.data[0].embedding)  # the SDK may already decode when encoding_format is omitted35floats = struct.unpack(f"<{len(raw) // 4}f", raw)36print(f"base64 -> {len(raw)} bytes -> {len(floats)} floats, l2={math.sqrt(sum(x * x for x in floats)):.4f}")37