Cliente assíncrono
Use AsyncTypeSafeClient para fazer perguntas, listar modelos e configurar pedidos assíncronos à API 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 TypeSafe AI.
As opções explícitas têm precedência sobre as variáveis de ambiente; os valores de ambiente vazios ou apenas com espaços são ignorados.
Parâmetros:
-
api_key(str | None, predefinição:None) –Chave de API obrigatória; pode ser definida através da variável de ambiente
TYPESAFE_API_KEY. Os espaços em branco iniciais e finais são removidos. As chaves vazias, os espaços internos, os caracteres de controlo e os caracteres não ASCII são rejeitados. -
model(str | None, predefinição:None) –Nome do modelo; pode ser definido através da variável de ambiente
TYPESAFE_DEFAULT_MODEL. -
retry(RetryPolicy | None, predefinição:None) –Um
RetryPolicyque controla o comportamento dos reintentos; consulteRetryPolicypara as opções disponíveis e as respetivas predefinições. PasseRetryPolicy(max_retries=0)para desativar os reintentos. -
timeout(float | httpx2.Timeout | None, predefinição:None) –Tempo limite para as operações HTTP. Herda
http_client.timeoutquando fornecido; caso contrário, usa a predefinição do SDK. -
headers(Mapping[str, str] | None, predefinição:None) –Cabeçalhos de pedido adicionais a definir.
-
transport(httpx2.AsyncBaseTransport | None, predefinição:None) –Transporte HTTP personalizado opcional, fechado quando este cliente do SDK fecha.
-
http_client(httpx2.AsyncClient | None, predefinição:None) –httpx2.AsyncClientopcional; mutuamente exclusivo comtransport. Fechado quando este cliente do SDK fecha. -
base_url(str | None, predefinição:None) –Raiz da API; pode ser definida através da variável de ambiente
TYPESAFE_BASE_URL.
Exceções:
-
A chave de API está em falta ou é inválida, ou o tempo limite é inválido.
-
São fornecidos
transportehttp_clientao mesmo tempo.
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
Responda a perguntas nomeadas sobre texto ou estado estruturado.
Consulte System One para obter mais detalhes.
Parâmetros:
-
state(JSONContent) –Texto, um objeto JSON ou um array a avaliar. Consulte state para obter mais detalhes.
-
questions(Mapping[str, Question]) –Mapeamento não vazio de nomes para objetos de pergunta ou dicionários em bruto.
-
model(str | None, predefinição:None) –Substituição do modelo;
Noneherda a predefinição do cliente. -
retry(RetryPolicy | None, predefinição:None) –Uma política de reintentos opcional para substituir o valor ao nível do cliente apenas nesta chamada.
-
timeout(float | httpx2.Timeout | None, predefinição:None) –Um tempo limite opcional para operações HTTP para substituir o valor ao nível do cliente apenas nesta chamada, em segundos.
-
extra_headers(Mapping[str, str] | None, predefinição:None) –Cabeçalhos de pedido adicionais a definir.
-
extra_body(Mapping[str, JSONValue | None] | None, predefinição:None) –Campos adicionais de nível superior do corpo do pedido, fundidos superficialmente sobre o corpo depois de
state,modelequestionsserem definidos. A fusão segue a regra «a última escrita prevalece»: uma chave que colida comstate,modelouquestionssubstitui-a, e os valores de objeto são substituídos em vez de fundidos em profundidade. -
response_model(type[ResponseT] | None, predefinição:None) –Tipo
BaseModeldo Pydantic opcional que descreve o corpo da resposta JSON, incluindo quaisquer modelos de resposta aninhados.
Devolve:
-
SystemOneResponse | ResponseT–Uma instância de
response_modelouSystemOneResponsecom as respostas indexadas por -
SystemOneResponse | ResponseT–nome da pergunta, juntamente com o modelo e os detalhes de uso de tokens quando não é fornecido um modelo personalizado.
Exceções:
-
As perguntas estão vazias ou a lista de criteria de uma pergunta score está vazia.
-
O servidor devolve uma resposta HTTP malsucedida após todos os reintentos.
-
O pedido não consegue ligar-se ou excede o tempo limite após todos os reintentos.
-
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
Liberta os recursos de rede e fecha o cliente HTTP subjacente, incluindo um fornecido externamente.
Recurso Models
Acedido através de AsyncTypeSafeClient.models.
typesafe_sdk.AsyncModels
Acesso aos modelos disponíveis para a conta, acedido atravé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 os modelos disponíveis para a conta.
Parâmetros:
-
retry(RetryPolicy | None, predefinição:None) –Uma política de reintentos opcional para substituir o valor ao nível do cliente apenas nesta chamada.
-
timeout(float | httpx2.Timeout | None, predefinição:None) –Substituição do tempo limite por operação;
Noneherda a definição do cliente. -
extra_headers(Mapping[str, str] | None, predefinição:None) –Substituições de cabeçalhos de pedido adicionais; a autenticação, a identificação do SDK e
Acceptpermanecem protegidos.
Devolve:
-
Um
ListModelsResponsecujomodelscontém o nome, a descrição -
e a data de lançamento de cada modelo.
Exceções:
-
O servidor devolve uma resposta HTTP malsucedida após todos os reintentos.
-
O pedido não consegue ligar-se ou excede o tempo limite após todos os reintentos.
Exemplos:
from typesafe_sdk import AsyncTypeSafeClient
async def main() -> None:
async with AsyncTypeSafeClient() as client:
models = await client.models.list()