CostGuard 프로세서
그만큼CostGuardProcessor구성 가능한 비용 임계값이 초과되면 Agent 루프 전체에 금전적 비용 제한을 적용하고 차단하거나 경고합니다.
각 LLM 호출 전에 비용 한도를 확인하기 위해 processInputStep을 사용합니다. 비용 데이터는 모든 범위에서 Observability 스토리지 API(getMetricAggregate)를 통해 쿼리됩니다. resource 및 thread 범위에서는 구성 가능한 기간(기본값 7일) 동안 여러 실행의 비용을 집계합니다. run 범위에서는 현재 Trace의 비용을 쿼리합니다.
토큰 기반 제한의 경우 다음을 사용하세요.TokenLimiterProcessor instead.
세 가지 범위 지정 모드를 지원합니다.
- 실행 범위: 추적 ID를 통해 단일 Agent 실행 내 비용을 추적합니다.
- 자원 범위(기본값): 당 누적 비용을 추적합니다.
resourceIdacross runs - 스레드 범위: 당 누적 비용을 추적합니다.
threadIdacross runs
대략적인 비용 가드. 비용 데이터는 Observability 파이프라인의 버퍼링된 내보내기를 통해 비동기적으로 유지됩니다. 빠르게 실행되는 Agent는 쿼리에서 메트릭을 사용할 수 있게 되기 전에 구성된 한도를 초과할 수 있습니다.
maxCost는 빠르게 실행되는 Agent가 초과할 수 있는 대략적인 임계값으로 간주하세요.
사용예사용예에 대한 직접 링크
리소스당 누적 비용 추적(기본 범위):
import { CostGuardProcessor } from '@mastra/core/processors'
const costGuard = new CostGuardProcessor({
maxCost: 1.0,
})
24시간 동안 스레드당 누적 비용을 추적합니다.
import { CostGuardProcessor } from '@mastra/core/processors'
const costGuard = new CostGuardProcessor({
maxCost: 5.0,
scope: 'thread',
window: '24h',
})
다음을 사용하여 Agent에 연결합니다.onViolation callback:
import { Agent } from '@mastra/core/agent'
import { CostGuardProcessor } from '@mastra/core/processors'
const costGuard = new CostGuardProcessor({
maxCost: 5.0,
scope: 'resource',
window: '30d',
})
costGuard.onViolation = ({ detail }) => {
console.log(`Cost exceeded for ${detail.scopeKey}: $${detail.usage}/$${detail.limit}`)
}
const agent = new Agent({
id: 'my-agent',
name: 'my-agent',
model: 'openai/gpt-5-nano',
processors: {
input: [costGuard],
},
})
생성자 매개변수생성자 매개변수에 대한 직접 링크
maxCost:
scope?:
window?:
strategy?:
message?:
인스턴스 속성인스턴스 속성에 대한 직접 링크
id:
name:
onViolation?:
processInputStep:
오류 동작오류 동작에 대한 직접 링크
block 전략이 활성화된 경우(기본값), 비용 한도를 초과하면 CostGuardProcessor가 retry: false와 함께 abort()를 호출합니다. TripWire 메타데이터에는 다음이 포함됩니다.
processorId:'cost-guard'usage: 현재 누적 사용량(estimatedCost,costUnit)maxCost: 구성된 비용 한도scope: 활성 범위('run','resource'또는'thread')scopeKey: 리소스/스레드 범위의 범위 식별자(해당하는 경우)
범위 지정 동작범위 지정 동작에 대한 직접 링크
| 범위 | 여러 실행에 걸쳐 추적 | 필터 | 필요한 컨텍스트 |
|---|---|---|---|
run | 아니요 | 현재 스팬의 traceId | Tracing 컨텍스트(자동) |
resource | 예 | resourceId + 기간 | RequestContext의 resourceId |
thread | 예 | threadId + 기간 | RequestContext의 threadId |
모든 범위에는 getMetricAggregate를 지원하는 Observability 스토리지가 필요합니다. Mastra 인스턴스에 Observability 스토리지가 구성되어 있지 않으면 등록 시 오류가 발생합니다. | |||
run 범위의 경우 프로세서는 현재 스팬의 Tracing 컨텍스트에서 Trace ID를 읽습니다. 사용할 수 있는 Tracing 컨텍스트가 없으면 확인을 건너뜁니다(fail-open). | |||
resource 및 thread 범위에서 런타임에 필요한 컨텍스트 ID가 없으면 확인을 건너뜁니다. Observability 쿼리 실패는 fail-open 전략으로 처리합니다. 쿼리가 실패하면 비용을 0으로 간주합니다. |
메트릭 지속성 지연에 대한 참고 사항입니다.관측 가능성 파이프라인은 측정항목을 비동기적으로 플러시하는 버퍼링된 내보내기를 사용합니다. LLM 호출이 완료되는 시점과 해당 비용 지표를 쿼리에 사용할 수 있는 시점 사이에 짧은 지연이 존재합니다. 빈도가 높은 Agent 실행 중에 비용 가드는 실제 비용이 임계값을 초과한 후 하나 이상의 단계가 나타날 때까지 한도 위반을 감지하지 못할 수 있습니다.