I am making a a python project, using langgraph I created a node called "RulesFinder" which takes an index as input and the user query, and returns the list of files related to the user query using the index as base. The project is in spanish. I will paste the template and several tests of different models. I want you to evaluate the best one and the one that gave the best choices, and I want you to do the same exercise too, so I can compare which get closer to what you pick.

Here is the template:

```
rulesfinder:
template: |
@@ Descripción de la tarea @@
Identifica los documentos relevantes para la consulta siguiendo un índice.


  @@ Índice @@
  "{index}"

  @@ Consulta @@
  "{message}"

  @@ Instrucciones @@
  Responder solo con el listado de documentos en una lista de Python, no hay límite en la cantidad de documentos de la lista.
  No responder con otra cosa que no sea la lista.
  No responder con comentarios. No responder con texto o descripciones.
  Ejemplo Respuesta correcta: "['doc 1', 'doc 2', 'doc n']".
  Ejemplo Respuesta incorrecta: "Aquí te presento la lista de documentos relevantes para la consulta: doc 1, doc 2, doc n".
```

Here is the index with the topics and related documents:

```
index = """{
"Etiquetas": ["etiqueta.md"],
"Manejo de errores": ["manejo_errores.md", "etiqueta.md"],
"Estándar manejo de errores en componentes de back-end": ["manejo_errores.md"],
"Uso de números y mensajes de error": ["manejo_errores.md"],
"Tabla cl_errores": ["manejo_errores.md"],
"Errores SP interno": ["manejo_errores.md"],
"Errores SP externo": ["manejo_errores.md"],
"XML": ["xml.md"],
"Indentación": ["indentacion.md"],
"Alineación": ["indentacion.md"],
"Anidamiento": ["indentacion.md"],
"Comentarios": ["comentarios.md"],
"Comentarios en SQL": ["comentarios.md"],
"Anidamiento en comentarios": ["comentarios.md"],
"Comentarios en línea": ["comentarios.md"],
"Formato de comentarios": ["comentarios.md"],
"Ejemplos de comentarios": ["comentarios.md"],
"Comentarios en desarrollo en paralelo": ["comentarios.md"],
"SQL": ["sql.md"],
"Select": ["select.md"],
"Insert": ["Insert.md"],
"Delete": ["delete.md"],
"Update": ["update.md"],
"Join": ["join.md"],
"Instrucciones SQL": ["instrucciones_sql.md"],
"Instrucciones if": ["instrucciones_sql.md"],
"Instrucciones while": ["instrucciones_sql.md"],
"Funciones en un where": ["instrucciones_sql.md"],
"Usar COUNT o EXISTS": ["instrucciones_sql.md"],
"Usar OR o UNION": ["instrucciones_sql.md"],
"Uso de MAX y MIN": ["instrucciones_sql.md"],
"CASE": ["instrucciones_sql.md"],
"LIKE": ["instrucciones_sql.md"],
"Cursores": ["cursor.md"],
"Indices": ["indice.md"],
"Store Procedure (SP)": ["sp.md"],
"Programación de procedimientos almacenados": ["sp.md"],
"Estructuras de datos": ["sp.md"],
"Trazabilidad y auditoría": ["sp.md"],
"Optimización de consultas y procedimientos en SP": ["sp.md"],
"Análisis y diseño de bases de datos para SPs": ["sp.md"],
"Implementación y depuración de bases de datos para SPs": ["sp.md"],
"Mantenimiento y actualización de bases de datos para SPs": ["sp.md"],
"Evaluación y mejoramiento de bases de datos para SPs": ["sp.md"],
"Consideraciones de escritura de programas en SPs": ["sp.md"],
"Nombres de objetos para batch de CRM": ["sp.md"],
"Partición/Despartición de tablas durante on-line y Batch": ["sp.md"],
"SP que crea tabla y es ejecutado en paralelo": ["sp.md"],
"Buenas Prácticas de Diseño de SP": ["sp.md"],
"Perfiles": ["sp.md"],
"Variables y tipos de datos en procedimientos almacenados": ["sp.md"],
"Lockeos en el Online": ["sp.md"],
"Cambios a la función sobre datos char y varchar": ["sp.md"],
"Comandos para monitorear los procesos": ["sp.md"],
"Actualización de Estadísticas y Rearmado de planes": ["sp.md"],
"Uso de tablas temporales y Variable tipo Tabla Apropiadamente": ["sp.md"],
"Normas Generales para un SP": ["sp.md"],
"Clasificación de los parámetros de un SP": ["sp.md"],
"Tipos de datos y operadores en procedimientos almacenados": ["sp.md"],
"Sentencias y funciones en procedimientos almacenados": ["sp.md"],
"Control de errores y excepciones en procedimientos almacenados": ["sp.md"],
"Seguridad y control de acceso en procedimientos almacenados": ["sp.md"],
"Optimización de consultas y procedimientos en procedimientos almacenados": ["sp.md"]
}
"""
```

and here is the user query:

```
message_content = """
use cob_sueldos
go

declare
@w_k_registros int,
@w_n_error int,
@w_d_error varchar(54)

select @w_n_error = 0

print 'REGISTROS A ELIMINAR'

delete cob_sueldos..cn_baja_adh
from cob_sueldos..cn_baja_adh
where ba_id_emp = 10
and ba_prestacion = 2

select @w_k_registros = @@rowcount , @w_n_error = @@error

if @w_n_error <> 0
begin
select @w_n_error = 107540
select @w_d_error = 'ERROR AL BORRAR TABLA CN_BAJA_ADH'
goto FIN
end

if @w_k_registros = 0
begin
select @w_n_error = 900131
select @w_d_error = 'ERROR NO EXISTE REGISTRO TABLA CN_BAJA_ADH'
goto FIN
end

FIN:
select @w_n_error
select @w_d_error

select 'CANTIDAD REGISTROS ELIMINADOS'
select @w_k_registros
go
```

Here are the answer of different models:

```
meta-llama/llama-3.1-8b-instruct:free

TEMPERATURE: 0.7

#1: ['manejo_errores.md', 'xml.md', 'indentacion.md', 'alineación.md', 'anidamiento.md', 'comentarios.md', 'sql.md', 'select.md', 'insert.md', 'delete.md', 'update.md', 'join.md', 'instrucciones_sql.md', 'funciones_en_un_where.md', 'usar_count_o_exists.md', 'usar_or_o_union.md', 'uso_de_max_y_min.md', 'case.md', 'like.md', 'cursor.md', 'indice.md', 'sp.md', 'programacion_de_procedimientos_almacenados.md', 'estructuras_de_datos.md', 'trazabilidad_y_auditoria.md', 'optimizacion_de_consultas_y_procedimientos.md', 'analisis_y_diseño_de_bases_de_datos.md', 'implementacion_y_depuracion_de_bases_de_datos.md', 'mantenimiento_y_actualizacion_de_bases_de_datos.md', 'evaluacion_y_mejoramiento_de_bases_de_datos.md', 'consideraciones_de_escribir_programas.md', 'nombres_de_objetos_para_batch_de_crm.md', 'particion_desparticion_de_tablas.md', 'sp_que_crea_tabla_y_es_ejecutado_en_paralelo.md', 'buenas_practicas_de_diseño.md', 'perfiles.md', 'variables_y_tipos_de_datos.md', 'lockeos_en_el_online.md', 'cambios_a_la_funcion.md', 'comandos_para_monitorear_procesos.md', 'actualizacion_de_estadisticas.md', 'uso_de_tablas_temporales.md', 'normas_generales.md', 'clasificacion_de_parametros.md', 'tipos_de_datos_y_operadores.md', 'sentencias_y_funciones.md', 'control_de_errores_y_excepciones.md', 'seguridad_y_control_de_acceso.md', 'optimizacion_de_consultas_y_procedimientos.md']

meta-llama/llama-3.1-70b-instruct:free

TEMPERATURE: 0.7

#1: ['manejo_errores.md', 'comentarios.md', 'instrucciones_sql.md', 'delete.md', 'sp.md']
#2: ['manejo_errores.md', 'etiqueta.md', 'instrucciones_sql.md', 'comentarios.md', 'sql.md', 'delete.md', 'sp.md']
#3: ['manejo_errores.md', 'sp.md', 'instrucciones_sql.md', 'delete.md']
#4: ['manejo_errores.md', 'comentarios.md', 'sql.md', 'delete.md', 'instrucciones_sql.md', 'sp.md']

TEMPERATURE: 0.2

#1: ['manejo_errores.md', 'sql.md', 'delete.md', 'instrucciones_sql.md', 'sp.md']
#2: ['manejo_errores.md', 'sql.md', 'delete.md', 'instrucciones_sql.md', 'sp.md']
#3: ['manejo_errores.md', 'sql.md', 'delete.md', 'instrucciones_sql.md', 'sp.md']
#4: ['manejo_errores.md', 'sql.md', 'delete.md', 'instrucciones_sql.md', 'sp.md']

TEMPERATURE: 0.4

#1: ['manejo_errores.md', 'sql.md', 'delete.md', 'instrucciones_sql.md', 'sp.md']
#2: ['manejo_errores.md', 'sp.md', 'sql.md', 'delete.md', 'instrucciones_sql.md', 'comentarios.md']
#3: ['manejo_errores.md', 'etiqueta.md', 'sql.md', 'delete.md', 'instrucciones_sql.md', 'sp.md']
#4: ['manejo_errores.md', 'sql.md', 'delete.md', 'instrucciones_sql.md', 'sp.md']

meta-llama/llama-3.1-405b-instruct:free

#1: ['manejo_errores.md', 'sql.md', 'delete.md', 'instrucciones_sql.md', 'sp.md']
#2: [] (ERROR)
#3: [] (ERROR)
#4: ['manejo_errores.md', 'sql.md', 'delete.md', 'instrucciones_sql.md', 'sp.md'].
```