Synchroner Client
Verwende TypeSafeClient, um Fragen zu stellen, Modelle aufzulisten und synchrone TypeSafe API-Anfragen zu konfigurieren.
typesafe_sdk.TypeSafeClient
TypeSafeClient(
*,
api_key: str | None = None,
model: str | None = None,
retry: RetryPolicy | None = None,
timeout: float
| httpx2.Timeout
| None = None,
headers: Mapping[str, str] | None = None,
transport: httpx2.BaseTransport
| None = None,
http_client: httpx2.Client | None = None,
base_url: str | None = None,
)
Erstelle einen HTTP-Client für die TypeSafe AI-API.
Explizite Optionen haben Vorrang vor Umgebungsvariablen; leere oder nur aus Leerzeichen bestehende Umgebungswerte werden ignoriert.
Parameter:
-
api_key(str | None, Standardwert:None) –Erforderlicher API-Schlüssel; kann über die Umgebungsvariable
TYPESAFE_API_KEYgesetzt werden. Führende und abschließende Leerzeichen werden entfernt. Leere Schlüssel, interne Leerzeichen, Steuerzeichen und Nicht-ASCII-Zeichen werden abgelehnt. -
model(str | None, Standardwert:None) –Modellname; kann über die Umgebungsvariable
TYPESAFE_DEFAULT_MODELgesetzt werden. -
retry(RetryPolicy | None, Standardwert:None) –Eine
RetryPolicy, die das Wiederholungsverhalten steuert; sieheRetryPolicyfür die verfügbaren Optionen und ihre Standardwerte. ÜbergibRetryPolicy(max_retries=0), um Wiederholungen zu deaktivieren. -
timeout(float | httpx2.Timeout | None, Standardwert:None) –Zeitlimit für HTTP-Operationen. Erbt
http_client.timeout, wenn angegeben, andernfalls den SDK-Standard. -
headers(Mapping[str, str] | None, Standardwert:None) –Zusätzliche Anfrageheader, die gesetzt werden sollen.
-
transport(httpx2.BaseTransport | None, Standardwert:None) –Optionales benutzerdefiniertes HTTP-Transportmittel, das geschlossen wird, wenn dieser SDK-Client geschlossen wird.
-
http_client(httpx2.Client | None, Standardwert:None) –Optionales
httpx2.Client; schließt sich gegenseitig mittransportaus. Wird geschlossen, wenn dieser SDK-Client geschlossen wird. -
base_url(str | None, Standardwert:None) –API-Wurzel; kann über die Umgebungsvariable
TYPESAFE_BASE_URLgesetzt werden.
Ausnahmen:
-
Der API-Schlüssel fehlt oder ist ungültig, oder das Zeitlimit ist ungültig.
-
Es werden sowohl
transportals auchhttp_clientangegeben.
Beispiele:
from typesafe_sdk import Choice, Noul, TypeSafeClient
with TypeSafeClient() as client:
result = client.system_one(
state="I was charged twice. Please help.",
questions={
"billing": Noul(instructions="Is this about billing?"),
"tone": Choice(
instructions="What is the tone?",
criteria={"calm": None, "angry": None},
),
},
)
assert 0 <= result.nouls["billing"].noul <= 1
assert result.choices["tone"].choice in {"calm", "angry"}
models
cached property
models: Models
Ein Zugriff auf die Ressource Models der API.
Beispiele:
with TypeSafeClient() as client:
models = client.models.list()
system_one
system_one(
state: JSONContent,
questions: Mapping[str, Question],
*,
model: str | None = None,
retry: RetryPolicy | None = None,
timeout: float
| httpx2.Timeout
| None = None,
extra_headers: Mapping[str, str]
| None = None,
extra_body: Mapping[str, JSONValue | None]
| None = None,
response_model: type[ResponseT]
| None = None,
) -> SystemOneResponse | ResponseT
system_one(
state: JSONContent,
questions: Mapping[str, Question],
*,
model: str | None = None,
retry: RetryPolicy | None = None,
timeout: float
| httpx2.Timeout
| None = None,
extra_headers: Mapping[str, str]
| None = None,
extra_body: Mapping[str, JSONValue | None]
| None = None,
response_model: None = None,
) -> SystemOneResponse
system_one(
state: JSONContent,
questions: Mapping[str, Question],
*,
model: str | None = None,
retry: RetryPolicy | None = None,
timeout: float
| httpx2.Timeout
| None = None,
extra_headers: Mapping[str, str]
| None = None,
extra_body: Mapping[str, JSONValue | None]
| None = None,
response_model: type[ResponseT],
) -> ResponseT
Beantworte benannte Fragen zu Text oder strukturiertem Zustand.
Siehe System One für Details.
Parameter:
-
state(JSONContent) –Text, ein JSON-Objekt oder ein Array, das ausgewertet werden soll. Siehe state für Details.
-
questions(Mapping[str, Question]) –Nicht leeres Mapping von Namen auf Frageobjekte oder rohe Wörterbücher.
-
model(str | None, Standardwert:None) –Modellüberschreibung;
Noneerbt den Client-Standard. -
retry(RetryPolicy | None, Standardwert:None) –Eine optionale Wiederholungsrichtlinie, die den Wert auf Client-Ebene nur für diesen Aufruf überschreibt.
-
timeout(float | httpx2.Timeout | None, Standardwert:None) –Ein optionales Zeitlimit für HTTP-Operationen, das den Wert auf Client-Ebene nur für diesen Aufruf überschreibt, in Sekunden.
-
extra_headers(Mapping[str, str] | None, Standardwert:None) –Zusätzliche Anfrageheader, die gesetzt werden sollen.
-
extra_body(Mapping[str, JSONValue | None] | None, Standardwert:None) –Zusätzliche Felder auf oberster Ebene des Anfrage-Bodys, die nach dem Setzen von
state,modelundquestionsflach über den Body gelegt werden. Beim Zusammenführen gewinnt der letzte Schreibvorgang: Ein Schlüssel, der mitstate,modeloderquestionskollidiert, überschreibt diesen, und Objektwerte werden ersetzt statt tief zusammengeführt. -
response_model(type[ResponseT] | None, Standardwert:None) –Optionaler Pydantic-
BaseModel-Typ, der den JSON-Antwort-Body beschreibt, einschließlich aller verschachtelten Antwortmodelle.
Rückgabewert:
-
SystemOneResponse | ResponseT–Eine Instanz von
response_modeloderSystemOneResponsemit Antworten, indiziert nach der Frage -
SystemOneResponse | ResponseT–Name sowie Modell- und Token-Nutzungsdetails, wenn kein benutzerdefiniertes Modell angegeben wird.
Ausnahmen:
-
Die Fragen sind leer oder die criteria-Liste einer score-Frage ist leer.
-
Der Server gibt nach allen Wiederholungen eine erfolglose HTTP-Antwort zurück.
-
Die Anfrage kann nach allen Wiederholungen keine Verbindung herstellen oder läuft in ein Zeitlimit.
-
TypeSafeAPIResponseValidationError–Der Antwort-Body stimmt nicht mit dem Antwortmodell überein.
Beispiele:
Erstelle Fragen mit benannten Argumenten:
with TypeSafeClient() as client:
result = client.system_one(
state="I was charged twice. Please help.",
questions={
"billing": Noul(instructions="Is this about billing?"),
"tone": Choice(
instructions="What is the tone?",
criteria={"calm": None, "angry": None},
),
},
)
assert 0 <= result.nouls["billing"].noul <= 1
assert result.choices["tone"].choice in {"calm", "angry"}
Übergib Fragen als Wörterbücher:
with TypeSafeClient() as client:
result = client.system_one(
state={"message": "I was charged twice. Please help."},
questions={
"billing": {"type": "noul", "instructions": "Is this about billing?"},
"tone": {
"type": "choice",
"instructions": "What is the tone?",
"criteria": {"calm": None, "angry": None},
},
},
)
assert 0 <= result.nouls["billing"].noul <= 1
assert result.choices["tone"].choice in {"calm", "angry"}
close
close() -> None
Gibt Netzwerkressourcen frei und schließt den zugrunde liegenden HTTP-Client, auch einen bereitgestellten.
Models-Ressource
Erreichbar über TypeSafeClient.models.
typesafe_sdk.Models
Zugriff auf die für das Konto verfügbaren Modelle, erreichbar über TypeSafeClient.models.
list
list(
*,
retry: RetryPolicy | None = None,
timeout: float
| httpx2.Timeout
| None = None,
extra_headers: Mapping[str, str]
| None = None,
) -> ListModelsResponse
Listet die für das Konto verfügbaren Modelle.
Parameter:
-
retry(RetryPolicy | None, Standardwert:None) –Eine optionale Wiederholungsrichtlinie, die den Wert auf Client-Ebene nur für diesen Aufruf überschreibt.
-
timeout(float | httpx2.Timeout | None, Standardwert:None) –Zeitlimitüberschreibung pro Operation;
Noneerbt die Einstellung des Clients. -
extra_headers(Mapping[str, str] | None, Standardwert:None) –Überschreibungen für zusätzliche Anfrageheader; Authentifizierung, SDK-Identifikation und
Acceptbleiben geschützt.
Rückgabewert:
-
Ein
ListModelsResponse, dessenmodelsden Namen, die Beschreibung -
und das Veröffentlichungsdatum jedes Modells enthält.
Ausnahmen:
-
Der Server gibt nach allen Wiederholungen eine erfolglose HTTP-Antwort zurück.
-
Die Anfrage kann nach allen Wiederholungen keine Verbindung herstellen oder läuft in ein Zeitlimit.
Beispiele:
from typesafe_sdk import TypeSafeClient
with TypeSafeClient() as client:
models = client.models.list()