본문으로 건너뛰기

Interface: GenerationMiddleware<TContext>

정의 위치: packages/ai/src/activities/middleware/types.ts:191

활동과 무관하게 관찰만 수행하는 미들웨어입니다.

middleware 옵션으로 모든 활동에 등록할 수 있는 얇은 수명 주기 관찰자입니다. ChatMiddleware와 달리 이 훅은 관찰만 수행하므로 미디어 활동의 단일 요청 → 응답 형태에 적합합니다. OpenTelemetry에는 otelMiddleware()를 전달하거나 사용자 지정 백엔드용 훅을 직접 구현합니다.

훅은 등록 순서대로 await됩니다. 훅에서 예외가 발생하면 전파되어 활동이 실패하며, 이는 chat() 미들웨어의 의미 체계와 같습니다. 요청과 함께 인라인으로 실행되므로 가볍게 유지합니다.

호출마다 onFinish / onAbort / onError 중 정확히 하나만 실행됩니다.

예시

import { generateImage } from '@tanstack/ai'
import { otelMiddleware } from '@tanstack/ai/middlewares/otel'
import { openaiImage } from '@tanstack/ai-openai'
import { trace } from '@opentelemetry/api'

await generateImage({
adapter: openaiImage('gpt-image-1'),
prompt: 'A serene mountain landscape at sunset',
middleware: [otelMiddleware({ tracer: trace.getTracer('my-app') })],
})

타입 매개변수

TContext

TContext = unknown

속성

name?

optional name?: string;

정의 위치: packages/ai/src/activities/middleware/types.ts:193

선택적 이름이며 진단 정보에 표시됩니다.


onAbort?

optional onAbort?: (ctx, info) => void | Promise<void>;

정의 위치: packages/ai/src/activities/middleware/types.ts:207

활동이 중단될 때(예: 방치된 스트림) 호출됩니다.

매개변수

ctx

GenerationMiddlewareContext&lt;TContext>

info

GenerationAbortInfo

반환값

void | Promise&lt;void>


onError?

optional onError?: (ctx, info) => void | Promise<void>;

정의 위치: packages/ai/src/activities/middleware/types.ts:212

활동이 완료되기 전에 예외를 발생시킬 때 호출됩니다.

매개변수

ctx

GenerationMiddlewareContext&lt;TContext>

info

GenerationErrorInfo

반환값

void | Promise&lt;void>


onFinish?

optional onFinish?: (ctx, info) => void | Promise<void>;

정의 위치: packages/ai/src/activities/middleware/types.ts:202

활동이 성공적으로 완료된 후 호출됩니다.

매개변수

ctx

GenerationMiddlewareContext&lt;TContext>

info

GenerationFinishInfo

반환값

void | Promise&lt;void>


onStart?

optional onStart?: (ctx) => void | Promise<void>;

정의 위치: packages/ai/src/activities/middleware/types.ts:195

어댑터 요청이 시작되기 전에 호출됩니다.

매개변수

ctx

GenerationMiddlewareContext&lt;TContext>

반환값

void | Promise&lt;void>


onUsage?

optional onUsage?: (ctx, usage) => void | Promise<void>;

정의 위치: packages/ai/src/activities/middleware/types.ts:197

프로바이더가 사용량을 보고할 때 onFinish 전에 호출됩니다.

매개변수

ctx

GenerationMiddlewareContext&lt;TContext>

usage

GenerationUsageInfo

반환값

void | Promise&lt;void>