Синхронный клиент (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
Создает 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.
Исключения:
-
API-ключ отсутствует или недействителен, либо указан некорректный таймаут.
-
Переданы одновременно и
transport, иhttp_client.
Примеры:
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"} {"\n"}
Интерфейс доступа к ресурсу Models API.
Примеры:
with TypeSafeClient() as client:
models = client.models.list()
system\_one
Отвечает на именованные вопросы о тексте или структурированном состоянии.
Подробнее см. раздел 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–а также сведениями о модели и расходе токенов, если пользовательская модель не передана.
Исключения:
-
Словарь вопросов пуст или список критериев в вопросе Score пуст.
-
Сервер вернул неуспешный HTTP-ответ после всех повторных попыток.
-
Не удалось установить соединение или истекло время ожидания после всех повторных попыток.
TypeSafeAPIResponseValidationError–Тело ответа не соответствует схеме модели ответа.
Примеры:
Создание вопросов с именованными аргументами:
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"}
Передача вопросов в виде словарей:
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
Освобождает сетевые ресурсы и закрывает базовый HTTP-клиент (включая переданный извне).
Ресурс Models
Доступен через TypeSafeClient.models.
typesafe\_sdk.Models
Доступ к моделям, доступным учетной записи, осуществляется через TypeSafeClient.models.
list
Возвращает список моделей, доступных учетной записи.
Параметры:
retry(RetryPolicy | None, значение по умолчанию:None) –Необязательная политика повторов для переопределения настроек клиента только для этого вызова.
timeout(float | httpx2.Timeout | None, значение по умолчанию:None) –Переопределение таймаута для данной операции;
Noneнаследует настройки клиента.extra_headers(Mapping[str, str] | None, значение по умолчанию:None) –Переопределения дополнительных заголовков запроса; заголовки аутентификации, идентификации SDK и
Acceptостаются защищенными.
Возвращает:
-
Объект
ListModelsResponse, чье полеmodelsсодержит имя, описание -
и дату релиза каждой модели.
Исключения:
-
Сервер вернул неуспешный HTTP-ответ после всех повторных попыток.
-
Не удалось установить соединение или истекло время ожидания после всех повторных попыток.
Примеры:
from typesafe_sdk import TypeSafeClient
with TypeSafeClient() as client:
models = client.models.list()