ДокументацияTypeSafe Python SDKСинхронный клиент (TypeSafeClient)

Синхронный клиент (TypeSafeClient)

Use TypeSafeClient to ask questions, list models, and configure synchronous TypeSafe API requests.

Используйте TypeSafeClient для отправки вопросов, получения списка моделей и настройки синхронных запросов к TypeSafe API.

export function SdkSignature({children}) {
async function copy(event) {
const button = event.currentTarget;
const code = button.parentElement.querySelector("pre code");
try {
await navigator.clipboard.writeText(code.textContent);
button.setAttribute("aria-label", "Signature copied");
button.dataset.copied = "true";
} catch {
button.setAttribute("aria-label", "Copy failed; select the signature to copy");
}
setTimeout(() => {
button.setAttribute("aria-label", "Copy signature");
delete button.dataset.copied;
}, 2000);
}
return



{children}

;
}

typesafe\_sdk.TypeSafeClient

{"TypeSafeClient"}{"("}{"\n"}{" "}{"*"}{","}{"\n"}{" "}{"api_key"}{":"}{" "}
{"str"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"model"}{":"}{" "}{"str"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"retry"}{":"}{" "}{"RetryPolicy"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"timeout"}{":"}{" "}{"float"}{"\n"}{" "}{"|"}{" "}{"httpx2"}{"."}{"Timeout"}{"\n"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"headers"}{":"}{" "}{"Mapping"}{"["}{"str"}{","}{" "}{"str"}{"]"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"transport"}{":"}{" "}{"httpx2"}{"."}{"BaseTransport"}{"\n"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"http_client"}{":"}{" "}{"httpx2"}{"."}{"Client"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"base_url"}{":"}{" "}{"str"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{")"}{"\n"}

Создает HTTP-клиент для TypeSafe AI API.

Явно переданные параметры имеют приоритет над переменными окружения; пустые значения переменных или состоящие только из пробелов игнорируются.

**Настройка логирования**

SDK записывает логи в логгер typesafe_sdk. Настройте его через стандартный модуль logging или задайте переменную TYPESAFE_LOG_LEVEL (debug, info, ...) для быстрой установки уровня. Секретные заголовки маскируются в выводе логов; тела запросов и ответов не маскируются.

Параметры:

  • api_key (str | None, значение по умолчанию: None ) –

    Обязательный API-ключ; можно задать через переменную окружения TYPESAFE_API_KEY. Начальные и конечные пробелы удаляются. Пустые ключи, пробелы внутри ключа, управляющие символы и символы, отличные от ASCII, отклоняются.

  • model (str | None, значение по умолчанию: None ) –

    Имя модели; можно задать через переменную окружения TYPESAFE_DEFAULT_MODEL.

  • retry (RetryPolicy | None, значение по умолчанию: None ) –

    Объект RetryPolicy, управляющий логикой повторных попыток; доступные параметры и их значения по умолчанию см. в описании RetryPolicy. Передайте RetryPolicy(max_retries=0) для отключения повторов.

  • timeout (float | httpx2.Timeout | None, значение по умолчанию: None ) –

    Таймаут для HTTP-операций. Наследует http_client.timeout, если передан клиент, иначе используется значение по умолчанию SDK.

  • headers (Mapping[str, str] | None, значение по умолчанию: None ) –

    Дополнительные заголовки запросов.

  • transport (httpx2.BaseTransport | None, значение по умолчанию: None ) –

    Необязательный пользовательский HTTP-транспорт, закрывается при закрытии клиента SDK.

  • http_client (httpx2.Client | None, значение по умолчанию: None ) –

    Необязательный httpx2.Client; взаимоисключающий с transport. Закрывается при закрытии клиента SDK.

  • base_url (str | None, значение по умолчанию: None ) –

    Базовый URL API; можно задать через переменную окружения TYPESAFE_BASE_URL.

Исключения:

  • TypeSafeError

    API-ключ отсутствует или недействителен, либо указан некорректный таймаут.

  • ValueError

    Переданы одновременно и transport, и http_client.

Примеры:

PYTHON THEME={NULL} api.wedstack.ru/v1
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"}

{"\n"}

Интерфейс доступа к ресурсу Models API.

Примеры:

PYTHON THEME={NULL} api.wedstack.ru/v1
with TypeSafeClient() as client:
    models = client.models.list()

system\_one

{"system_one"}{"("}{"\n"}{" "}{"state"}{":"}{" "}{"JSONContent"}{","}{"\n"}{" "}{"questions"}{":"}{" "}{"Mapping"}{"["}{"str"}{","}{" "}{"Question"}{"],"}{"\n"}{" "}{"*"}{","}{"\n"}{" "}{"model"}{":"}{" "}{"str"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"retry"}{":"}{" "}{"RetryPolicy"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"timeout"}{":"}{" "}{"float"}{"\n"}{" "}{"|"}{" "}{"httpx2"}{"."}{"Timeout"}{"\n"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"extra_headers"}{":"}{" "}{"Mapping"}{"["}{"str"}{","}{" "}{"str"}{"]"}{"\n"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"extra_body"}{":"}{" "}{"Mapping"}{"["}{"str"}{","}{" "}{"JSONValue"}{" "}{"|"}{" "}{"None"}{"]"}{"\n"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"response_model"}{":"}{" "}{"type"}{"["}{"ResponseT"}{"]"}{"\n"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{")"}{" "}{"->"}{" "}{"SystemOneResponse"}{" "}{"|"}{" "}{"ResponseT"}{"\n"} {"system_one"}{"("}{"\n"}{" "}{"state"}{":"}{" "}{"JSONContent"}{","}{"\n"}{" "}{"questions"}{":"}{" "}{"Mapping"}{"["}{"str"}{","}{" "}{"Question"}{"],"}{"\n"}{" "}{"*"}{","}{"\n"}{" "}{"model"}{":"}{" "}{"str"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"retry"}{":"}{" "}{"RetryPolicy"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"timeout"}{":"}{" "}{"float"}{"\n"}{" "}{"|"}{" "}{"httpx2"}{"."}{"Timeout"}{"\n"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"extra_headers"}{":"}{" "}{"Mapping"}{"["}{"str"}{","}{" "}{"str"}{"]"}{"\n"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"extra_body"}{":"}{" "}{"Mapping"}{"["}{"str"}{","}{" "}{"JSONValue"}{" "}{"|"}{" "}{"None"}{"]"}{"\n"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"response_model"}{":"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{")"}{" "}{"->"}{" "}{"SystemOneResponse"}{"\n"} {"system_one"}{"("}{"\n"}{" "}{"state"}{":"}{" "}{"JSONContent"}{","}{"\n"}{" "}{"questions"}{":"}{" "}{"Mapping"}{"["}{"str"}{","}{" "}{"Question"}{"],"}{"\n"}{" "}{"*"}{","}{"\n"}{" "}{"model"}{":"}{" "}{"str"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"retry"}{":"}{" "}{"RetryPolicy"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"timeout"}{":"}{" "}{"float"}{"\n"}{" "}{"|"}{" "}{"httpx2"}{"."}{"Timeout"}{"\n"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"extra_headers"}{":"}{" "}{"Mapping"}{"["}{"str"}{","}{" "}{"str"}{"]"}{"\n"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"extra_body"}{":"}{" "}{"Mapping"}{"["}{"str"}{","}{" "}{"JSONValue"}{" "}{"|"}{" "}{"None"}{"]"}{"\n"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"response_model"}{":"}{" "}{"type"}{"["}{"ResponseT"}{"],"}{"\n"}{")"}{" "}{"->"}{" "}{"ResponseT"}{"\n"}

Отвечает на именованные вопросы о тексте или структурированном состоянии.

Подробнее см. раздел System One.

Параметры:

  • state (JSONContent) –

    Текст, JSON-объект или массив для анализа. Подробнее см. раздел состояние (state).

  • questions (Mapping[str, Question]) –

    Непустое сопоставление имен с объектами вопросов или сырыми словарями.

  • model (str | None, значение по умолчанию: None ) –

    Переопределение модели; None наследует значение по умолчанию клиента.

  • retry (RetryPolicy | None, значение по умолчанию: None ) –

    Пользовательская политика повторов для переопределения настроек клиента только для этого вызова.

  • timeout (float | httpx2.Timeout | None, значение по умолчанию: None ) –

    Таймаут HTTP-операций в секундах для переопределения настроек клиента только для этого вызова.

  • extra_headers (Mapping[str, str] | None, значение по умолчанию: None ) –

    Дополнительные заголовки запроса.

  • extra_body (Mapping[str, JSONValue | None] | None, значение по умолчанию: None ) –

    Дополнительные поля верхнего уровня в теле запроса, поверхностно объединяемые с телом после установки state, model и questions. Объединение выполняется по принципу «последняя запись побеждает»: ключ, конфликтующий со state, model или questions, перезаписывает их, а значения-объекты заменяются целиком, а не объединяются рекурсивно.

  • response_model (type[ResponseT] | None, значение по умолчанию: None ) –

    Необязательный тип модели Pydantic BaseModel, описывающий тело ответа JSON, включая любые вложенные модели ответов.

Возвращает:

  • SystemOneResponse | ResponseT

    Экземпляр response_model или SystemOneResponse с ответами, сгруппированными по имени вопроса,

  • SystemOneResponse | ResponseT

    а также сведениями о модели и расходе токенов, если пользовательская модель не передана.

Исключения:

  • TypeSafeError

    Словарь вопросов пуст или список критериев в вопросе Score пуст.

  • TypeSafeAPIError

    Сервер вернул неуспешный HTTP-ответ после всех повторных попыток.

  • TypeSafeAPIConnectionError

    Не удалось установить соединение или истекло время ожидания после всех повторных попыток.

  • TypeSafeAPIResponseValidationError

    Тело ответа не соответствует схеме модели ответа.

Примеры:

Создание вопросов с именованными аргументами:

PYTHON THEME={NULL} api.wedstack.ru/v1
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"}

Передача вопросов в виде словарей:

PYTHON THEME={NULL} api.wedstack.ru/v1
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

PYTHON THEME={NULL} api.wedstack.ru/v1
close() -> None

Освобождает сетевые ресурсы и закрывает базовый HTTP-клиент (включая переданный извне).

Ресурс Models

Доступен через TypeSafeClient.models.

typesafe\_sdk.Models

Доступ к моделям, доступным учетной записи, осуществляется через TypeSafeClient.models.

list

{"list"}{"("}{"\n"}{" "}{"*"}{","}{"\n"}{" "}{"retry"}{":"}{" "}{"RetryPolicy"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"timeout"}{":"}{" "}{"float"}{"\n"}{" "}{"|"}{" "}{"httpx2"}{"."}{"Timeout"}{"\n"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{" "}{"extra_headers"}{":"}{" "}{"Mapping"}{"["}{"str"}{","}{" "}{"str"}{"]"}{"\n"}{" "}{"|"}{" "}{"None"}{" "}{"="}{" "}{"None"}{","}{"\n"}{")"}{" "}{"->"}{" "}{"ListModelsResponse"}{"\n"}

Возвращает список моделей, доступных учетной записи.

Параметры:

  • retry (RetryPolicy | None, значение по умолчанию: None ) –

    Необязательная политика повторов для переопределения настроек клиента только для этого вызова.

  • timeout (float | httpx2.Timeout | None, значение по умолчанию: None ) –

    Переопределение таймаута для данной операции; None наследует настройки клиента.

  • extra_headers (Mapping[str, str] | None, значение по умолчанию: None ) –

    Переопределения дополнительных заголовков запроса; заголовки аутентификации, идентификации SDK и Accept остаются защищенными.

Возвращает:

  • ListModelsResponse

    Объект ListModelsResponse, чье поле models содержит имя, описание

  • ListModelsResponse

    и дату релиза каждой модели.

Исключения:

  • TypeSafeAPIError

    Сервер вернул неуспешный HTTP-ответ после всех повторных попыток.

  • TypeSafeAPIConnectionError

    Не удалось установить соединение или истекло время ожидания после всех повторных попыток.

Примеры:

PYTHON THEME={NULL} api.wedstack.ru/v1
from typesafe_sdk import TypeSafeClient

with TypeSafeClient() as client:
    models = client.models.list()