Client asynchrone
Utilise AsyncTypeSafeClient pour poser des questions, lister les modèles et configurer des requêtes asynchrones vers l’API TypeSafe.
typesafe_sdk.AsyncTypeSafeClient
AsyncTypeSafeClient(
*,
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.AsyncBaseTransport
| None = None,
http_client: httpx2.AsyncClient
| None = None,
base_url: str | None = None,
)
Crée un client HTTP asynchrone pour l’API de TypeSafe AI.
Les options explicites ont priorité sur les variables d’environnement ; les valeurs d’environnement vides ou composées uniquement d’espaces sont ignorées.
Paramètres :
-
api_key(str | None, valeur par défaut :None) –Clé d’API obligatoire ; peut être définie via la variable d’environnement
TYPESAFE_API_KEY. Les espaces de début et de fin sont supprimés. Les clés vides, les espaces internes, les caractères de contrôle et les caractères non ASCII sont rejetés. -
model(str | None, valeur par défaut :None) –Nom du modèle ; peut être défini via la variable d’environnement
TYPESAFE_DEFAULT_MODEL. -
retry(RetryPolicy | None, valeur par défaut :None) –Un
RetryPolicyqui contrôle le comportement de réessai ; consulteRetryPolicypour les options disponibles et leurs valeurs par défaut. PasseRetryPolicy(max_retries=0)pour désactiver les nouvelles tentatives. -
timeout(float | httpx2.Timeout | None, valeur par défaut :None) –Délai d’expiration des opérations HTTP. Hérite de
http_client.timeoutlorsqu’il est fourni, sinon de la valeur par défaut du SDK. -
headers(Mapping[str, str] | None, valeur par défaut :None) –En-têtes de requête supplémentaires à définir.
-
transport(httpx2.AsyncBaseTransport | None, valeur par défaut :None) –Transport HTTP personnalisé facultatif, fermé lorsque ce client du SDK se ferme.
-
http_client(httpx2.AsyncClient | None, valeur par défaut :None) –httpx2.AsyncClientfacultatif ; mutuellement exclusif avectransport. Fermé lorsque ce client du SDK se ferme. -
base_url(str | None, valeur par défaut :None) –Racine de l’API ; peut être définie via la variable d’environnement
TYPESAFE_BASE_URL.
Exceptions :
-
La clé d’API est manquante ou invalide, ou le délai d’expiration est invalide.
-
transportethttp_clientsont tous les deux fournis.
Exemples :
import asyncio
from typesafe_sdk import AsyncTypeSafeClient, Choice, Noul
async def main() -> None:
async with AsyncTypeSafeClient() as client:
result = await 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"}
asyncio.run(main())
models
cached property
models: AsyncModels
Un accesseur pour la ressource API Models.
Exemples :
async def main() -> None:
async with AsyncTypeSafeClient() as client:
models = await client.models.list()
system_one
async
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
Réponds à des questions nommées sur du texte ou un état structuré.
Consulte System One pour plus de détails.
Paramètres :
-
state(JSONContent) –Du texte, un objet JSON ou un tableau à évaluer. Consulte state pour plus de détails.
-
questions(Mapping[str, Question]) –Mapping non vide de noms vers des objets question ou des dictionnaires bruts.
-
model(str | None, valeur par défaut :None) –Remplacement du modèle ;
Nonehérite de la valeur par défaut du client. -
retry(RetryPolicy | None, valeur par défaut :None) –Une politique de réessai facultative pour remplacer la valeur définie au niveau du client pour ce seul appel.
-
timeout(float | httpx2.Timeout | None, valeur par défaut :None) –Un délai d’expiration facultatif pour les opérations HTTP, afin de remplacer la valeur définie au niveau du client pour ce seul appel, en secondes.
-
extra_headers(Mapping[str, str] | None, valeur par défaut :None) –En-têtes de requête supplémentaires à définir.
-
extra_body(Mapping[str, JSONValue | None] | None, valeur par défaut :None) –Champs supplémentaires de premier niveau du corps de requête, fusionnés superficiellement sur le corps après définition de
state,modeletquestions. La fusion applique la règle du dernier écrit : une clé qui entre en collision avecstate,modelouquestionsles remplace, et les valeurs objets sont remplacées plutôt que fusionnées en profondeur. -
response_model(type[ResponseT] | None, valeur par défaut :None) –Type Pydantic
BaseModelfacultatif décrivant le corps JSON de la réponse, y compris les éventuels modèles de réponse imbriqués.
Valeur de retour :
-
SystemOneResponse | ResponseT–Une instance de
response_model, ouSystemOneResponseavec les réponses indexées par nom de question -
SystemOneResponse | ResponseT–ainsi que le modèle et les détails d’usage des jetons lorsqu’aucun modèle personnalisé n’est fourni.
Exceptions :
-
Les questions sont vides ou la liste de critères d’une question score est vide.
-
Le serveur renvoie une réponse HTTP infructueuse après les nouvelles tentatives.
-
La requête ne peut pas se connecter ou expire après les nouvelles tentatives.
-
TypeSafeAPIResponseValidationError–Le corps de la réponse ne correspond pas au modèle de réponse.
Exemples :
Crée des questions avec des arguments nommés :
async def main() -> None:
async with AsyncTypeSafeClient() as client:
result = await 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"}
Passe les questions sous forme de dictionnaires :
async def main() -> None:
async with AsyncTypeSafeClient() as client:
result = await 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"}
aclose
async
aclose() -> None
Libère les ressources réseau et ferme le client HTTP sous-jacent, y compris un client fourni.
Ressource Models
Accessible via AsyncTypeSafeClient.models.
typesafe_sdk.AsyncModels
Accès aux modèles disponibles pour le compte, via AsyncTypeSafeClient.models.
list
async
list(
*,
retry: RetryPolicy | None = None,
timeout: float
| httpx2.Timeout
| None = None,
extra_headers: Mapping[str, str]
| None = None,
) -> ListModelsResponse
Liste les modèles disponibles pour le compte.
Paramètres :
-
retry(RetryPolicy | None, valeur par défaut :None) –Une politique de réessai facultative pour remplacer la valeur définie au niveau du client pour ce seul appel.
-
timeout(float | httpx2.Timeout | None, valeur par défaut :None) –Remplacement du délai d’expiration par opération ;
Nonehérite du réglage du client. -
extra_headers(Mapping[str, str] | None, valeur par défaut :None) –Remplacements pour les en-têtes de requête supplémentaires ; l’authentification, l’identification du SDK et
Acceptrestent protégés.
Valeur de retour :
-
Un
ListModelsResponsedontmodelscontient le nom, la description -
et la date de publication de chaque modèle.
Exceptions :
-
Le serveur renvoie une réponse HTTP infructueuse après les nouvelles tentatives.
-
La requête ne peut pas se connecter ou expire après les nouvelles tentatives.
Exemples :
from typesafe_sdk import AsyncTypeSafeClient
async def main() -> None:
async with AsyncTypeSafeClient() as client:
models = await client.models.list()