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>
33 lines
1.3 KiB
YAML
33 lines
1.3 KiB
YAML
# Herramientas del agente.
|
|
#
|
|
# La búsqueda web usa DuckDuckGo, que no exige API key ni cuenta en ningún
|
|
# servicio: no hay credenciales que gestionar ni un tercero al que se le informe
|
|
# qué busca la familia.
|
|
#
|
|
# Aclaración sobre el endpoint: la API oficial de DuckDuckGo ("Instant Answer")
|
|
# solo devuelve definiciones y fichas de entidades, no resultados web. Los
|
|
# resultados reales salen del endpoint lite, que no es una API con contrato: el
|
|
# HTML puede cambiar y hay límite de tasa. Por eso existe el backend `searxng`,
|
|
# autoalojado y estable, como reemplazo de una línea cuando haga falta.
|
|
search:
|
|
backend: duckduckgo
|
|
region: es-es
|
|
language: es
|
|
|
|
# Presupuesto de contexto. Con seq_len 2048 hay que repartir entre resultados
|
|
# de búsqueda, memoria recuperada y el turno del usuario: cinco resultados
|
|
# recortados le sirven más al modelo que diez completos.
|
|
max_results: 5
|
|
snippet_chars: 240
|
|
|
|
timeout: 10.0
|
|
retries: 2
|
|
|
|
# En una casa las mismas preguntas se repiten muchas veces por día. La caché
|
|
# es de comportamiento, no de rendimiento: evita repetir consultas externas
|
|
# idénticas en pocos minutos.
|
|
cache_ttl: 300.0
|
|
|
|
# Solo se usa con backend=searxng. Sale de .env y queda vacío si no está.
|
|
searxng_url: ${oc.env:ENLACE_SEARXNG_URL,""}
|