Skip to content

Middleware ​

wrapProvider возвращает провайдер с применёнными middleware. Middleware выполняются в порядке следования в массиве.

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

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

Встроенные middleware ​

MiddlewareОписание
loggingMiddleware(label?)Логирует запросы, причины завершения и ошибки
headerMiddleware(headers)Добавляет providerOptions.headers
retryMiddleware(options?)Повторно отправляет неудачные запросы с задержкой — см. Повторы
rateLimitMiddleware(options)Очередь запросов на клиенте — см. Ограничение частоты

Свои 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),
    }
  },
}
ХукСигнатураДля чего
beforeRequest(request, provider) => requestПереписать запрос
wrapChat(next, request) => Promise<result>Вызвать провайдер ноль или больше раз (повторы, очереди, кэширование)
afterStream(chunk, request) => chunk | nullПреобразовать или отбросить чанки потока
onError(error, request) => Error | voidПодменить или отследить ошибки
onFinish(request, result) => voidВызывается, когда поток возвращён

wrapChat компонуется как луковица: первый middleware в массиве — самый внешний.

Распространяется по лицензии MIT.