Skip to content

Middleware ​

wrapProvider retorna um provedor com o middleware aplicado. Os middlewares rodam na ordem do array.

ts
import { wrapProvider, loggingMiddleware, headerMiddleware, retryMiddleware } from 'vue-llm'

const ai = wrapProvider(createOpenAI({ apiKey }), [
  loggingMiddleware('chat'),
  headerMiddleware({ 'x-team': 'support' }),
  retryMiddleware(),
])

Middleware nativo ​

MiddlewareDescrição
loggingMiddleware(label?)Faz log das requisições, finish reasons e erros
headerMiddleware(headers)Adiciona providerOptions.headers
retryMiddleware(options?)Reenvia requisições que falharam com backoff — veja Retentativas
rateLimitMiddleware(options)Fila de requisições no cliente — veja Rate limiting

Escrevendo middleware ​

ts
import type { Middleware } from 'vue-llm'

const redact: Middleware = {
  beforeRequest(request) {
    return {
      ...request,
      messages: request.messages.map(m =>
        typeof m.content === 'string' ? { ...m, content: m.content.replace(/\d{16}/g, '[card]') } : m),
    }
  },
}
HookAssinaturaPara que serve
beforeRequest(request, provider) => requestReescrever a requisição
wrapChat(next, request) => Promise<result>Chamar o provedor zero ou mais vezes (retentativas, filas, cache)
afterStream(chunk, request) => chunk | nullTransformar ou descartar chunks do stream
onError(error, request) => Error | voidSubstituir ou observar erros
onFinish(request, result) => voidChamado quando o stream é retornado

O wrapChat se compõe como uma cebola: o primeiro middleware do array é o mais externo.

Distribuído sob a licença MIT.