google / google/adk-python

AgentEngineSandboxCodeExecutor incompatible with Gemini 2.x models (MALFORMED_FUNCTION_CALL)

Đang mở
#5,315 3 bình luận 0 reaction 1 người được giao Được @sanketpatil06 nhận Xem trên GitHub
agent engine needs review
Ngôn ngữ chính
Python
Star
21.5k
Fork
4k
Merge trung bình
1 ngày 14 giờ
Pull request đã merge (30 ngày)
37

Mô tả

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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.