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:
42
Dockerfile
Normal file
42
Dockerfile
Normal file
@@ -0,0 +1,42 @@
|
||||
# =============================================================================
|
||||
# Tool Router + LiteLLM Proxy
|
||||
# =============================================================================
|
||||
# Build: docker build -t tool-router-litellm .
|
||||
# Run: docker run --rm -p 4000:4000 --env-file .env tool-router-litellm
|
||||
# =============================================================================
|
||||
|
||||
FROM python:3.12-slim
|
||||
|
||||
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||
PYTHONUNBUFFERED=1 \
|
||||
PIP_NO_CACHE_DIR=1 \
|
||||
PYTHONPATH=/app \
|
||||
PORT=4000
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Dependências de sistema mínimas (certs para HTTPS das APIs LLM)
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
curl \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# requirements.txt instala litellm + numpy + scikit-learn
|
||||
# (litellm NÃO traz numpy/sklearn por padrão)
|
||||
COPY requirements.txt .
|
||||
RUN pip install --upgrade pip && pip install -r requirements.txt
|
||||
|
||||
# Código do router + configs
|
||||
COPY tool_router_logger.py .
|
||||
COPY config.yaml .
|
||||
COPY test_tool_router.py .
|
||||
|
||||
# Porta do proxy
|
||||
EXPOSE 4000
|
||||
|
||||
# Healthcheck simples no endpoint do proxy
|
||||
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
|
||||
CMD curl -fsS "http://127.0.0.1:${PORT}/health" || exit 1
|
||||
|
||||
# Variáveis TOOL_ROUTER_* e OPENAI_API_KEY / LITELLM_MASTER_KEY vêm do runtime
|
||||
CMD ["sh", "-c", "litellm --config /app/config.yaml --port ${PORT} --host 0.0.0.0"]
|
||||
Reference in New Issue
Block a user