feat: tool router para LiteLLM (callback + guardrail)
- CustomToolRouter como callback (roda em todas as chamadas) - ToolRouterGuardrail para ativação por request - Modos: jaccard (offline) e embedding (API) - Dockerfile + docker-compose prontos - README com docs completas - Teste offline validando ~74% redução de tokens
This commit is contained in:
76
config.yaml
Normal file
76
config.yaml
Normal file
@@ -0,0 +1,76 @@
|
||||
# ============================================================================
|
||||
# config.yaml - LiteLLM Proxy com Tool Router + Valkey Semantic Cache
|
||||
# ============================================================================
|
||||
# Para rodar:
|
||||
# litellm --config config.yaml --detailed_debug
|
||||
# ============================================================================
|
||||
|
||||
model_list:
|
||||
- model_name: gpt-4o-mini
|
||||
litellm_params:
|
||||
model: openai/gpt-4o-mini
|
||||
api_key: os.environ/OPENAI_API_KEY
|
||||
# Temperatura baixa para ferramentas
|
||||
temperature: 0.1
|
||||
- model_name: gpt-4o
|
||||
litellm_params:
|
||||
model: openai/gpt-4o
|
||||
api_key: os.environ/OPENAI_API_KEY
|
||||
|
||||
litellm_settings:
|
||||
# Cache semântico com Valkey (reduz tokens em resposta)
|
||||
cache: true
|
||||
cache_params:
|
||||
type: valkey-semantic
|
||||
host: os.environ/VALKEY_HOST
|
||||
port: os.environ/VALKEY_PORT
|
||||
valkey_semantic_cache_embedding_model: "text-embedding-3-small"
|
||||
similarity_threshold: 0.92 # só retorna cache se >= 92% similar
|
||||
ttl: 3600 # 1 hora
|
||||
|
||||
# ── Tool Router (roda em TODAS as chamadas) ────────────────────────────────
|
||||
# Formato válido no LiteLLM 1.95+: `callbacks` aponta para uma INSTÂNCIA
|
||||
# de CustomLogger (`tool_router_instance` é criada no import do módulo).
|
||||
# Parâmetros configuráveis via env vars: TOOL_ROUTER_* (ver tool_router_logger.py).
|
||||
callbacks:
|
||||
- tool_router_logger.tool_router_instance
|
||||
|
||||
# ── Opção GUARDRAIL (ativa por request: `guardrails: ["tool_router"]`) ─────
|
||||
# Descomente se preferir controlar por request em vez de global.
|
||||
# guardrails:
|
||||
# - guardrail_name: tool_router
|
||||
# litellm_params:
|
||||
# guardrail: tool_router_logger.ToolRouterGuardrail
|
||||
# mode: pre_call
|
||||
# default_on: false # true = roda em todas as chamadas
|
||||
# top_k: 3
|
||||
# min_similarity: 0.15
|
||||
# similarity_mode: jaccard # ou "embedding" (exige API de embedding)
|
||||
|
||||
# Callbacks para monitoramento
|
||||
success_callback: ["langfuse"] # opcional: rastreamento
|
||||
|
||||
# Desliga cache de requisições (deixa só o semântico) se quiser
|
||||
# request_model_request_count: false
|
||||
|
||||
general_settings:
|
||||
master_key: os.environ/LITELLM_MASTER_KEY
|
||||
# database_url: os.environ/DATABASE_URL # se quiser persitir usage
|
||||
|
||||
# Proxy custom headers
|
||||
proxy_batch_write_at: 1 # escreve logs em batch
|
||||
|
||||
# Segurança
|
||||
allowed_routes:
|
||||
- chat/completions
|
||||
- models
|
||||
|
||||
# Rate limiting (opcional)
|
||||
# alerting: ["slack"]
|
||||
# alerting_threshold: 300 # 5 minutos sem resposta
|
||||
|
||||
# Desabilitar rotas indesejadas
|
||||
# disable_end_user_cost_tracking: true
|
||||
|
||||
# Para ambientes com muitos tools, configurar:
|
||||
max_request_size_mb: 15
|
||||
Reference in New Issue
Block a user