Vertex AI Extensions の非推奨に伴い、既存のワークフローを Gemini Enterprise Agent Platform(Agent Platform)に移行する必要があります。このガイドでは、3 つのコア拡張機能カテゴリの移行パスについて説明します。
コード インタープリタ拡張機能
移行先: Agent Platform Code Execution Sandbox
代替: Gemini API CodeExecution ツール
コード インタープリタ拡張機能は、Agent Platform コード実行サンドボックスに移行する必要があります。このマネージド サービスは、信頼できない AI 生成コードを実行するために特別に設計された、安全で分離されたステートフル サンドボックス環境を提供します。プログラムによる実行、財務計算、データ サイエンス ワークフローに最適です。
または、生成パス中に Gemini モデルがコードをネイティブに自動的に記述して実行することを希望する場合は、google-genai SDK の組み込み code_execution ツールを使用できます。
移行の例
Vertex AI Extensions:
from vertexai.preview import extensions
extension = extensions.Extension.from_hub("code_interpreter")
response = extension.execute(
operation_id="generate_and_execute_code",
operation_params={"code": "import math\nprint(math.sqrt(15376))"}
)
Agent Platform コード実行サンドボックス:
オプション 1: Agent Development Kit(ADK)を使用する
from google.adk.code_executors.agent_engine_sandbox_code_executor import (
AgentEngineSandboxCodeExecutor,
)
from vertexai.preview.reasoning_engines import Agent
root_agent = Agent(
model="gemini-2.0-flash-001",
name="agent_engine_code_execution_agent",
instruction=base_system_instruction()
+ """
You need to assist the user with their queries by looking at the data and the
context in the conversation. Your final answer should summarize the code and
code execution relevant to the user query.
Include all pieces of data required to answer the question, such as a table
from code execution results. If the query can be answered directly without
writing code, generate the textual response directly. Take care not to manually
run commands like `pip install`. When plotting trends, sort data by the x-axis.
""",
code_executor=AgentEngineSandboxCodeExecutor(
sandbox_resource_name=None,
agent_engine_resource_name=None,
),
)
オプション 2: GenAI クライアント SDK を使用する
from google import genai
# Initialize Gemini model
model = genai.Client().models
# Ask Gemini to generate code for a calculation
prompt = """
Write Python code to calculate the mean and standard deviation of these numbers:
[23, 45, 67, 89, 12, 34, 56]
Return only the Python code, no explanations.
"""
response = model.generate_content(
model="gemini-2.5-flash",
contents=prompt
)
generated_code = response.text.replace("```python", "").replace("```", "").strip()
# Execute the generated code in Agent Engine Sandbox using new pattern
exec_response = client.agent_engines.sandboxes.execute_code(
name=sandbox_resource_name,
input_data={"code": generated_code},
)
# Parse response with new file handling logic
for output in exec_response.outputs:
if output.mime_type == "application/json" and output.metadata is None:
result = json.loads(output.data.decode("utf-8"))
if result.get("msg_out"):
print(result.get("msg_out"))
if result.get("msg_err"):
print(f"Error occurred: {result.get('msg_err')}")
オプション 3: 動的な手動ツールとして定義する
import json
import re
from google.genai.types import FunctionDeclaration, Tool
def execute_python_code(code: str) -> str:
"""Execute Python code in a secure sandbox.
Args:
code: Python code to execute
Returns:
The output from code execution
"""
# Extract code block if wrapped in markdown
code_match = re.search(r"```python\n(.*?)\n```", code, re.DOTALL)
code_to_execute = code_match.group(1) if code_match else code
# Execute in sandbox
response = client.agent_engines.sandboxes.execute_code(
name=sandbox_resource_name, input_data={"code": code_to_execute}
)
# Parse response using new pattern
for output in response.outputs:
if output.mime_type == "application/json" and output.metadata is None:
result = json.loads(output.data.decode("utf-8"))
if result.get("msg_err"):
return f"Error: {result.get('msg_err')}"
return result.get("msg_out", "Code executed successfully")
return "Code executed (no output)"
# Create a tool from the function
code_tool = Tool(
function_declarations=[FunctionDeclaration.from_func(execute_python_code)]
)
Google 検索拡張機能
移行先: Google 検索によるグラウンディング
Google 検索によるグラウンディングに移行します。この機能により、モデルのレスポンスが信頼できる検索インデックスと最新の一般公開情報に固定され、事実性の高い回答が得られます。
移行の例
Vertex AI Extensions:
from vertexai.preview import extensions
extension = extensions.Extension.from_hub("google_search")
response = extension.execute(
operation_id="search",
operation_params={"query": "What is the next total solar eclipse in the US?"}
)
Google GenAI SDK を使用して Google 検索によるグラウンディングを行う:
from google import genai
from google.genai.types import GenerateContentConfig, GoogleSearch, Tool
client = genai.Client()
response = client.models.generate_content(
model="gemini-3.1-flash",
contents="When is the next total solar eclipse in the United States?",
config=GenerateContentConfig(
tools=[Tool(google_search=GoogleSearch())],
temperature=0.0,
),
)
print(response.text)
カスタムの拡張
移行先: 関数呼び出し(ツールの使用)
OpenAPI 仕様で構成したカスタム拡張機能を関数呼び出しに移行します。関数呼び出しを使用すると、ソースファイル内で外部プラットフォーム API を定義し、そのインターフェースの抽象化をモデルに転送できます。
移行の例
Vertex AI Extensions:
from vertexai.preview import extensions
extension = extensions.Extension.create(
manifest={
"name": "my_custom_api",
"apiSpec": {"openApiYaml": "..."}
}
)
Google GenAI SDK を使用したツール使用:
from google import genai
from google.genai.types import GenerateContentConfig
def get_order_status(order_id: str) -> str:
"""Returns the current status of a customer order.
Args:
order_id: The unique identifier of the order.
"""
statuses = {"123": "Shipped", "456": "Processing"}
return statuses.get(order_id, "Order not found")
client = genai.Client()
response = client.models.generate_content(
model="gemini-3.0-pro",
contents="Can you check the status of my order 123?",
config=GenerateContentConfig(
tools=[get_order_status],
),
)
print(response.text)