Cliente assíncrono
Use AsyncTypeSafeClient para fazer perguntas, listar modelos e configurar requisições assíncronas à API do 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,
)
Crie um cliente HTTP assíncrono para a API do TypeSafe AI.
Opções explícitas têm precedência sobre variáveis de ambiente; valores de ambiente vazios ou com apenas espaços são ignorados.
Parâmetros:
-
api_key(str | None, padrão:None) –Chave de API obrigatória; pode ser definida pela variável de ambiente
TYPESAFE_API_KEY. Espaços em branco no início e no fim são removidos. Chaves vazias, espaços internos, caracteres de controle e caracteres não ASCII são rejeitados. -
model(str | None, padrão:None) –Nome do modelo; pode ser definido pela variável de ambiente
TYPESAFE_DEFAULT_MODEL. -
retry(RetryPolicy | None, padrão:None) –Um
RetryPolicyque controla o comportamento de tentativas; consulteRetryPolicypara ver as opções disponíveis e seus padrões. PasseRetryPolicy(max_retries=0)para desabilitar as tentativas. -
timeout(float | httpx2.Timeout | None, padrão:None) –Tempo limite para operações HTTP. Herda
http_client.timeoutquando fornecido; caso contrário, usa o padrão do SDK. -
headers(Mapping[str, str] | None, padrão:None) –Cabeçalhos de requisição adicionais a definir.
-
transport(httpx2.AsyncBaseTransport | None, padrão:None) –Transporte HTTP personalizado opcional, fechado quando este cliente do SDK é fechado.
-
http_client(httpx2.AsyncClient | None, padrão:None) –httpx2.AsyncClientopcional; mutuamente exclusivo comtransport. Fechado quando este cliente do SDK é fechado. -
base_url(str | None, padrão:None) –Raiz da API; pode ser definida pela variável de ambiente
TYPESAFE_BASE_URL.
Exceções:
-
A chave de API está ausente ou é inválida, ou o tempo limite é inválido.
-
Tanto
transportquantohttp_clientsão fornecidos.
Exemplos:
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
Um acessor para o recurso Models da API.
Exemplos:
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 perguntas nomeadas sobre texto ou estado estruturado.
Consulte System One para obter detalhes.
Parâmetros:
-
state(JSONContent) –Texto, um objeto JSON ou um array a avaliar. Consulte state para obter detalhes.
-
questions(Mapping[str, Question]) –Mapeamento não vazio de nomes para objetos de pergunta ou dicionários brutos.
-
model(str | None, padrão:None) –Substituição do modelo;
Noneherda o padrão do cliente. -
retry(RetryPolicy | None, padrão:None) –Uma política de tentativas opcional para substituir o valor do cliente apenas nesta chamada.
-
timeout(float | httpx2.Timeout | None, padrão:None) –Um tempo limite opcional para operações HTTP para substituir o valor do cliente apenas nesta chamada, em segundos.
-
extra_headers(Mapping[str, str] | None, padrão:None) –Cabeçalhos de requisição adicionais a definir.
-
extra_body(Mapping[str, JSONValue | None] | None, padrão:None) –Campos adicionais de nível superior do corpo da requisição, combinados superficialmente sobre o corpo depois que
state,modelequestionssão definidos. A combinação segue a regra de que a última gravação vence: uma chave que colida comstate,modelouquestionsa substitui, e valores de objeto são substituídos em vez de combinados em profundidade. -
response_model(type[ResponseT] | None, padrão:None) –Tipo
BaseModeldo Pydantic opcional que descreve o corpo JSON da resposta, incluindo quaisquer modelos de resposta aninhados.
Retorno:
-
SystemOneResponse | ResponseT–Uma instância de
response_model, ouSystemOneResponsecom respostas indexadas pelo nome da pergunta -
SystemOneResponse | ResponseT–e o modelo e os detalhes de uso de tokens quando nenhum modelo personalizado é fornecido.
Exceções:
-
As perguntas estão vazias ou a lista de criteria de uma pergunta de score está vazia.
-
O servidor retorna uma resposta HTTP malsucedida após todas as tentativas.
-
A requisição não consegue se conectar ou expira após todas as tentativas.
-
TypeSafeAPIResponseValidationError–O corpo da resposta não corresponde ao modelo de resposta.
Exemplos:
Crie perguntas com argumentos nomeados:
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"}
Passe as perguntas como dicionários:
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 recursos de rede e fecha o cliente HTTP subjacente, incluindo um fornecido.
Recurso Models
Acessado por meio de AsyncTypeSafeClient.models.
typesafe_sdk.AsyncModels
Acesso aos modelos disponíveis para a conta, acessado por meio 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 os modelos disponíveis para a conta.
Parâmetros:
-
retry(RetryPolicy | None, padrão:None) –Uma política de tentativas opcional para substituir o valor do cliente apenas nesta chamada.
-
timeout(float | httpx2.Timeout | None, padrão:None) –Substituição do tempo limite por operação;
Noneherda a configuração do cliente. -
extra_headers(Mapping[str, str] | None, padrão:None) –Substituições de cabeçalhos de requisição adicionais; autenticação, identificação do SDK e
Acceptpermanecem protegidos.
Retorno:
-
Um
ListModelsResponsecujomodelscontém o nome, a descrição -
e a data de lançamento de cada modelo.
Exceções:
-
O servidor retorna uma resposta HTTP malsucedida após todas as tentativas.
-
A requisição não consegue se conectar ou expira após todas as tentativas.
Exemplos:
from typesafe_sdk import AsyncTypeSafeClient
async def main() -> None:
async with AsyncTypeSafeClient() as client:
models = await client.models.list()