Синхронный клиент
Используйте TypeSafeClient, чтобы задавать вопросы, перечислять модели и настраивать синхронные запросы к API TypeSafe.
typesafe_sdk.TypeSafeClient
TypeSafeClient(
*,
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.BaseTransport
| None = None,
http_client: httpx2.Client | None = None,
base_url: str | None = None,
)
Создаёт HTTP-клиент для API TypeSafe AI.
Явные параметры имеют приоритет над переменными окружения; пустые значения окружения или значения только из пробелов игнорируются.
Параметры:
-
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) –Корень 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: Models
Аксессор к ресурсу Models API.
Примеры:
with TypeSafeClient() as client:
models = client.models.list()
system_one
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
Отвечает на именованные вопросы о тексте или структурированном состоянии.
Подробности см. в 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–а также сведения о модели и расходе токенов, когда пользовательская модель не задана.
Исключения:
-
Список вопросов пуст или список criteria вопроса 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
list(
*,
retry: RetryPolicy | None = None,
timeout: float
| httpx2.Timeout
| None = None,
extra_headers: Mapping[str, str]
| None = None,
) -> ListModelsResponse
Перечисляет модели, доступные аккаунту.
Параметры:
-
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()