Cliente asíncrono
Usa AsyncTypeSafeClient para hacer preguntas, listar modelos y configurar solicitudes asíncronas a la API de 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,
)
Crea un cliente HTTP asíncrono para la API de TypeSafe AI.
Las opciones explícitas tienen prioridad sobre las variables de entorno; los valores de entorno vacíos o con solo espacios se ignoran.
Parámetros:
-
api_key(str | None, valor predeterminado:None) –Clave de API obligatoria; se puede definir mediante la variable de entorno
TYPESAFE_API_KEY. Se eliminan los espacios en blanco iniciales y finales. Se rechazan las claves vacías, los espacios internos, los caracteres de control y los caracteres no ASCII. -
model(str | None, valor predeterminado:None) –Nombre del modelo; se puede definir mediante la variable de entorno
TYPESAFE_DEFAULT_MODEL. -
retry(RetryPolicy | None, valor predeterminado:None) –Un
RetryPolicyque controla el comportamiento de los reintentos; consultaRetryPolicypara ver las opciones disponibles y sus valores predeterminados. PasaRetryPolicy(max_retries=0)para desactivar los reintentos. -
timeout(float | httpx2.Timeout | None, valor predeterminado:None) –Tiempo de espera para las operaciones HTTP. Hereda
http_client.timeoutcuando se proporciona; de lo contrario, usa el valor predeterminado del SDK. -
headers(Mapping[str, str] | None, valor predeterminado:None) –Cabeceras de solicitud adicionales que se deben definir.
-
transport(httpx2.AsyncBaseTransport | None, valor predeterminado:None) –Transporte HTTP personalizado opcional, que se cierra cuando se cierra este cliente del SDK.
-
http_client(httpx2.AsyncClient | None, valor predeterminado:None) –httpx2.AsyncClientopcional; mutuamente excluyente contransport. Se cierra cuando se cierra este cliente del SDK. -
base_url(str | None, valor predeterminado:None) –Raíz de la API; se puede definir mediante la variable de entorno
TYPESAFE_BASE_URL.
Lanza:
-
Falta la clave de API o no es válida, o el tiempo de espera no es válido.
-
Se proporcionan tanto
transportcomohttp_client.
Ejemplos:
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 descriptor de acceso al recurso Models de la API.
Ejemplos:
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
Responde a preguntas con nombre sobre texto o estado estructurado.
Consulta System One para obtener más detalles.
Parámetros:
-
state(JSONContent) –Texto, un objeto JSON o un array que se va a evaluar. Consulta state para obtener más detalles.
-
questions(Mapping[str, Question]) –Mapeo no vacío de nombres a objetos de pregunta o diccionarios sin procesar.
-
model(str | None, valor predeterminado:None) –Anulación del modelo;
Nonehereda el valor predeterminado del cliente. -
retry(RetryPolicy | None, valor predeterminado:None) –Una política de reintentos opcional para anular el valor del cliente solo en esta llamada.
-
timeout(float | httpx2.Timeout | None, valor predeterminado:None) –Un tiempo de espera opcional para las operaciones HTTP que anula el valor del cliente solo en esta llamada, en segundos.
-
extra_headers(Mapping[str, str] | None, valor predeterminado:None) –Cabeceras de solicitud adicionales que se deben definir.
-
extra_body(Mapping[str, JSONValue | None] | None, valor predeterminado:None) –Campos adicionales de nivel superior del cuerpo de la solicitud, combinados de forma superficial sobre el cuerpo después de establecer
state,modelyquestions. La combinación sigue la regla de que gana la última escritura: una clave que entre en conflicto constate,modeloquestionsla anula, y los valores de objeto se reemplazan en lugar de combinarse en profundidad. -
response_model(type[ResponseT] | None, valor predeterminado:None) –Tipo
BaseModelde Pydantic opcional que describe el cuerpo JSON de la respuesta, incluidos los modelos de respuesta anidados.
Devuelve:
-
SystemOneResponse | ResponseT–Una instancia de
response_model, oSystemOneResponsecon las respuestas indexadas por el nombre de la pregunta -
SystemOneResponse | ResponseT–y el modelo y los detalles de uso de tokens cuando no se proporciona un modelo personalizado.
Lanza:
-
Las preguntas están vacías o la lista de criteria de una pregunta de score está vacía.
-
El servidor devuelve una respuesta HTTP fallida después de los reintentos.
-
La solicitud no puede conectarse o agota el tiempo de espera después de los reintentos.
-
TypeSafeAPIResponseValidationError–El cuerpo de la respuesta no coincide con el modelo de respuesta.
Ejemplos:
Crea preguntas con argumentos con nombre:
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"}
Pasa las preguntas como diccionarios:
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
Libera los recursos de red y cierra el cliente HTTP subyacente, incluido uno proporcionado.
Recurso Models
Se accede a través de AsyncTypeSafeClient.models.
typesafe_sdk.AsyncModels
Acceso a los modelos disponibles para la cuenta, al que se llega a través de AsyncTypeSafeClient.models.
list
async
list(
*,
retry: RetryPolicy | None = None,
timeout: float
| httpx2.Timeout
| None = None,
extra_headers: Mapping[str, str]
| None = None,
) -> ListModelsResponse
Lista los modelos disponibles para la cuenta.
Parámetros:
-
retry(RetryPolicy | None, valor predeterminado:None) –Una política de reintentos opcional para anular el valor del cliente solo en esta llamada.
-
timeout(float | httpx2.Timeout | None, valor predeterminado:None) –Anulación del tiempo de espera por operación;
Nonehereda la configuración del cliente. -
extra_headers(Mapping[str, str] | None, valor predeterminado:None) –Anulaciones de cabeceras de solicitud adicionales; la autenticación, la identificación del SDK y
Acceptpermanecen protegidos.
Devuelve:
-
Un
ListModelsResponsecuyomodelscontiene el nombre, la descripción -
y la fecha de lanzamiento de cada modelo.
Lanza:
-
El servidor devuelve una respuesta HTTP fallida después de los reintentos.
-
La solicitud no puede conectarse o agota el tiempo de espera después de los reintentos.
Ejemplos:
from typesafe_sdk import AsyncTypeSafeClient
async def main() -> None:
async with AsyncTypeSafeClient() as client:
models = await client.models.list()