← 返回首页
🧠

LLM回退模式

📂 llm ⏱ 2 min 283 words

--- title: "LLM回退模式" description: "全面介绍LLM系统中的回退模式,包括多模型回退、多供应商回退等实用方案" tags: ["回退模式", "多模型", "供应商冗余"] category: "llm" icon: "🧠"

LLM回退模式

回退模式是LLM系统高可用架构的核心组件。当主路径出现故障时,系统能够自动切换到备选路径继续提供服务。与降级不同,回退的目标是维持服务质量而非降低服务质量。

多模型回退

当首选模型不可用时,自动切换到备选模型:

class ModelChain:
    def __init__(self, models):
        self.models = models

    async def generate(self, prompt):
        for model in self.models:
            try:
                return await model.generate(prompt)
            except ModelError as e:
                print(f"模型 {model.name} 失败: {e}")
                continue
        raise AllModelsFailedError("所有模型均不可用")

模型链按优先级排列,依次尝试直到成功。选择备选模型时要考虑能力差异和成本差异。

多供应商回退

不同LLM供应商之间相互备份:

class MultiProviderFallback:
    def __init__(self):
        self.providers = [
            {"name": "openai", "client": OpenAIClient()},
            {"name": "anthropic", "client": AnthropicClient()},
            {"name": "local", "client": LocalClient()},
        ]

    async def generate(self, prompt):
        errors = []
        for provider in self.providers:
            try:
                return await provider["client"].generate(prompt)
            except Exception as e:
                errors.append(f"{provider['name']}: {str(e)}")
        raise ProviderFallbackError(f"所有供应商失败: {errors}")

多供应商策略能有效规避单一供应商的单点故障风险。

区域回退

当某个区域的服务不可用时,切换到其他区域:

class RegionalFallback:
    def __init__(self):
        self.regions = ["us-east", "eu-west", "ap-south"]

    async def generate(self, prompt, preferred_region="us-east"):
        regions = [preferred_region] + [r for r in self.regions if r != preferred_region]

        for region in regions:
            try:
                return await self.call_region(region, prompt)
            except RegionError:
                continue
        raise RegionalFallbackError("所有区域均不可用")

区域回退对于需要低延迟的全球化服务尤为重要。

降级回退

当完整功能不可用时,提供简化版本:

class QualityFallback:
    async def generate(self, prompt, quality="high"):
        if quality == "high":
            try:
                return await self.full_generation(prompt)
            except QualityError:
                return await self.generate(prompt, "medium")

        if quality == "medium":
            try:
                return await self.cached_generation(prompt)
            except CacheError:
                return await self.generate(prompt, "low")

        return self.static_response(prompt)

降级回退确保即使功能受限,用户仍能获得响应。

超时回退

当响应时间超过阈值时,使用快速备选方案:

import asyncio

class TimeoutFallback:
    def __init__(self, timeout=10.0):
        self.timeout = timeout

    async def generate(self, prompt):
        try:
            return await asyncio.wait_for(
                self.slow_but_quality(prompt),
                timeout=self.timeout
            )
        except asyncio.TimeoutError:
            return await self.fast_but_basic(prompt)

超时回退能有效避免用户长时间等待。

冷备回退

维护一个预热的备用实例作为最后防线:

class ColdBackup:
    def __init__(self):
        self.backup_ready = False

    async def activate_backup(self):
        if not self.backup_ready:
            await self.warm_up_backup()
            self.backup_ready = True

    async def generate(self, prompt):
        try:
            return await self.primary.generate(prompt)
        except PrimaryError:
            await self.activate_backup()
            return await self.backup.generate(prompt)

冷备回平时消耗资源少,故障时快速接管。

回退策略组合

实际系统中往往需要组合多种回退策略:

class CompositeFallback:
    def __init__(self):
        self.strategies = [
            ("model_chain", ModelChainStrategy()),
            ("provider_fallback", ProviderFallbackStrategy()),
            ("cache_fallback", CacheFallbackStrategy()),
            ("static_fallback", StaticFallbackStrategy()),
        ]

    async def execute(self, request):
        for name, strategy in self.strategies:
            try:
                return await strategy.execute(request)
            except StrategyError:
                continue
        raise CompositeFallbackError("所有回退策略均失败")

总结

回退模式通过多层次的备选方案确保LLM系统的高可用性。多模型、多供应商、多区域的回退组合,配合超时控制和冷备机制,构建了完整的故障恢复体系。