Skip to content

ミドルウェア ​

wrapProvider はミドルウェアを適用したプロバイダーを返します。ミドルウェアは配列の順に実行されます。

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

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

組み込みミドルウェア ​

ミドルウェア説明
loggingMiddleware(label?)リクエスト、終了理由、エラーをログに出力する
headerMiddleware(headers)providerOptions.headers を追加する
retryMiddleware(options?)失敗したリクエストをバックオフ付きで再送する。リトライ を参照
rateLimitMiddleware(options)クライアントサイドのリクエストキュー。レート制限 を参照

ミドルウェアを書く ​

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>プロバイダーを 0 回以上呼び出す(リトライ、キュー、キャッシュ)
afterStream(chunk, request) => chunk | nullストリームのチャンクを変換または破棄する
onError(error, request) => Error | voidエラーを置き換えたり監視したりする
onFinish(request, result) => voidストリームが返された時点で一度だけ呼ばれる

wrapChat はタマネギのように合成されます。配列の最初のミドルウェアが一番外側になります。

MIT ライセンスの下で公開されています。