Benchmark · agentic
SWE-bench
SWE-bench evalúa si un sistema de IA puede corregir errores reales de software: toma 2294 issues auténticos de repositorios Python de código abierto populares en GitHub y pide al modelo que genere un patch con la corrección del código. La métrica principal es el porcentaje de issues resueltos.
Leer más
- Ejemplo
- Un elemento típico entrega al modelo un informe de error o una solicitud de función real de un proyecto Python —por ejemplo, un issue de Django o scikit-learn— junto con el código de ese repositorio, y le pide generar un patch que solucione el problema.
- Puntuación
- La puntuación es el porcentaje de los 2294 issues resueltos: un issue cuenta solo si el patch del modelo, una vez aplicado, hace que pase el propio conjunto de pruebas del repositorio.
- Verificación
- La verificación es totalmente automática: el patch generado se aplica al repositorio y se ejecutan las pruebas reales del proyecto; la tarea se acepta como resuelta solo cuando las pruebas objetivo que fallaban pasan a aprobar y las que ya aprobaban siguen aprobando, sin juicio humano ni coincidencia exacta.
- Por qué importa
- Mide la capacidad de ingeniería de software de extremo a extremo sobre código real en lugar de ejercicios de juguete, lo que lo convierte en un indicador muy vigilado del progreso de los agentes de programación; para las cifras de titular ha sido reemplazado en gran medida por el subconjunto validado por humanos SWE-bench Verified.
Ejemplo resuelto
Tarea
Repositorio
psf/requests. Un usuario informa de que asignar None a una cabecera de la petición (para eliminar una cabecera por defecto de la sesión) no tiene efecto: la clave con valor None permanece en las cabeceras combinadas en lugar de eliminarse. Dado el repositorio en el commit con el fallo y esta incidencia, genera un patch para que requests.sessions.merge_setting elimine las claves cuyo valor sea None.Solución
--- a/requests/sessions.py
+++ b/requests/sessions.py
@@ -412,6 +412,11 @@ def merge_setting(request_setting, session_setting, dict_class=OrderedDict):
merged_setting = dict_class(to_key_val_list(session_setting))
merged_setting.update(to_key_val_list(request_setting))
+ # Remove keys that are set to None. Extract the keys first to avoid
+ # mutating the dictionary while iterating over it.
+ none_keys = [k for (k, v) in merged_setting.items() if v is None]
+ for key in none_keys:
+ del merged_setting[key]
+
return merged_setting
Explicación
Tras combinar los diccionarios de la sesión y de la petición, cualquier clave que apunte a
None proviene de una anulación explícita a nivel de petición destinada a borrar un valor por defecto, así que la corrección recopila esas claves y las elimina (construyendo la lista primero para no modificar el diccionario durante la iteración). SWE-bench califica aplicando el patch y ejecutando las pruebas FAIL_TO_PASS y PASS_TO_PASS de la instancia; solo se resuelve si todas pasan.