跳转到内容

TypeScript 弹性模式

ai-lib-ts 为生产负载提供内置的弹性模式。

自动重试与指数退避:

import { createClientBuilder, RetryPolicy } from '@hiddenpath/ai-lib-ts';
const client = await createClientBuilder()
.withRetry(RetryPolicy.fromConfig({
maxRetries: 5,
initialDelayMs: 100,
maxDelayMs: 30000,
multiplier: 2.0,
}))
.build('openai/gpt-4o');
选项默认值描述
maxRetries3最大重试次数
initialDelayMs100初始延迟 (ms)
maxDelayMs30000最大延迟上限
multiplier2.0退避乘数

防止级联故障:

import { CircuitBreaker } from '@hiddenpath/ai-lib-ts';
const breaker = new CircuitBreaker({
failureThreshold: 5,
successThreshold: 3,
timeoutSeconds: 60,
});
const client = await createClientBuilder()
.withCircuitBreaker(breaker)
.build('anthropic/claude-3-5-sonnet');
// 监控状态
const signals = await client.signals();
console.log('熔断器状态:', signals.circuitBreaker?.state);
// 状态: 'closed', 'open', 'half-open'
状态行为
closed请求正常通过
open请求立即快速失败
half-open有限请求测试恢复

令牌桶限流:

import { RateLimiter } from '@hiddenpath/ai-lib-ts';
const client = await createClientBuilder()
.withRateLimiter(RateLimiter.fromRps(10)) // 每秒 10 个请求
.build('openai/gpt-4o');

限制并发请求:

import { Backpressure } from '@hiddenpath/ai-lib-ts';
const client = await createClientBuilder()
.withBackpressure(new Backpressure({
maxConcurrent: 20,
}))
.build('openai/gpt-4o');

统一请求门控(熔断器 + 限流器 + 背压):

import { PreflightChecker, CircuitBreaker, RateLimiter, Backpressure } from '@hiddenpath/ai-lib-ts';
const checker = new PreflightChecker({
circuitBreaker: new CircuitBreaker({ failureThreshold: 5 }),
rateLimiter: RateLimiter.fromRps(10),
backpressure: new Backpressure({ maxConcurrent: 5 }),
});
const result = await checker.check();
if (result.passed) {
try {
const response = await client.chat([Message.user('Hi')]).execute();
checker.onSuccess();
console.log(response.content);
} catch (e) {
checker.onFailure();
throw e;
} finally {
result.release();
}
}

自动回退到备用模型:

const client = await createClientBuilder()
.withFallbacks([
'anthropic/claude-3-5-sonnet',
'deepseek/deepseek-chat',
'openai/gpt-4o-mini',
])
.build('openai/gpt-4o');
const client = await createClientBuilder()
.withRetry(RetryPolicy.fromConfig({ maxRetries: 3 }))
.withCircuitBreaker(new CircuitBreaker({ failureThreshold: 5 }))
.withRateLimiter(RateLimiter.fromRps(20))
.withBackpressure(new Backpressure({ maxConcurrent: 10 }))
.withFallbacks(['anthropic/claude-3-5-sonnet'])
.withTimeout(30000)
.build('openai/gpt-4o');