179062a5d4
Primera tool del agente. No depende del modelo, así que se puede usar y
verificar de punta a punta antes de que exista el modelo propio.
Sobre el endpoint: la API oficial de DuckDuckGo ("Instant Answer") no sirve
para esto — responde definiciones y fichas de entidades, y para una consulta
normal devuelve 200 con el cuerpo vacío. Los resultados web reales solo están
en el endpoint lite, que no es una API con contrato: el HTML puede cambiar y
hay límite de tasa. Por eso el backend está detrás de una interfaz y queda
implementado también SearxNG autoalojado, que es un cambio de una línea de
config cuando haga falta.
Decisiones:
- Presupuesto de contexto explícito: con seq_len 2048 los resultados compiten
con la memoria recuperada y el turno del usuario, así que se devuelven cinco
recortados en vez de diez completos.
- Las redirecciones /l/?uddg= se desenvuelven al destino real: guardarlas
ensuciaría la memoria episódica, donde dos búsquedas a la misma página
parecerían páginas distintas.
- Caché con TTL, que es de comportamiento y no de rendimiento: en una casa las
mismas preguntas se repiten muchas veces por día.
- Sin resultados devuelve "Sin resultados." en vez de vacío, para que el modelo
pueda decir que no encontró nada en lugar de inventar.
Se quitan Brave y Tavily de .env.example: ya no hay credenciales que gestionar
ni un tercero al que informarle qué busca la familia.
23 tests nuevos (71 en total), contra una respuesta real guardada como fixture:
el parser es lo que se rompe cuando cambia el markup, y tiene que fallar en la
suite y no en producción. Ningún test sale a internet.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
34 lines
773 B
Python
34 lines
773 B
Python
"""Capa de configuración: nada de números mágicos en el código.
|
|
|
|
Todo hiperparámetro, ruta y umbral vive en `configs/*.yaml`, se compone por
|
|
capas y se valida con pydantic antes de que arranque cualquier proceso largo.
|
|
"""
|
|
|
|
from enlace.config.load import load_agent_config, load_config, load_config_from_argv
|
|
from enlace.config.schema import (
|
|
AgentConfig,
|
|
Config,
|
|
DataConfig,
|
|
HardwareConfig,
|
|
ModelConfig,
|
|
OptimizerConfig,
|
|
ScheduleConfig,
|
|
SearchConfig,
|
|
TrainConfig,
|
|
)
|
|
|
|
__all__ = [
|
|
"AgentConfig",
|
|
"Config",
|
|
"DataConfig",
|
|
"HardwareConfig",
|
|
"ModelConfig",
|
|
"OptimizerConfig",
|
|
"ScheduleConfig",
|
|
"SearchConfig",
|
|
"TrainConfig",
|
|
"load_agent_config",
|
|
"load_config",
|
|
"load_config_from_argv",
|
|
]
|