Conceção do SDK de TypeScript
laya-client é um cliente HTTP sem dependências para um servidor laya-serve
auto-alojado. Usa o endpoint POST /v1/systemone e não acrescenta código Python de produção
nem dependências de servidor.
O pacote npm começa na versão 0.1.0, independentemente das publicações de Python.
Fronteiras
| Componente | Responsabilidade |
|---|---|
sdk/typescript |
Tipos de pergunta/resposta, presets, validação, fetch nativo, erros e cancelamento |
laya/serve.py |
Endpoint HTTP existente, autenticação Bearer, saúde e limites de pedido |
laya/router.py |
Seleção de checkpoint, carregamento e encaminhamento de inferência |
laya/agent.py |
Tokenização, inferência com PyTorch e formatação calibrada das respostas |
laya/presets.py |
Origem dos cinco presets de perguntas de TypeScript gerados |
flowchart LR
A[JavaScript or TypeScript application] --> B[laya-client]
B -->|POST /v1/systemone| C[Existing Laya server]
C --> E[Router and local checkpoint]
O SDK exporta predict e uma sonda health exclusiva do Laya. É distribuído como ESM,
CommonJS e declarações, conservando os ids de pergunta e as etiquetas de choice
inferidos. Usa laya-client quando uma aplicação JavaScript ou TypeScript fala por HTTP com
um laya-serve de Python auto-alojado. Usa laya-ts quando a inferência tiver de correr
diretamente dentro de JavaScript através do seu runtime ONNX local, sem um servidor Python.
Contrato partilhado
Os pedidos contêm state e questions. Salvo se for configurado ou fornecido para uma
predição, o laya-client omite model, deixando o laya-serve selecionar um checkpoint local
automaticamente. Um model ao nível do cliente ou por chamada pode selecionar um checkpoint
local, tal como os restantes controlos por pedido da tabela abaixo. Os arrays de etiquetas de choice são normalizados para mapas com descrições nulas antes
do transporte.
As respostas conservam model, answers e o usage de tokens. Os campos routing do
Laya e action da resposta são extensões opcionais; a confiança do Noul também é
opcional. A confiança de Choice e Score, as distribuições e as legendas de Score continuam
a ser obrigatórias. Todas as respostas transportam answer_confidence, a massa max(p) sobre a resposta reportada, que é a mesma grandeza nos três tipos de pergunta. Um pedido ao qual foi passado min_confidence reporta abstention e abstention_threshold em cada uma das suas respostas e low_confidence: true nas que ficam abaixo do limiar; sem limiar definido, nenhuma dessas três chaves é enviada, e essa ausência é o relatório. As extensões opcionais são validadas quando estão presentes.
O /v1/systemone é o único endpoint que o cliente chama, e não tem um método de encaminhamento autónomo: laya-client expõe predict e health e nada mais, e o teste de integração em direto verifica que o servidor responde 404 a /v1/route. Os controlos que o endpoint de facto respeita são por pedido, e cada um só é enviado quando o autor da chamada forneceu a opção – uma opção ausente deixa as próprias definições Router(...) da implementação no comando, em vez de as substituir por uma predefinição do lado do cliente:
| opção | campo do pedido |
|---|---|
model |
model |
task |
task |
lang |
lang |
langGuess |
lang_guess |
maxLen |
max_len |
headMaxLen |
head_max_len |
minConfidence |
min_confidence |
Uma opção que não pode significar nada é recusada localmente, antes de o pedido sair: um task em branco, um orçamento que não é um inteiro positivo, um limiar fora de [0, 1], ou um mapa de limiares vazio ou com um valor fora de [0, 1]. Nada é ignorado em silêncio. O /health público do Laya devolve status, loaded e device. A predição nunca sonda a saúde primeiro.
As strings de detalhe do FastAPI e os arrays de validação são preservados como
mensagens/detalhes de LayaAPIError. Também são aceites envelopes de erro estruturados de
backends compatíveis. Os pedidos têm prazos configuráveis e cancelamento pelo
autor da chamada, e nunca são repetidos automaticamente.
Verificação e publicação
Os testes unitários cobrem a construção de pedidos, todas as formas de resposta, as
extensões do Laya, os erros do FastAPI, a validação de JSON, os prazos e o
cancelamento, e prendem a tabela de controlos desta página aos campos que o cliente coloca realmente no fio. As verificações de tipos cobrem metadados opcionais, tipos de resposta inferidos e consumidores de ESM/CommonJS. O teste de
integração em direto arranca a aplicação laya.serve inalterada com um checkpoint offline
diminuto, compara as predições do SDK com a inferência direta de Python, e exercita o
encaminhamento, os presets, a autenticação e os limites de pedido. A CI executa as
verificações do SDK em Node.js 22 e 24.
Uns pesos aleatórios diminutos verificam o transporte e a paridade numérica, não a qualidade nem o desempenho do modelo pré-treinado.
Consulta o guia do SDK
para a configuração, os exemplos e a publicação no npm. O pacote será publicado com o
nome laya-client. Os fluxos de publicação de Python ficam inalterados.