Este documento sirve como referencia autorizada y de nivel de producción de la API y especificación del sistema para la API de AlphaEvolve Cloud en las capas conversacionales de Discovery Engine. Google CloudDefine las jerarquías de recursos anidados precisas, los extremos de REST y gRPC, las restricciones a nivel del campo, las máquinas de estado del ciclo de vida, las matrices de diagnóstico de errores, las reglas de zona de pruebas de seguridad y los flujos de trabajo de integración necesarios para diseñar un controlador y un bucle de evaluación completamente automatizados del cliente.
Máquinas de estados de ciclo de vida unificadas
El agente AlphaEvolve coordina dos máquinas de estados independientes para supervisar el progreso de las campañas experimentales y administrar la publicación y ejecución de mutaciones individuales del programa.
Estados del ciclo de vida del experimento
Un experimento representa la campaña de optimización general. Se procesa como un recurso persistente del servidor y pasa por los siguientes estados:
CREATED: Es el estado de inicialización. El recurso se declaró y configuró, pero aún no se completaron las generaciones iniciales ni se enviaron llamadas a la API.RUNNING: Es el estado de evaluación activo. El motor muestrea de forma simultánea los candidatos principales, genera mutaciones de código a través de la combinación de LLM y transmite tareas a los evaluadores.PAUSED: Es un estado de retención temporal que se activa de forma manual o a través de unidle_timeoutprotector automatizado. Se detiene la generación de código y los trabajadores existentes pausan la entrega de métricas.COMPLETED: Es un estado terminal que indica que la búsqueda cumplió correctamente su asignación de destino demax_programso alcanzó su límite de generación estructural.FAILED: Es un estado de error terminal que indica que los problemas sistémicos del entorno (como excepciones no detectadas de credenciales de API, corrupción del almacén de datos o pánicos consecutivos del ejecutor) detuvieron la ejecución del procesamiento.
Estados del programa
La secuencia de validación del tiempo de ejecución se aplica a las variantes candidatas individuales.
Cada mutación de código generada se comporta como una entidad de programa aislada que pasa por una secuencia de estados operativos detallados dentro de la base de datos de la población.
INITIALIZED: La entrada del programa se crea en la base de datos, y se hace un seguimiento de su linaje ancestral y de las vinculaciones con el programa principal.GENERATING: Una tarea se envía de forma activa al backend de combinación de modelos de lenguaje para redactar o mutar los bloques de código funcionales específicos.EVALUATING: El proceso de un trabajador de evaluación bloquea la carga útil de código y la ejecuta dentro de un entorno aislado de plataforma de pruebas.COMPLETED: Las puntuaciones de ejecución y las estadísticas estructurales descriptivas se confirman de forma segura en la base de datos evolutiva, y el programa se agrega al grupo de selección.
Mecánica de simultaneidad y bloqueo
Los programas se adquieren mediante bucles de trabajadores con un mecanismo de token de bloqueo atómico para evitar condiciones de carrera o una sobrecarga de puntuación duplicada en topologías distribuidas. El evaluador debe enviar el esquema de puntuación finalizado junto con el token de bloqueo de coincidencia exacta para confirmar correctamente los resultados en la base de datos.
Esquemas de configuración y parámetros
Descripción general de los parámetros, la configuración y los valores predeterminados del esquema principal que utiliza el tiempo de ejecución del motor de AlphaEvolve.
AlphaEvolveExperimentConfig
Define los parámetros estructurales principales y las restricciones programáticas de la ejecución del experimento evolutivo.
| Nombre del campo | Tipo | Predeterminado | Restricciones y límites de valores | Descripción técnica |
|---|---|---|---|---|
title |
cadena | Obligatorio | Máx. 256 caracteres | Es el nombre visible único del experimento. |
problemDescription |
cadena | Obligatorio | Máx. 5,000 caracteres | Es la especificación formal del problema. Se inserta directamente en los contextos de las instrucciones para establecer reglas. |
programmingLanguage |
cadena | Obligatorio | Valor de formato libre | Es el lenguaje objetivo de la base de código evolucionada (por ejemplo, "python", "cpp", "verilog", "cuda", "julia" o "java"). |
runSettings |
objeto | Obligatorio | Se asigna al esquema RunSettings |
Parámetros de ritmo y tiempo de espera |
generationSettings |
objeto | Obligatorio | Se asigna al esquema GenerationSettings |
Parámetros de selección de modelos y contexto. |
evolutionSettings |
objeto | Obligatorio | Se asigna al esquema EvolutionSettings |
Son los parámetros de selección de la población principal y de diversidad. |
notes |
cadena | Obligatorio | Máximo de 1,000 caracteres | Son anotaciones opcionales para la documentación de la ejecución. |
RunSettings
Rige el ritmo de procesamiento, los límites de paralelización y los tiempos de espera automáticos del sistema.
| Nombre del campo | Tipo | Predeterminado | Restricciones y límites de valores | Descripción técnica |
|---|---|---|---|---|
maxPrograms |
int32 | 100 | Mín.: 1, máx.: 100,000 | Presupuesto total de ejecución (programas para generar y evaluar). |
concurrency |
int32 | 1 | Mín.: 1, máx.: 30 | Es la cantidad de mutaciones de programas paralelas activas en la cola. No se permiten valores superiores a 30. |
maxDuration |
cadena | null | Cadena dayTimeDuration según ISO 8601 Mín.: >=0, Máx.: 7 días |
Es el tiempo total transcurrido permitido antes de que se detenga el experimento. |
idleTimeout |
cadena | null | Cadena dayTimeDuration según ISO 8601 Mín.: >=0, Máx.: 24 h |
Es la duración de la inactividad antes de la transición automática al estado `PAUSED`. |
Configuración de generación
El esquema GenerationSettings controla el ensamblado de instrucciones, las ventanas de contexto y la configuración del modelo para las mutaciones:
context(cadena): Documentación de referencia, APIs complementarias o reglas opcionales proporcionadas por el usuario. Se recomienda estrictamente que no superes los 200,000 tokens. Los tamaños de contexto que superan los 200,000 tokens diluyen la atención del modelo y degradan la calidad de la mutación.includeFullProgramInPrompt(bool): Es el valor predeterminado defalse.true: La instrucción de mutación incluye el objeto# EVOLVE-BLOCKmutable y la plantilla inmutable circundante (muy recomendable para el razonamiento estructural complejo).false: Solo se ve el bloque mutable, lo que guarda el contexto del token.
Configuración de evolución
El esquema EvolutionSettings controla la reinicialización del modelo de isla y las probabilidades de muestreo de elementos superiores:
parentSamplingConfig→paretoSamplingConfig→paretoSamplingProbability(float): Es la probabilidad (de 0.0 a 1.0) de muestrear programas principales directamente desde la frontera de Pareto activa en lugar de usar la selección estándar basada en la aptitud. Este parámetro debe establecerse en0.0(inhabilitado) si las métricas optimizadas solo devuelven una sola métrica escalar.
Modelos de datos de programas candidatos
En esta sección, se describen los esquemas y las representaciones de datos que se usan para definir y organizar las estructuras de código candidatas dentro de la base de datos de la población.
AlphaEvolveProgramContent
Define los archivos y la composición estructural del programa candidato.
files(array deAlphaEvolveSourceFile): Es una lista de todos los archivos que componen la base de código candidata. Esta colección tiene un límite estricto de un máximo de 50 archivos por programa candidato.description(cadena): Es un resumen generado automáticamente que describe los cambios programáticos sugeridos por el modelo de generación (máximo de 1,000 caracteres).
AlphaEvolveSourceFile
Representa un archivo de código fuente individual en la base de código.
path(cadena): Es la ruta de destino relativa al espacio de trabajo (máx. 256 caracteres). Si configuras un espacio de trabajo de Python, el punto de entrada del archivo ejecutable principal debe llamarse exactamente"initial_program.py".content(cadena): Cadena de código fuente sin procesar que comprende los bloques de implementación funcionales. La huella total acumulativa de la base de código combinada en todos los archivos debe ser inferior a 4,000 o 5,000 líneas de código (LOC).programLanguage(cadena): Es la etiqueta de asignación del analizador de lenguaje. Esta cadena debe coincidir de forma explícita con el idioma designado en la configuración del experimento principal.description(cadena): Es un resumen opcional que describe la arquitectura o el propósito individual del archivo, que se expone al LLM durante los pases de mutación (máximo de 500 caracteres).
AlphaEvolveProgramEvaluation
Es la carga útil estructurada que envían las instancias del ejecutor del cliente a la base de datos evolutiva después de la ejecución del tiempo de ejecución.
scores(AlphaEvolveScores): Valores de métricas numéricas objetivos y estandarizados. Las prácticas recomendadas indican que se debe restringir esta cantidad a entre 3 y 5 métricas de números de punto flotante distintas, ya que una cantidad excesiva de dimensiones objetivo degrada el rendimiento del comparador de Pareto de múltiples objetivos.insights(array deAlphaEvolveEvaluationInsight): Etiquetas semánticas de diagnóstico y registros de ejecución en lenguaje natural que se devuelven para ayudar a los intentos posteriores de generación de mutaciones del LLM (se recomienda un máximo de 10 elementos).
Formulación de la puntuación y formatos de transferencia
La regla de maximización
AlphaEvolve funciona fundamentalmente como un algoritmo de ascenso de colinas monotónico y maximiza estrictamente todas las métricas numéricas. Si tu canalización de evaluación hace un seguimiento de un objetivo de minimización (como minimizar la latencia de la aplicación en milisegundos o reducir el uso de memoria), debes negar el valor antes de volver a enviarlo a la base de datos: submitted_score = -latency_ms.
Lo ideal es que las puntuaciones sean continuas. Las métricas booleanas o altamente discretas no proporcionan un indicador de gradiente suficiente para una exploración eficaz de la búsqueda de la cima.
Esquema de transferencia con un solo objetivo
Usa el siguiente JSON cuando tu arnés de evaluación se optimice en función de una sola función objetivo escalar.
```json
{
"scores": {
"scores": [
{
"metric": "accuracy",
"score": 0.95
}
]
},
"insights": {
"insights": [
{
"label": "validation",
"text": "Passed syntax and basic compilation."
}
]
}
}
```
Esquema de transferencia con múltiples objetivos
Usa el siguiente JSON cuando pases parámetros de seguimiento independientes de varios objetivos para activar las rutinas de optimización del frente de Pareto del servidor.
{
"scores": {
"scores": [
{
"metric": "accuracy",
"score": 0.95
},
{
"metric": "latency",
"score": -42.5
}
]
},
"insights": {
"insights": [
{
"label": "verification",
"text": "Passed 5 out of 5 unit tests."
},
{
"label": "latency_warning",
"text": "Latency regression of 3% observed on large dataset."
}
]
}
}
Cómo recuperar y consultar datos de programas
El sistema AlphaEvolve registra la telemetría, las métricas de ejecución y el código fuente completo de cada mutación generada, lo que permite a los desarrolladores consultar este almacén de datos histórico con la API o la CLI para hacer un seguimiento del progreso de la optimización y extraer los candidatos de código con el mejor rendimiento.
Recuperación de programas con la API de REST
Los recursos del programa evaluados se pueden consultar en la base de datos con el extremo ListAlphaEvolvePrograms estándar y los parámetros de consulta de filtrado y ordenamiento:
Filtrado por estado: Consulta los programas que coinciden con un estado de ciclo de vida específico:
GET /v1alpha/{parent}/alphaEvolvePrograms?state_filter=COMPLETEDOrdenamiento basado en métricas: Recupera candidatos ordenados según métricas optimizadas:
GET /v1alpha/{parent}/alphaEvolvePrograms?order_by=accuracy desc,latency&page_size=5
Recuperación de programas con la CLI
Para extraer los principales candidatos completados directamente desde tu terminal, ejecuta el siguiente comando:
ae results best <experiment-nickname> --top 5
Ejemplos completos de uso de la CLI
La CLI de AlphaEvolve proporciona a los desarrolladores un control administrativo y una supervisión rápidos de las campañas directamente desde el shell:
Enumera todos los experimentos en una sesión de conversación:
ae experiment listEnumera todos los programas candidatos mutados para un experimento específico:
ae program list EXPERIMENT_NICKNAME \ --state=COMPLETED \ --order_by="accuracy desc"Reemplaza EXPERIMENT_NICKNAME por el nombre de tu experimento.
Recupera los candidatos de código completado con mejor rendimiento:
ae results best EXPERIMENT_NICKNAME --top 5Reemplaza EXPERIMENT_NICKNAME por el nombre de tu experimento.
Sigue estos pasos para reanudar una campaña detenida:
ae experiment resume EXPERIMENT_NICKNAMEReemplaza EXPERIMENT_NICKNAME por el nombre de tu experimento.
Directorio de extremo de API de REST principal
Todos los extremos tienen versiones en v1alpha de la API de Discovery Engine. Google Cloud
Patrón de ruta de acceso del recurso principal
El URI del recurso principal anidado verdadero se estructura de la siguiente manera:
projects/{project}/locations/{location}/collections/{collection}/
engines/{engine}/sessions/{session}
Crea un experimento (POST)
Ruta:
POST v1alpha/{parent=projects/*/locations/*/collections/*/engines/*/sessions/*}/alphaEvolveExperimentsCuerpo de la solicitud:
AlphaEvolveExperimentConfig(consulta la sección 2.1)Respuesta: Recurso
AlphaEvolveExperimentque contiene la campaña inicializada.Estado HTTP: 200 OK
Ejemplos de cargas útiles de la API
Ejemplo de cuerpo de la solicitud (POST /alphaEvolveExperiments)
{ "config": { "title": "Sorting Optimization Campaign", "problemDescription": "Optimize the custom_heuristic function.", "programLanguage": "python", "notes": "Exploring convergence with Gemini 3.5 Flash.", "runSettings": { "maxPrograms": 250, "concurrency": 8, "maxDuration": "86400s", "idleTimeout": "1800s" }, "generationSettings": { "context": "Ensure custom_heuristic is in-place.", "includeFullProgramInPrompt": true, "models": [ { "name": "gemini-3.5-flash", "weight": 1.0 } ] }, "evolutionSettings": { "parentSamplingConfig": { "paretoSamplingConfig": { "paretoSamplingProbability": 0.0 } } } } }Ejemplo del cuerpo de la respuesta (200 OK)
{ "name": "projects/.../sort-opt-01", "state": "CREATED", "createTime": "2026-06-23T13:30:00Z", "config": { "title": "Sorting Optimization Campaign", "problemDescription": "Optimize the custom_heuristic function.", "programLanguage": "python", "notes": "Exploring convergence with Gemini 3.5 Flash.", "runSettings": { "maxPrograms": 250, "concurrency": 8, "maxDuration": "86400s", "idleTimeout": "1800s" }, "generationSettings": { "context": "Ensure custom_heuristic is in-place.", "includeFullProgramInPrompt": true, "models": [ { "name": "gemini-3.5-flash", "weight": 1.0 } ] }, "evolutionSettings": { "parentSamplingConfig": { "paretoSamplingConfig": { "paretoSamplingProbability": 0.0 } } } } }
Iniciar experimento (POST)
Ruta:
POST v1alpha/{name=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}:startCuerpo de la solicitud:
StartExperimentRequestAdvertencia de baja: El campo del cuerpo
initialProgramestá en desuso y se ignora.Respuesta:
GoogleLongrunningOperation(LRO).Estado HTTP: 200 OK (el estado pasa de
CREATEDaRUNNING)
Ejemplos de cargas útiles de la API
Ejemplo de cuerpo de la solicitud
{ "desiredProgramsCount": 1 }Ejemplo del cuerpo de la respuesta (200 OK - operación de larga duración)
{ "name": "projects/.../operations/start-op-7788", "metadata": { "@type": "type.googleapis.com/.../AlphaEvolveStartExperimentMetadata", "createTime": "2026-06-23T13:31:00Z" }, "done": false }
Adquiere programas (POST)
Ruta:
POST v1alpha/{parent=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}:acquireProgramsCuerpo de la solicitud:
AcquireProgramsRequestdesiredProgramsCount(int32): Es el recuento opcional de lotes de programas modificados que se recuperarán (el valor predeterminado es 1 cuando no se configura).
Estados de respuesta:
200 OK: Devuelve una respuesta que contiene recursosAlphaEvolveProgrambloqueados.204 No Content: La cola está vacía o la campaña está detenida. Los subprocesos deben suspenderse (por ejemplo, durante 15 segundos) y volver a intentarlo.
Ejemplos de cargas útiles de la API
Ejemplo de cuerpo de la solicitud
{ "desiredProgramsCount": 1 }Ejemplo del cuerpo de la respuesta (200 OK)
{ "programs": [ { "name": "projects/.../alphaEvolvePrograms/prog-102", "lockToken": "token_uuid_8877_x99", "state": "EVALUATING", "createTime": "2026-06-23T13:32:00Z", "content": { "description": "Mutated candidate program.", "files": [ { "path": "initial_program.py", "programLanguage": "python", "description": "Primary sorting executable.", "content": "def custom_heuristic(arr, _):\n ..." } ] } } ] }Ejemplo de cuerpo de respuesta (204 No Content)
Se devolvió el estado HTTP 204 con un contexto de carga útil vacío.
Envía evaluaciones de programas (POST)
Ruta:
POST v1alpha/{parent=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}:submitProgramsEvaluationsCuerpo de la solicitud:
SubmitProgramsEvaluationsRequestevaluationSubmissions(array): Contiene ellockTokencoincidente, la ruta de acceso calificada del recurso del programa y la carga útil de la evaluación (puntuaciones y estadísticas).
Respuesta:
SubmitProgramsEvaluationsResponse(vacía).Estado HTTP: 200 OK (guarda las puntuaciones, libera el bloqueo activo y registra las estadísticas)
Ejemplos de cargas útiles de la API
Ejemplo de cuerpo de la solicitud
{ "evaluationSubmissions": [ { "lockToken": "token_uuid_8877_x99", "program": "projects/.../alphaEvolvePrograms/prog-102", "evaluation": { "scores": { "scores": [ { "metric": "latency_performance", "score": evaluation_payload["score"] } ] }, "insights": { "insights": [ { "label": "benchmark", "text": "Completed test case in 12.45ms." } ] } } } ] }Ejemplo del cuerpo de la respuesta (200 OK)
{}
Reanudar el experimento (POST)
Ruta:
POST v1alpha/{name=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}:resumeCuerpo de la solicitud:
ResumeExperimentRequestRespuesta:
GoogleLongrunningOperation(LRO).Estado HTTP: 200 OK (el estado pasa de
PAUSEDaRUNNING)
Ejemplos de cargas útiles de la API
Ejemplo de cuerpo de la solicitud
{}Ejemplo del cuerpo de la respuesta (200 OK - operación de larga duración)
{
"name": "projects/.../operations/resume-op-9900",
"metadata": {
"@type": "type.googleapis.com/.../AlphaEvolveResumeExperimentMetadata",
"createTime": "2026-06-23T13:45:00Z"
},
"done": false
}
Enumera programas (GET)
Ruta:
GET v1alpha/{parent=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}/alphaEvolveProgramsParámetros de consulta:
stateFilter(cadena): Opcional. Es el filtro de lista estándar, por ejemplo,stateFilter = 'COMPLETED'.orderBy(cadena): Opcional. Ordenamiento basado en métricas, por ejemplo,accuracy desc.
Respuesta:
ListAlphaEvolveProgramsResponse.Estado HTTP: 200 OK
Ejemplos de cargas útiles de la API
Ejemplo de URL de solicitud de consulta
GET v1alpha/projects/.../alphaEvolveExperiments/sort-opt-01/ alphaEvolvePrograms?stateFilter=COMPLETED&orderBy=latency_performance%20desc &pageSize=1Ejemplo del cuerpo de la respuesta (200 OK)
{ "alphaEvolvePrograms": [ { "name": "projects/.../alphaEvolvePrograms/prog-102", "state": "COMPLETED", "createTime": "2026-06-23T13:32:00Z", "evaluation": { "scores": { "scores": [ { "metric": "latency_performance", "score": -12.45 } ] }, "insights": { "insights": [ { "label": "benchmark", "text": "Completed test case in 12.45ms." } ] } } } ], "nextPageToken": "token_page_1_next" }
Referencia de códigos de diagnóstico y solución de problemas
Matriz de códigos de diagnóstico de la API
| Estado de HTTP | Tipo de error | Causa del sistema | Solución o acción de mitigación |
|---|---|---|---|
| 400 | INVALID_ARGUMENT |
Faltan etiquetas de comentarios # EVOLVE-BLOCK-START/# EVOLVE-BLOCK-END; la sintaxis del esquema JSON no es válida; se excedieron los límites de archivos o de LOC. |
Verifica que los comentarios de bloque se coloquen dentro de los cuerpos de las funciones con una sintaxis válida del lenguaje de destino. Verifica que se respeten los límites de recuento de archivos y LOC. |
| 403 | PERMISSION_DENIED |
El usuario o la cuenta de servicio no tienen el rol de usuario de Discovery Engine ni una licencia de Gemini Enterprise asignada. | Verifica las licencias activas de Gemini Enterprise.
Para asegurarte de que las credenciales predeterminadas de la aplicación estén configuradas correctamente tanto para el usuario como para el proyecto, ejecuta:gcloud auth
application-default login
--project=<<PROJECT_ID>>Nota: Model Armor no es compatible con la configuración de AlphaEvolve. |
| 408 | LOCK_TIMEOUT |
El ejecutor del cliente superó la duración de ejecución; venció el bloqueo del programa en la cola. | Aplica tiempos de espera estrictos del lado del cliente de 30 minutos. Si se supera, envía de inmediato las puntuaciones de penalización por falla para liberar el bloqueo de la cola. |
| 429 | RESOURCE_EXHAUSTED |
Se excedieron los límites de ejecución simultánea activa o las cuotas del modelo. | Implementa una retirada exponencial del cliente y configura parámetros de simultaneidad conservadores dentro de RunSettings. |
| 503 | SERVICE_UNAVAILABLE |
El servicio de backend está sobrecargado o en mantenimiento. | Implementa un bucle de reintento con retirada exponencial aleatorizada en el cliente. |
Cómo corregir los "lanzamientos silenciosos"
Se produce una intercepción del filtro de seguridad (descarte silencioso) cuando los modelos de lenguaje del servidor marcan y descartan mensajes candidatos mutados debido a un lenguaje sensible o a activadores de reglas de seguridad. El servidor silencia la salida, lo que hace que la fila devuelva respuestas vacías y que los ejecutores del cliente esperen de forma indefinida.
Solución alternativa:
Limpiar el contexto: Quita las frases cargadas de emociones o sensibles a la seguridad del
problemDescription.Filtrar estadísticas: Analiza y trunca los registros sin procesar de seguimiento de excepciones o los registros de stderr de la terminal en la carga útil de
insightspara evitar que se repita contenido del sistema no seguro que active filtros posteriores.Localiza los conjuntos de datos: No coloques registros de entrenamiento ni grandes corpus de texto dentro de las instrucciones; cárgalos de forma local en el entorno del cliente durante la ejecución del bucle de evaluación.
Prácticas recomendadas para la evaluación del cliente
El cuello de botella del "código espagueti"
El formato de código deficiente degrada la calidad de la optimización: "Código espagueti == Espacio de búsqueda ruidoso". Antes de colocar marcadores de EVOLVE-BLOCK, haz lo siguiente:
Refactoriza los bloques de código para que las variables y las firmas de funciones tengan nombres claros.
Agrega cadenas de documentación descriptivas y concisas que expliquen qué hace cada función o variable y por qué.
Asegúrate de que las dependencias externas inmutables (como importar módulos de ayuda o cargar datos estáticos) se encuentren fuera de
# EVOLVE-BLOCK.
Asignación de la ventana de contexto
Para maximizar la creatividad de las mutaciones, limita la carga útil de código que se envía a la API. El contexto total del programa debe mantenerse entre 150,000 y 200,000 tokens. Los grandes bloques de código repetitivo estático e inmutable consumen la atención del modelo y degradan el rendimiento. Mueve por completo los secuencias de comandos de utilidad, las canalizaciones de transferencia de datos y las bibliotecas de validación pesadas al evaluador del cliente.
Primero, prepara el programa inicial.
Antes de ejecutar AlphaEvolve, usa un agente de programación estándar para depurar tanto tu base de código inicial como tu evaluador:
Prepara la semilla: Corrige errores de sintaxis evidentes, problemas de compilación y casos extremos.
Verifica la puntuación inicial: Verifica que la puntuación de referencia sea razonable y que el evaluador sea completamente determinístico (el mismo código y la misma entrada generan la misma puntuación).
Prueba con entradas no válidas: Ejecuta el evaluador con funciones dañadas intencionalmente para confirmar que detecta problemas del compilador, controla los bucles infinitos de forma correcta y devuelve puntuaciones de penalización negativas altas.
Evita los modelos de referencia demasiado optimizados
No pases un programa de referencia ya altamente optimizado como semilla. Si tu programa inicial ya es casi óptimo, AlphaEvolve tendrá dificultades para realizar el ascenso de colinas porque hay muy poco espacio para mejorar. Comienza con un modelo de referencia razonable, pero no optimizado al máximo. Esto le da espacio a AlphaEvolve para explorar y mejorar.
Protecciones del ejecutor del cliente
Los evaluadores del cliente deben aplicar medidas de protección estrictas para evitar que los candidatos maliciosos, que consumen muchos recursos o que no responden detengan a los trabajadores paralelos:
Tiempos de espera estrictos: Se aplica un límite estricto de ejecución de 30 minutos (o menos, según la estructura del espacio de búsqueda).
Envío de penalización por tiempo de espera: Si una variante del programa candidato supera el límite de tiempo de espera, finaliza su subproceso de ejecución de inmediato. No permitas que falle el proceso candidato. En su lugar, compila y envía de inmediato una puntuación de penalización por falla grave (por ejemplo,
-100000.0) junto con una estadística de depuración descriptiva al servidor para liberar el bloqueo de la cola del programa.Filtros de seguridad del AST: Siempre ejecuta una verificación de inspección del árbol de sintaxis abstracta (AST) en la carga útil del código fuente entrante antes de la compilación. Se aborta la ejecución de inmediato y se aplica una penalización grave por falla si se detectan primitivas de reflexión o ejecución restringidas (como
eval,exec,getattrosetattr).
Recursos adicionales
Para obtener más información, consulta los siguientes recursos:
- AlphaEvolve en el Google Cloud repositorio de GitHub
- Referencia de la API de REST de AlphaEvolve
- Referencia de la API de RPC de AlphaEvolve