google / google/adk-python

AgentEngineSandboxCodeExecutor incompatible with Gemini 2.x models (MALFORMED_FUNCTION_CALL)

Offen
#5,315 3 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @sanketpatil06 Auf GitHub ansehen
agent engine needs review
Vorherrschende Sprache
Python
Sterne
21.5k
Forks
4k
Ø Merge
1 T. 14 Std.
Gemergte PRs (30 T.)
37

Beschreibung

## 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)

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.