google / google/adk-python

AgentEngineSandboxCodeExecutor incompatible with Gemini 2.x models (MALFORMED_FUNCTION_CALL)

Abierto
#5,315 3 comentarios 0 reacciones 1 asignado Reclamado por @sanketpatil06 Ver en GitHub
agent engine needs review
Lenguaje dominante
Python
Estrellas
21.5k
Forks
4k
Merge medio
1 d 14 h
PR fusionados (30 d)
37

Descripción

## Description

`AgentEngineSandboxCodeExecutor` does not work with any Gemini 2.x model (`gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-2.0-flash`). All models produce `MALFORMED_FUNCTION_CALL` errors when attempting code execution.

## Root Cause

Gemini 2.x models always emit code as `executable_code` parts (native code execution format). However, the Gemini API rejects these parts with `MALFORMED_FUNCTION_CALL` because `code_execution` is not included in the tools configuration.

`AgentEngineSandboxCodeExecutor` expects the model to output code in markdown blocks (`` ```python ``), which it can then parse and route to the Agent Engine sandbox. But Gemini 2.x models never use markdown blocks — they always use the native format.

Meanwhile, `BuiltInCodeExecutor` works correctly because it adds `types.Tool(code_execution=types.ToolCodeExecution())` to the model's tool config, allowing the model to emit `executable_code` parts that the API accepts.

## Steps to Reproduce

1. Create an agent with `AgentEngineSandboxCodeExecutor` and any Gemini 2.x model
2. Deploy to Agent Engine
3. Ask the agent to execute Python code (e.g., "Use Python code execution to compute 7 * 8 + 3 ** 4")
4. Response returns `MALFORMED_FUNCTION_CALL` error

## Expected Behavior

`AgentEngineSandboxCodeExecutor` should add `code_execution` to the model's tool config (like `BuiltInCodeExecutor` does), then intercept the resulting `executable_code` parts and route them to the Agent Engine sandbox instead of letting the model execute them natively.

Note: `CodeExecutionUtils.extract_code_and_truncate_content` in ADK 1.29.0 already handles `executable_code` parts correctly — it just never gets a chance to run because the API rejects the model's response before ADK processes it.

## Environment

- ADK version: 1.28.1 and 1.29.0
- Models tested: `gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-2.0-flash`
- Platform: Agent Engine (Vertex AI)

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.