Bermigrasi dari Vertex AI Extensions ke Agent Platform

Dengan penghentian Vertex AI Extensions, alur kerja yang ada harus dimigrasikan ke Gemini Enterprise Agent Platform (Agent Platform). Panduan ini menjelaskan jalur migrasi untuk tiga kategori ekstensi inti:

Ekstensi Code Interpreter

Migrasi ke: Sandbox Eksekusi Kode Platform Agen Alternatif: Alat CodeExecution Gemini API

Ekstensi Code Interpreter harus dimigrasikan ke Sandbox Eksekusi Kode Platform Agen. Layanan terkelola ini menyediakan lingkungan sandbox yang aman, terisolasi, dan stateful yang dirancang khusus untuk menjalankan kode yang tidak tepercaya yang dibuat oleh AI. Layanan ini ideal untuk eksekusi terprogram, perhitungan keuangan, dan alur kerja ilmu data.

Atau, jika Anda lebih suka membiarkan model Gemini otomatis menulis dan menjalankan kode secara native selama proses pembuatan, Anda dapat menggunakan alat code_execution bawaan di google-genai SDK.

Contoh migrasi

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))"}
)

Sandbox Eksekusi Kode Platform Agen:

Opsi 1: Menggunakan 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,
    ),
)

Opsi 2: Menggunakan GenAI Client 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')}")

Opsi 3: Menentukan sebagai Alat manual dinamis

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

Ekstensi Google Penelusuran

Migrasi ke: Grounding dengan Google Penelusuran

Migrasikan ke Grounding dengan Google Penelusuran. Kemampuan ini menambatkan respons model dalam indeks penelusuran tepercaya dan informasi publik terbaru, sehingga menghasilkan tingkat faktualitas yang lebih tinggi.

Contoh migrasi

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?"}
)

Grounding dengan Google Penelusuran menggunakan Google GenAI SDK:

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)

Ekstensi kustom

Migrasi ke: Panggilan Fungsi (Penggunaan Alat)

Migrasikan ekstensi kustom yang Anda konfigurasi dengan spesifikasi OpenAPI ke Panggilan Fungsi. Panggilan fungsi memungkinkan Anda menentukan API platform eksternal dalam file sumber dan meneruskan abstraksi antarmukanya ke model.

Contoh migrasi

Vertex AI Extensions:

from vertexai.preview import extensions

extension = extensions.Extension.create(
    manifest={
        "name": "my_custom_api",
        "apiSpec": {"openApiYaml": "..."}
    }
)

Penggunaan Alat menggunakan 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)