36040d7cc8
Cadena de búsqueda con respaldo. DuckDuckGo sigue de primario porque no exige credenciales: en el camino habitual ningún tercero se entera de qué busca la familia. Pero su endpoint lite no es una API con contrato, así que cuando limite por tasa o cambie el HTML, Brave responde. Dos matices del encadenado: - Cero resultados NO dispara el respaldo. Si el primario respondió bien y no encontró nada, esa es la respuesta correcta; encadenar gastaría cuota y devolvería resultados peores. Solo se avanza ante un error real. - La cadena recuerda quién respondió: al depurar una respuesta rara, lo primero que hay que saber es de dónde salió. Un respaldo sin credencial falla al arrancar y no en la primera consulta — que es justo cuando el primario ya falló y el respaldo tiene que funcionar. Aparte, verificando torch en la 2060 apareció un defecto real en backends.py: torch.cuda.is_bf16_supported() usa including_emulation=True por defecto, así que devuelve True en Turing, donde bf16 no existe en silicio. La guardia no habría atrapado el perfil de la 5090 corriendo en la 2060: el entrenamiento seguía, emulado y silencioso. Medido en la placa: 4,49 ms por matmul en bf16 contra 1,75 ms en fp16, unas 2,6x más lento. Ahora se consulta con including_emulation=False, con respaldo por compute capability. 11 tests nuevos (113 en total). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
45 lines
1.8 KiB
YAML
45 lines
1.8 KiB
YAML
# Herramientas del agente.
|
|
#
|
|
# La búsqueda web usa DuckDuckGo como primario: no exige API key ni cuenta, así
|
|
# que 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 la cadena de respaldo.
|
|
search:
|
|
backend: duckduckgo
|
|
|
|
# Se prueban en orden, y solo ante un error real del anterior. Cero
|
|
# resultados no dispara el respaldo: si el primario respondió bien y no
|
|
# encontró nada, esa es la respuesta correcta.
|
|
#
|
|
# Brave sí es una API con contrato y límites claros, pero cada consulta pasa
|
|
# por un tercero asociado a una cuenta — por eso va de respaldo y no de
|
|
# primario. SearxNG autoalojado es el destino natural cuando el volumen lo
|
|
# justifique: agrega DuckDuckGo entre sus fuentes sin exponer las consultas.
|
|
fallbacks: [brave]
|
|
|
|
region: es-es # DuckDuckGo
|
|
country: uy # Brave
|
|
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
|
|
|
|
# Credenciales, desde .env. Quedan vacías si la variable no está definida.
|
|
brave_api_key: ${oc.env:ENLACE_BRAVE_API_KEY,""}
|
|
searxng_url: ${oc.env:ENLACE_SEARXNG_URL,""}
|