"""LLM gateway — 多供应商路由、Prompt 版本、结构化输出、成本计量、预算保护. 架构文档 §4.3: V1 是进程内包,V2 拆为独立服务。接口按远程调用设计,拆分零成本。 """ from packages.llm.budget import DailyBudgetGuard, InMemoryCostCounter, RedisCostCounter from packages.llm.circuit import CircuitBreaker, CircuitBreakerRegistry, CircuitState from packages.llm.cost import ( AICallRecord, AICallRecorder, CompositeAICallRecorder, InMemoryAICallRecorder, ModelRate, NullAICallRecorder, PeakAwareRateTable, RateResolver, RateTable, compute_cost_cents, is_peak, ) from packages.llm.errors import ( AllProvidersFailedError, CachePrefixViolationError, DailyBudgetExceededError, LLMError, ProviderError, StructuredOutputError, ) from packages.llm.gateway import LLMGateway from packages.llm.prompts import PromptRegistry, PromptTemplate, validate_cache_prefix from packages.llm.routing import SceneRouter, build_scene_configs from packages.llm.types import Completion, Message, PromptRef, Scene, SceneConfig, Usage __all__ = [ "AICallRecord", "AICallRecorder", "AllProvidersFailedError", "CachePrefixViolationError", "CircuitBreaker", "CircuitBreakerRegistry", "CircuitState", "Completion", "CompositeAICallRecorder", "DailyBudgetExceededError", "DailyBudgetGuard", "InMemoryAICallRecorder", "InMemoryCostCounter", "LLMError", "LLMGateway", "Message", "ModelRate", "NullAICallRecorder", "PeakAwareRateTable", "PromptRef", "PromptRegistry", "PromptTemplate", "ProviderError", "RateResolver", "RateTable", "RedisCostCounter", "Scene", "SceneConfig", "SceneRouter", "StructuredOutputError", "Usage", "build_scene_configs", "compute_cost_cents", "is_peak", "validate_cache_prefix", ]