Este documento serve como referência da API oficial e de nível de produção e especificação do sistema para as APIs do Cloud AlphaEvolve nas camadas de conversação do Google CloudDiscovery Engine. Ele define as hierarquias de recursos aninhadas precisas, os endpoints REST e gRPC, as restrições no nível do campo, as máquinas de estado do ciclo de vida, as matrizes de diagnóstico de erros, as regras de sandbox de segurança e os fluxos de trabalho de integração necessários para projetar um controlador do lado do cliente e um loop de avaliação totalmente automatizados.
Máquinas de estado de ciclo de vida unificadas
O agente AlphaEvolve coordena duas máquinas de estado independentes para monitorar a progressão da campanha experimental e gerenciar a entrega e a execução de mutações de programas individuais.
Estados do ciclo de vida do experimento
Um experimento representa a campanha de otimização geral. Ele é processado como um recurso persistente do lado do servidor e passa pelos seguintes estados:
CREATED:o estado de inicialização. O recurso é declarado e configurado, mas ainda não preencheu as gerações iniciais nem enviou chamadas de API.RUNNING:o estado de avaliação ativo. O mecanismo está simultaneamente amostrando candidatos pai, gerando mutações de código por meio da mistura de LLMs e transmitindo tarefas para avaliadores.PAUSED:um estado de retenção temporário acionado manualmente ou por umaidle_timeoutde proteção automatizada. A geração de código é interrompida, e os workers existentes pausam o envio de métricas.COMPLETED: um estado terminal que indica que a pesquisa atendeu à meta de alocação demax_programsou atingiu o limite de geração estrutural.FAILED:um estado de erro terminal que indica que problemas sistêmicos do ambiente, como exceções de credenciais de API não capturadas, corrupção do repositório de dados ou pânicos consecutivos do executor, interromperam a execução do processamento.
Estados do programa
A sequência de validação do ambiente de execução é aplicada a variantes candidatas individuais.
Cada mutação de código gerada se comporta como uma entidade de programa isolada que passa por uma sequência de estados operacionais granulares no banco de dados da população.
INITIALIZED: a entrada do programa é criada no banco de dados, rastreando o pedigree ancestral e as vinculações do programa pai.GENERATING:uma tarefa é enviada ativamente ao back-end de mistura de modelos de linguagem para elaborar ou modificar os blocos de código funcionais específicos.EVALUATING:o payload do código é bloqueado por um processo de worker de avaliação e executado em um ambiente de arcabouço de testes isolado.COMPLETED:as pontuações de execução e os insights estruturais descritivos são confirmados com segurança no banco de dados evolutivo, e o programa é adicionado ao pool de seleção.
Mecânicas de simultaneidade e bloqueio
Os programas são adquiridos por loops de worker usando um mecanismo de token de bloqueio atômico para evitar disputas ou sobrecarga de pontuação duplicada em topologias distribuídas. O avaliador precisa enviar o esquema de pontuação finalizado com o token de bloqueio de correspondência exata para confirmar os resultados no banco de dados.
Esquemas de configuração e definições
Visão geral das principais configurações, parâmetros e padrões de esquema usados pelo ambiente de execução do mecanismo AlphaEvolve.
AlphaEvolveExperimentConfig
Define os principais parâmetros estruturais e as restrições programáticas da execução do experimento evolutivo.
| Nome do campo | Tipo | Padrão | Restrições / limites de valor | Descrição técnica |
|---|---|---|---|---|
title |
string | Obrigatório | Máximo de 256 caracteres | Nome de exibição exclusivo do experimento. |
problemDescription |
string | Obrigatório | Máximo de 5.000 caracteres | A especificação formal do problema. Ele é inserido diretamente nos contextos de comando para estabelecer regras. |
programLanguage |
string | Obrigatório | Valor de formato livre | Idioma de destino da base de código evoluída (por exemplo,
"python", "cpp", "verilog",
"cuda", "julia", "java"). |
runSettings |
objeto | Obrigatório | Mapeia para o esquema RunSettings |
Parâmetros de ritmo e tempo limite. |
generationSettings |
objeto | Opcional | Mapeia para o esquema GenerationSettings |
Seleção de modelo e parâmetros de contexto. |
evolutionSettings |
objeto | Opcional | Mapeia para o esquema EvolutionSettings |
Parâmetros de seleção de pais e diversidade. |
RunSettings
Controla o ritmo de processamento, os limites de paralelização e os tempos limite automáticos do sistema.
| Nome do campo | Tipo | Padrão | Restrições / limites de valor | Descrição técnica |
|---|---|---|---|---|
maxPrograms |
int32 | 100 | Mín.: 2, Máx.: 100.000 | Orçamento total de execução (programas para gerar e avaliar). Precisa ser maior que 1. |
concurrency |
int32 | 1 | Mín: 1, Máx: 30 | Número de mutações de programa paralelas ativas na fila. Valores maiores que 30 não são permitidos. |
maxDuration |
string | 24h (86.400s) | String dayTimeDuration ISO 8601 Mínimo: >0, Máximo: 7 dias |
Tempo total permitido antes que o experimento seja interrompido. |
idleTimeout |
string | 5h (EUA/UE) 2h (global) |
String dayTimeDuration ISO 8601 Mínimo: >0 Máximo: o padrão do local |
Duração da inatividade antes da transição automática
para PAUSED. O padrão é de 2 horas em global e 5 horas em
locais regionais (us, eu). A duração é
limitada pelo padrão do local. Portanto, especificar um valor acima do
padrão do local (por exemplo, 12h em global) é ignorado e
o valor é de 2 horas (sem erro). |
Configurações de geração
O esquema GenerationSettings controla a montagem do comando, as janelas de contexto
e as configurações do modelo para mutações:
context(string): documentação de referência opcional fornecida pelo usuário, APIs complementares ou regras. É altamente recomendável ficar abaixo de 200.000 tokens. Tamanhos de contexto que excedem 200.000 tokens diluem a atenção do modelo e prejudicam a qualidade da mutação.includeFullProgramInPrompt(bool): padrãofalse.true: o comando de mutação inclui oEVOLVE-BLOCKmutável e o boilerplate imutável ao redor (altamente recomendado para raciocínio estrutural complexo).false: somente o bloco mutável fica visível, salvando o contexto do token.
models(matriz de objetos): opcional. Cada entrada nomeia um modelo e atribui a ele umweightopcional, que é a parcela de chamadas de geração desse modelo em relação às outras entradas. Se você omitirmodels, o AlphaEvolve vai defini-lo como o modelo padrão ao criar o experimento. O padrão muda conforme novos modelos do Gemini são lançados. O modelo padrão lista qual modelo se aplica a qual data. Para escolher o modelo ou manter o mesmo modelo em todas as execuções, definamodels.O exemplo a seguir envia cerca de nove em cada dez chamadas de geração para o primeiro modelo e o restante para o segundo. Os pesos são proporções, então não precisam somar 1.
"models": [ { "name": "gemini-3.8-flash", "weight": 0.9 }, { "name": "gemini-3.1-pro-preview", "weight": 0.1 } ]
Modelos compatíveis
Defina models[].name como um dos valores a seguir. É possível combinar no máximo dois
modelos em um único experimento.
| Nome do modelo | Regiões de veiculação |
|---|---|
gemini-4-argon |
global, us, eu |
gemini-3.8-flash |
global, us, eu |
gemini-3.7-flash |
global, us, eu |
gemini-3.5-flash |
global, us, eu |
gemini-3.1-pro-preview |
global |
O AlphaEvolve valida models ao criar o experimento e retorna
INVALID_ARGUMENT para um nome de modelo que não está nesta tabela ou que não está
disponível na região solicitada.
Modelo padrão
A tabela a seguir lista o modelo que o AlphaEvolve usa quando você omite models,
por data de criação do experimento.
| Experimento criado | Modelo padrão |
|---|---|
| A partir de 24 de outubro de 2026 | gemini-4-argon |
| De 29 de setembro de 2026 a 23 de outubro de 2026 | gemini-3.8-flash |
| De 30 de junho de 2026 a 28 de setembro de 2026 | gemini-3.5-flash |
| Até 30 de junho de 2026 | gemini-2.5-flash |
Para identificar o modelo atribuído a um experimento, verifique
generationSettings.models na configuração do experimento ou na resposta de
criação. Como as mudanças entram em vigor ao longo do dia da transição,
os experimentos criados nessas datas podem receber o modelo padrão antigo
ou o novo. Os experimentos criados sem models antes de 30 de junho de 2026 não contêm
um valor para esse campo.
Como o modelo é armazenado em cada experimento, uma mudança no padrão não afeta os experimentos que já existem. Para usar um modelo padrão mais recente, crie um novo experimento.
Configurações do Evolution
O esquema EvolutionSettings controla a nova propagação do modelo de ilha e as probabilidades de amostragem pai:
parentSamplingConfig→paretoSamplingConfig→paretoSamplingProbability(float): a probabilidade (0,0 a 1,0) de amostrar programas pai diretamente da fronteira de Pareto ativa em vez de usar a seleção padrão baseada em fitness. Esse parâmetro precisa ser definido como0.0(desativado) se as métricas otimizadas retornarem apenas uma única métrica escalar.
Modelos de dados de programas candidatos
Esta seção descreve os esquemas e as representações de dados usados para definir e organizar as estruturas de código candidatas no banco de dados de população.
AlphaEvolveProgramContent
Define os arquivos e a estrutura do programa candidato.
files(matriz deAlphaEvolveSourceFile): uma lista de todos os arquivos que compõem a base de código candidata. O payload precisa conter pelo menos um arquivo de origem. O Google recomenda manter o total de arquivos em 50 por programa candidato. Isso garante a atenção ideal do modelo e a eficiência da janela de contexto.description(string): um resumo gerado automaticamente que descreve as mudanças programáticas sugeridas pelo modelo de geração (máximo de 1.000 caracteres).
AlphaEvolveSourceFile
Representa um arquivo de código-fonte individual na base de código.
path(string): o destino do caminho relativo ao espaço de trabalho (obrigatório, máximo de 256 caracteres). Cada entrada de arquivo de origem precisa especificar um caminho não vazio. Se você estiver configurando um espaço de trabalho do Python, o ponto de entrada do arquivo executável principal precisa ser nomeado exatamente como"initial_program.py".content(string): a string de código-fonte bruta que inclui os blocos de implementação funcional. O Google recomenda manter o tamanho cumulativo da base de código em todos os arquivos abaixo de 4.000 a 5.000 linhas de código (LOC). Isso é ideal para a atenção do modelo e a performance de geração de mutações.programLanguage(string): a tag de mapeamento do analisador de linguagem. Essa string precisa corresponder explicitamente ao idioma designado na configuração do experimento principal.description(string): um resumo opcional que descreve a arquitetura ou o propósito individual do arquivo, que é exposto ao LLM durante as transmissões de mutação (máximo de 500 caracteres).
AlphaEvolveProgramEvaluation
O payload estruturado enviado pelas instâncias do executor do cliente de volta ao banco de dados evolutivo após a execução do ambiente de execução.
scores(AlphaEvolveScores): valores de métricas numéricas padronizados e objetivos. As práticas recomendadas sugerem restringir isso a 3 a 5 métricas de ponto flutuante distintas. Dimensões de meta excessivas prejudicam o desempenho do comparador de Pareto multiobjetivo.insights(matriz deAlphaEvolveEvaluationInsight): rótulos semânticos de diagnóstico e traces de execução em linguagem natural transmitidos para ajudar nas tentativas subsequentes de geração de mutação do LLM (máximo recomendado de 10 itens).
Formulação de pontuação e formatos de ingestão
A regra de maximização
O AlphaEvolve opera fundamentalmente como um algoritmo de subida de colina monotônica e
maximiza estritamente todas as métricas numéricas. Se o pipeline de avaliação rastrear uma
meta de minimização (como minimizar a latência do aplicativo em milissegundos ou
reduzir o uso da memória), será necessário negar o valor antes de enviá-lo de volta ao
banco de dados: submitted_score = -latency_ms.
O ideal é que as pontuações sejam contínuas. As métricas booleanas ou altamente discretas não fornecem um sinal de gradiente suficiente para uma exploração eficaz de hill climbing.
Esquema de ingestão de objetivo único
Use o JSON a seguir quando o harness de avaliação otimizar em relação a uma única função de objetivo escalar.
{
"scores": {
"scores": [
{
"metric": "accuracy",
"score": 0.95
}
]
},
"insights": {
"insights": [
{
"label": "validation",
"text": "Passed syntax and basic compilation."
}
]
}
}
Esquema de ingestão de vários objetivos
Use o JSON a seguir ao transmitir parâmetros de acompanhamento multiobjetivo independentes para ativar as rotinas de otimização da fronteira de Pareto do lado do 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."
}
]
}
}
Como buscar e consultar dados do programa
O sistema AlphaEvolve registra o registro do sistema, as métricas de execução e o código-fonte completo de cada mutação gerada, permitindo que os desenvolvedores consultem esse repositório de dados histórico usando a API ou a CLI para acompanhar o progresso da otimização e extrair os candidatos de código com melhor desempenho.
Recuperação de programas usando a API REST
Os recursos do programa avaliados podem ser consultados no banco de dados usando o endpoint padrão ListAlphaEvolvePrograms com parâmetros de consulta de filtragem e classificação:
Filtragem de estado: consulte programas que correspondem a um estado de ciclo de vida específico:
GET /v1alpha/{parent}/alphaEvolvePrograms?state_filter=COMPLETEDClassificação com base em métricas: recupere candidatos classificados com base em métricas otimizadas:
GET /v1alpha/{parent}/alphaEvolvePrograms?order_by=accuracy desc,latency&page_size=5
Recuperação de programas usando a CLI
Para extrair os principais candidatos concluídos diretamente do terminal, execute o seguinte comando:
ae results best <experiment-nickname> --top 5
Exemplos completos de uso da CLI
A CLI do AlphaEvolve oferece aos desenvolvedores controle administrativo e monitoramento rápidos das campanhas diretamente do shell:
Liste todos os experimentos em uma sessão de conversação:
ae experiment listListe todos os programas candidatos mutados para um experimento específico:
ae program list EXPERIMENT_NICKNAME \ --state=COMPLETED \ --order_by="accuracy desc"Substitua EXPERIMENT_NICKNAME pelo nome do experimento.
Recupere os candidatos de código concluídos com melhor desempenho:
ae results best EXPERIMENT_NICKNAME --top 5Substitua EXPERIMENT_NICKNAME pelo nome do experimento.
Retomar uma campanha pausada:
ae experiment resume EXPERIMENT_NICKNAMESubstitua EXPERIMENT_NICKNAME pelo nome do experimento.
Diretório de endpoint de API REST principal
Todos os endpoints são versionados em v1alpha da API Discovery Engine Google Cloud .
Padrão de caminho do recurso pai
O URI do recurso pai aninhado verdadeiro é estruturado como:
projects/{project}/locations/{location}/collections/{collection}/engines/{engine}/sessions/{session}
- O AlphaEvolve está disponível em
global,useeu. A criação de experimentos em outros locais retornaFAILED_PRECONDITION. - Os projetos do Assured Workloads não são compatíveis.
- Um projeto é limitado a 30 experimentos AlphaEvolve ativos simultaneamente (
STARTEDouRUNNING) por local. Iniciar ou retomar um experimento que excede esse limite retornaRESOURCE_EXHAUSTED.
Criar experimento (POST)
Caminho:
POST v1alpha/{parent=projects/*/locations/*/collections/*/engines/*/sessions/*}/alphaEvolveExperimentsCorpo da solicitação:
AlphaEvolveExperimentConfig(consulte a Seção 2.1)Resposta:recurso
AlphaEvolveExperimentque contém a campanha inicializada.Status HTTP:200 OK
Exemplos de payload da API
Exemplo de corpo da solicitação (POST /alphaEvolveExperiments)
{ "config": { "title": "Sorting Optimization Campaign", "problemDescription": "Optimize the custom_heuristic function.", "programLanguage": "python", "runSettings": { "maxPrograms": 250, "concurrency": 8, "maxDuration": "86400s", "idleTimeout": "1800s" }, "generationSettings": { "context": "Ensure custom_heuristic is in-place.", "includeFullProgramInPrompt": true, "models": [ { "name": "gemini-3.8-flash", "weight": 1.0 } ] }, "evolutionSettings": { "parentSamplingConfig": { "paretoSamplingConfig": { "paretoSamplingProbability": 0.0 } } } } }Exemplo de corpo de resposta (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", "runSettings": { "maxPrograms": 250, "concurrency": 8, "maxDuration": "86400s", "idleTimeout": "1800s" }, "generationSettings": { "context": "Ensure custom_heuristic is in-place.", "includeFullProgramInPrompt": true, "models": [ { "name": "gemini-3.8-flash", "weight": 1.0 } ] }, "evolutionSettings": { "parentSamplingConfig": { "paretoSamplingConfig": { "paretoSamplingProbability": 0.0 } } } } }
Iniciar experimento (POST)
Caminho:
POST v1alpha/{name=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}:startCorpo da solicitação:
StartExperimentRequestAviso de descontinuação:o campo de corpo
initialProgramfoi descontinuado e é ignorado.Resposta:
GoogleLongrunningOperation(LRO).Status HTTP:200 OK (transições de estado de
CREATEDparaRUNNING)
Exemplos de payload da API
Exemplo de corpo da solicitação
{ "desiredProgramsCount": 1 }Exemplo de corpo de resposta (200 OK: operação de longa duração)
{ "name": "projects/.../operations/start-op-7788", "metadata": { "@type": "type.googleapis.com/.../AlphaEvolveStartExperimentMetadata", "createTime": "2026-06-23T13:31:00Z" }, "done": false }
Adquirir programas (POST)
Caminho:
POST v1alpha/{parent=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}:acquireProgramsCorpo da solicitação:
AcquireProgramsRequestdesiredProgramsCount(int32): contagem opcional de lotes de programas mutados a serem recuperados (o padrão é 1 quando não definido).
Status de resposta:
200 OK: retorna uma resposta que contém recursosAlphaEvolveProgrambloqueados.204 No Content: a fila está vazia ou a campanha está pausada. Os executores precisam suspender (por exemplo, 15 segundos) e tentar novamente.
Exemplos de payload da API
Exemplo de corpo da solicitação
{ "desiredProgramsCount": 1 }Exemplo de corpo de resposta (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 ..." } ] } } ] }Exemplo de corpo de resposta (204 No Content)
O status HTTP 204 foi retornado com um contexto de payload vazio.
Enviar avaliações de programas (POST)
Caminho:
POST v1alpha/{parent=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}:submitProgramsEvaluationsCorpo da solicitação:
SubmitProgramsEvaluationsRequestevaluationSubmissions(matriz): contém olockTokencorrespondente, o caminho do recurso do programa qualificado e o payload de avaliação (pontuações e insights). A API aceita exatamente um envio de avaliação por chamada. O agrupamento de várias avaliações em uma única solicitação é rejeitado comINVALID_ARGUMENT. Ao avaliar vários candidatos, envie cada programa individualmente.
Resposta:
SubmitProgramsEvaluationsResponse(vazia).Status HTTP:200 OK (salva as pontuações, libera o bloqueio ativo e registra insights)
Exemplos de payload da API
Exemplo de corpo da solicitação
{ "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." } ] } } } ] }Exemplo de corpo de resposta (200 OK)
{}
Retomar experimento (POST)
Caminho:
POST v1alpha/{name=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}:resumeCorpo da solicitação:
ResumeExperimentRequestResposta:
GoogleLongrunningOperation(LRO).Status HTTP:200 OK (o estado de transição muda de
PAUSEDde volta paraRUNNING)
Exemplos de payload da API
Exemplo de corpo da solicitação
{}Exemplo de corpo de resposta (200 OK: operação de longa duração)
{ "name": "projects/.../operations/resume-op-9900", "metadata": { "@type": "type.googleapis.com/.../AlphaEvolveResumeExperimentMetadata", "createTime": "2026-06-23T13:45:00Z" }, "done": false }
Listar programas (GET)
Caminho:
GET v1alpha/{parent=projects/*/locations/*/collections/*/engines/*/sessions/*/alphaEvolveExperiments/*}/alphaEvolveProgramsParâmetros de consulta:
stateFilter(string): opcional. Filtro de lista padrão, por exemplo,stateFilter = 'COMPLETED'.orderBy(string): opcional. Classificação com base em métricas, por exemplo,accuracy desc.
Resposta:
ListAlphaEvolveProgramsResponse.Status HTTP:200 OK
Exemplos de payload da API
Exemplo de URL de consulta de solicitação
GET v1alpha/projects/.../alphaEvolveExperiments/sort-opt-01/ alphaEvolvePrograms?stateFilter=COMPLETED&orderBy=latency_performance%20desc &pageSize=1Exemplo de corpo de resposta (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" }
Código de diagnóstico e referência para solução de problemas
Matriz de códigos de diagnóstico da API
| Status HTTP | Tipo de erro | Causa do sistema | Solução alternativa ou ação de mitigação |
|---|---|---|---|
| 400 | INVALID_ARGUMENT |
|
Verifique se os marcadores estão sozinhos na linha e se incluem pelo menos uma linha de código que não seja um comentário. Defina maxPrograms como 2 ou mais. Remova os campos que não fazem parte da API, como notes, que estava presente na versão de pré-lançamento da API. Envie as avaliações individualmente, uma por vez.
|
| 403 | PERMISSION_DENIED |
|
Conceda roles/discoveryengine.editor ou roles/discoveryengine.admin no nível do projeto e verifique o acesso à sessão pai. Verifique as licenças ativas do Gemini Enterprise. Configure as credenciais padrão do aplicativo:gcloud auth application-default login --project=PROJECT_IDObservação:o Model Armor não é compatível com as configurações do AlphaEvolve. |
| 400 | FAILED_PRECONDITION |
|
Retorne o lockToken exato retornado por :acquirePrograms. Aplique tempos limite do lado do cliente (recomendamos 30 minutos) e envie pontuações de penalidade de falha após o tempo limite. Recrie o experimento em um local compatível. Ative a API Vertex AI: gcloud services enable aiplatform.googleapis.com --project=PROJECT_ID.
|
| 429 | RESOURCE_EXHAUSTED |
|
Para o limite de experimentos ativos: conclua ou interrompa os experimentos em execução antes de iniciar um novo. Reduzir concurrency em runSettings não afeta esse limite. Para a cota de tokens do modelo: reduza concurrency em runSettings e implemente a espera exponencial.
|
| 503 | SERVICE_UNAVAILABLE |
O classificador de segurança de entrada está indisponível ou o serviço de back-end está temporariamente sobrecarregado. | Implementar um loop de repetição com espera exponencial aleatória no lado do cliente. |
Mensagens de erro comuns e soluções
A referência a seguir lista mensagens de erro comuns retornadas pela API, as causas subjacentes e as etapas de resolução.
Erros de análise do programa inicial e do EVOLVE-BLOCK
| Mensagem de erro | Causa do sistema | Solução alternativa ou ação de mitigação |
|---|---|---|
Parsing error: Unexpected evolve block delimiters in line <line_number>. Cannot be in the same line. |
Os marcadores EVOLVE-BLOCK-START e EVOLVE-BLOCK-END aparecem na mesma linha. |
Coloque os marcadores de início e fim em linhas separadas. |
Parsing error: Unexpected content on the same line as <marker> in line <line_number>. |
Código, texto ou caracteres à direita compartilham a linha com um marcador EVOLVE-BLOCK-START ou EVOLVE-BLOCK-END. |
Verifique se o marcador está sozinho na linha (precedido apenas pelo prefixo de comentário, como # EVOLVE-BLOCK-START). |
Parsing error: Unexpected evolve block start delimiter in line <line_number>. Cannot nest evolve blocks. |
Um marcador EVOLVE-BLOCK-START aparece dentro de um bloco de evolução já aberto. |
Remova os marcadores de início aninhados. Blocos de evolução aninhados não são compatíveis. |
Parsing error: Unexpected evolve block end delimiter in line <line_number>. No block started. |
Um marcador EVOLVE-BLOCK-END aparece sem um EVOLVE-BLOCK-START anterior. |
Verifique se cada marcador de fim é precedido por um marcador de início correspondente. |
Parsing error: Evolve block started but not ended. |
Um marcador EVOLVE-BLOCK-START foi encontrado sem um marcador de fechamento EVOLVE-BLOCK-END correspondente. |
Adicione um marcador de fechamento EVOLVE-BLOCK-END. |
Erros de conteúdo e estrutura do programa
| Mensagem de erro | Causa do sistema | Solução alternativa ou ação de mitigação |
|---|---|---|
Program content must contain at least one source file. |
program_content.source_files está vazio. |
Forneça pelo menos um arquivo de origem. |
source_files entries must have a non-empty path. |
Uma entrada de arquivo de origem tem uma string path vazia. |
Especifique um caminho relativo válido para cada arquivo de origem. |
source_files entry has empty content; path: <path> |
Uma entrada de arquivo de origem contém conteúdo de string vazio. | Preencha o conteúdo do arquivo. |
Program content must contain at least one EVOLVE-BLOCK-START / EVOLVE-BLOCK-END region with editable code between the markers (whitespace and comment-only regions don't count -- AlphaEvolve has nothing to mutate). |
Os blocos de evolução contêm apenas comentários, docstrings ou espaços em branco, sem código editável. | Inclua pelo menos uma linha de código editável (como definições de função ou lógica de algoritmo) dentro do bloco. |
Erros de validação de configuração e modelo
| Mensagem de erro | Causa do sistema | Solução alternativa ou ação de mitigação |
|---|---|---|
unsupported model: <model_name> |
O modelo solicitado não é compatível ou não está ativado para seu projeto. | Use modelos compatíveis. Consulte as Configurações de geração. |
model '<model_name>' is not served from domain shard '<location>'. |
O modelo não está disponível no local regional especificado. | Consulte as configurações de geração para saber quais modelos e locais são compatíveis. |
generation_settings.models must contain at most 2 distinct models; got <count>. |
Mais de duas configurações de modelo foram especificadas em generation_settings.models. |
Especifique no máximo dois modelos na combinação. |
generation_settings.models contains duplicate entry: <model_name> |
O mesmo nome de modelo aparece mais de uma vez em generation_settings.models. |
Remova as entradas de modelo duplicadas. |
generation_settings.models weight for <model_name> must be finite and strictly positive; got <weight>. Remove the entry instead of setting weight to zero. |
O peso de amostragem do modelo é negativo, zero ou não finito. | Defina um peso positivo ou remova a entrada. |
generation_settings.models temperature for <model_name> must be in [0.0, 2.0]; got <temperature>. |
A temperatura do modelo está fora do intervalo válido [0.0, 2.0]. |
Ajuste a temperatura para um valor entre 0.0 e 2.0. |
RunSettings.max_programs is required and must be greater than 1. |
max_programs foi omitido ou definido como 1 ou menos. |
Defina max_programs como 2 ou mais (um mínimo de 2 é necessário para admitir candidatos evoluídos). |
RunSettings.concurrency is required and must be positive. |
concurrency foi omitido ou definido como 0 ou menos. |
Defina concurrency como um número inteiro positivo (normalmente de 1 a 30). |
EvolutionSettings.pareto_sampling_probability must be in [0, 1]; got <probability>. |
pareto_sampling_probability está fora de [0.0, 1.0]. |
Defina uma probabilidade entre 0.0 e 1.0. |
Pré-requisitos do projeto e erros no ciclo de vida do experimento
| Mensagem de erro | Causa do sistema | Solução alternativa ou ação de mitigação |
|---|---|---|
AlphaEvolve requires the Vertex AI API to be enabled in this project. Enable it with: gcloud services enable aiplatform.googleapis.com --project=<project_id> |
A API Vertex AI (aiplatform.googleapis.com) não está ativada no projeto Google Cloud . |
Execute gcloud services enable aiplatform.googleapis.com --project=PROJECT_ID. |
Project has reached the limit of 30 concurrently active AlphaEvolve experiments in location <location>. Stop or wait for a running experiment to finish before starting or resuming another. |
O projeto atingiu a cota de 30 experimentos ativos simultaneamente (STARTED ou RUNNING) nesse local. |
Interrompa ou conclua os experimentos atuais antes de iniciar ou retomar um novo. |
Cannot <action> experiment from state <current_state> |
Tentativa de uma transição de estado inválida (por exemplo, iniciar um experimento que já está em execução ou retomar um experimento recém-criado). | Verifique se os experimentos seguem as transições padrão do ciclo de vida: CREATED → START, PAUSED/COMPLETED → RESUME, STARTED/RUNNING → STOP. |
Cannot resume experiment: a start or watchdog message is already pending. Stop the experiment first to drain it, or wait for the pending delivery to complete. |
Uma operação de início ou retomada anterior ainda está em andamento. | Aguarde a conclusão da entrega pendente ou chame STOP para drenar as mensagens pendentes. |
AlphaEvolve is not available for this project. |
O projeto está bloqueado ou é um perfil de compliance sem suporte. | Consulte Perfil de compliance e segurança. |
Erros de aquisição e avaliação do programa
| Mensagem de erro | Causa do sistema | Solução alternativa ou ação de mitigação |
|---|---|---|
Exactly one evaluation submission is required. |
Vários envios de avaliação foram agrupados em uma única solicitação submitProgramsEvaluations. |
Envie as avaliações individualmente, uma por chamada de API. |
Program is required for each evaluation submission. / submission.program is required. |
O caminho do recurso program não foi fornecido no envio da avaliação. |
Transmita o caminho completo do recurso do programa. |
Lock token is required for each evaluation submission. / submission.lock_token is required. |
O lock_token retornado durante acquirePrograms foi omitido. |
Transmita a string lock_token exata retornada quando o programa foi adquirido. |
Program <program_name> has unexpected lock token. Expected token: '<expected>', actual token: '<actual>' |
O token de bloqueio enviado no envio não corresponde à concessão do servidor ativo (por exemplo, a concessão expirou e outro worker a adquiriu ou um token incorreto foi fornecido). | Retorne o lockToken exato de acquirePrograms e envie os resultados antes que o tempo limite do cliente se esgote. |
Program <program_name> is not in expected state. Expected state: EVALUATION_IN_PROGRESS, actual state: <actual_state> |
O programa já foi avaliado, cancelado ou transferido de EVALUATION_IN_PROGRESS. |
Descarte a avaliação desatualizada ou adquira o candidato novamente, se disponível. |
The request was rejected by a safety policy. |
A descrição do problema de entrada, o código inicial ou as métricas de avaliação acionaram políticas de classificação de segurança. | Limpe o texto do comando e as descrições de problemas para remover palavras-chave ou rastros sensíveis. |
The input safety classifier is currently unavailable. |
O serviço de classificação de segurança está temporariamente inacessível ou sobrecarregado (falha fechada). | Implemente a lógica de repetição de espera exponencial. |
Como corrigir "quedas silenciosas"
Uma interceptação de filtro de segurança (descarte silencioso) ocorre quando os modelos de linguagem do lado do servidor sinalizam e descartam comandos candidatos modificados devido a frases sensíveis ou acionadores de regras de segurança. O servidor silencia a saída, fazendo com que a fila retorne respostas vazias, e os executores do cliente podem esperar indefinidamente.
Remediação alternativa:
Limpar o contexto:remova frases com carga emocional ou sensíveis à segurança do
problemDescription.Filtrar insights:analise e trunque rastreamentos de exceção brutos ou registros stderr de terminal no payload
insightspara evitar a repetição de conteúdo de sistema não seguro que aciona filtros downstream.Localize conjuntos de dados:não coloque registros de treinamento ou grandes corpora de texto em comandos. Carregue-os localmente no ambiente do cliente durante a execução do loop de avaliação.
Práticas recomendadas de avaliação do lado do cliente
O gargalo do "código espaguete"
A formatação de origem abaixo do ideal degrada a qualidade da otimização: "Código espaguete ==
espaço de pesquisa ruidoso". Antes de colocar marcadores EVOLVE-BLOCK:
Refatore os blocos de código para que as variáveis e as assinaturas de função sejam nomeadas com clareza.
Adicione docstrings descritivas e concisas explicando o que cada função ou variável faz e por quê. Verifique se as docstrings estão ao lado do código funcional real. Colocar apenas uma docstring ou comentários dentro de um
EVOLVE-BLOCKé rejeitado como um bloco vazio.Verifique se os marcadores de comentário
EVOLVE-BLOCK-STARTeEVOLVE-BLOCK-ENDestão sozinhos nas respectivas linhas, exceto por espaços em branco à esquerda e prefixos de comentário (como#ou//).Verifique se todas as dependências externas e imutáveis (como a importação de módulos auxiliares ou o carregamento de dados estáticos) estão fora do
EVOLVE-BLOCK.
Alocação da janela de contexto
Para maximizar a criatividade da mutação, limite o payload de código enviado à API. O contexto total do programa precisa permanecer abaixo de 150.000 a 200.000 tokens. Grandes blocos de código boilerplate estático e imutável consomem a atenção do modelo e prejudicam o desempenho. Mova scripts de utilitários, pipelines de ingestão de dados e bibliotecas de validação pesadas inteiramente para o avaliador do lado do cliente.
Primeiro, prepare o programa inicial
Antes de executar o AlphaEvolve, use um agente de programação padrão para depurar a base de código inicial e o avaliador:
Preparar a semente:corrija bugs de sintaxe óbvios, problemas de compilação e casos extremos.
Verifique a pontuação inicial:confira se a pontuação de referência é razoável e se o avaliador é totalmente determinista (mesmo código + mesma entrada = mesma pontuação).
Teste com entradas inválidas:execute o avaliador com funções intencionalmente corrompidas para confirmar se ele detecta problemas do compilador, lida com loops infinitos de maneira adequada e retorna pontuações de penalidade negativas altas.
Evite valores de referência excessivamente otimizados
Não transmita um programa de referência já altamente otimizado como semente. Se o programa inicial já estiver quase ideal, o AlphaEvolve terá dificuldade para fazer o hill climbing porque há pouco espaço para melhorias. Comece com um valor de referência razoável, mas não otimizado ao máximo. Isso dá ao AlphaEvolve espaço para explorar e fazer hill-climbing.
Proteções do executor do lado do cliente
Os avaliadores do lado do cliente precisam aplicar proteções rígidas para evitar que candidatos mal-intencionados, com uso intensivo de recursos ou que não respondem interrompam os workers paralelos:
Tempos limite estritos:aplique um limite de execução estrito de 30 minutos (ou menos, dependendo da estrutura do espaço de pesquisa).
Envio de penalidade de tempo limite:se uma variante do programa candidato exceder o limite de tempo limite, encerre a linha de execução imediatamente. Não permita que o processo candidato falhe. Em vez disso, compile e envie instantaneamente uma pontuação de penalidade de falha grave (por exemplo,
-100000.0) com um insight descritivo de depuração de volta ao servidor para liberar o bloqueio de fila do programa.Filtros de segurança de AST:sempre execute uma verificação de inspeção de árvore de sintaxe abstrata (AST, na sigla em inglês) no payload do código-fonte recebido antes da compilação. Interrompa imediatamente a execução e aplique uma penalidade de falha grave se primitivas de reflexão ou execução restritas (como
eval,exec,getattrousetattr) forem detectadas.
Outros recursos
Para saber mais, acesse os recursos a seguir: