Documentación

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 RetryPolicy que controla el comportamiento de los reintentos; consulta RetryPolicy para ver las opciones disponibles y sus valores predeterminados. Pasa RetryPolicy(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.timeout cuando 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.AsyncClient opcional; mutuamente excluyente con transport. 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:

  • TypeSafeError –

    Falta la clave de API o no es válida, o el tiempo de espera no es válido.

  • ValueError –

    Se proporcionan tanto transport como http_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; None hereda 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, model y questions. La combinación sigue la regla de que gana la última escritura: una clave que entre en conflicto con state, model o questions la anula, y los valores de objeto se reemplazan en lugar de combinarse en profundidad.

  • response_model (type[ResponseT] | None, valor predeterminado: None ) –

    Tipo BaseModel de Pydantic opcional que describe el cuerpo JSON de la respuesta, incluidos los modelos de respuesta anidados.

Devuelve:

  • SystemOneResponse | ResponseT –

    Una instancia de response_model, o SystemOneResponse con 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:

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; None hereda 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 Accept permanecen protegidos.

Devuelve:

Lanza:

  • TypeSafeAPIError –

    El servidor devuelve una respuesta HTTP fallida después de los reintentos.

  • TypeSafeAPIConnectionError –

    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()