Gemini Deep Research Agent

Der Gemini Deep Research-Agent plant, führt aus und fasst mehrstufige Rechercheaufgaben selbstständig zusammen. Die Funktion basiert auf Gemini und kann komplexe Informationen verarbeiten, um detaillierte Berichte mit Quellenangaben zu erstellen. Neue Funktionen ermöglichen es Ihnen, gemeinsam mit dem Agent zu planen, über MCP-Server eine Verbindung zu externen Tools herzustellen, Visualisierungen (z. B. Diagramme) einzufügen und Dokumente direkt als Eingabe bereitzustellen.

Rechercheaufgaben erfordern iteratives Suchen und Lesen und können mehrere Minuten dauern. Sie müssen die Hintergrundausführung verwenden (background=true festlegen), um den Agenten asynchron auszuführen und die Ergebnisse abzufragen oder Updates zu streamen. Weitere Informationen finden Sie unter Lang andauernde Aufgaben verarbeiten.

Das folgende Beispiel zeigt, wie Sie eine Rechercheaufgabe im Hintergrund starten und nach Ergebnissen suchen.

Python

import time
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    input="Research the history of Google TPUs.",
    agent="deep-research-preview-04-2026",
    background=True,
)

print(f"Research started: {interaction.id}")

while True:
    interaction = client.interactions.get(interaction.id)
    if interaction.status == "completed":
        print(interaction.outputs[-1].text)
        break
    elif interaction.status == "failed":
        print(f"Research failed: {interaction.error}")
        break
    time.sleep(10)

JavaScript

import { GoogleGenAI } from '@google/genai';

const client = new GoogleGenAI({});

const interaction = await client.interactions.create({
    input: 'Research the history of Google TPUs.',
    agent: 'deep-research-preview-04-2026',
    background: true
});

console.log(`Research started: ${interaction.id}`);

while (true) {
    const result = await client.interactions.get(interaction.id);
    if (result.status === 'completed') {
        console.log(result.outputs[result.outputs.length - 1].text);
        break;
    } else if (result.status === 'failed') {
        console.log(`Research failed: ${result.error}`);
        break;
    }
    await new Promise(resolve => setTimeout(resolve, 10000));
}

REST

# 1. Start the research task
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "input": "Research the history of Google TPUs.",
    "agent": "deep-research-preview-04-2026",
    "background": true
}'

# 2. Poll for results (Replace INTERACTION_ID)
# curl -X GET "https://generativelanguage.googleapis.com/v1beta/interactions/INTERACTION_ID" \
# -H "x-goog-api-key: $GEMINI_API_KEY"

Unterstützte Versionen

Der Deep Research-Agent ist in zwei Versionen verfügbar:

  • Deep Research (deep-research-preview-04-2026): Dieses Modell ist auf Geschwindigkeit und Effizienz ausgelegt und eignet sich ideal für das Streaming zurück an eine Client-Benutzeroberfläche.
  • Deep Research Max (deep-research-max-preview-04-2026): Maximale Gründlichkeit bei der automatischen Kontextbeschaffung und ‑synthese.

Gemeinsame Planung

Durch die gemeinsame Planung haben Sie die Möglichkeit, die Richtung der Recherche zu bestimmen, bevor der Agent mit seiner Arbeit beginnt. Wenn diese Option aktiviert ist, gibt der Agent einen vorgeschlagenen Rechercheplan zurück, anstatt die Recherche sofort auszuführen. Anschließend können Sie den Plan in mehreren Schritten prüfen, ändern oder genehmigen.

Schritt 1: Abo/Plan anfordern

Legen Sie collaborative_planning=True in der ersten Interaktion fest. Der Agent gibt einen Rechercheplan anstelle eines vollständigen Berichts zurück.

Python

from google import genai

client = genai.Client()

# First interaction: request a research plan
plan_interaction = client.interactions.create(
    agent="deep-research-preview-04-2026",
    input="Do some research on Google TPUs.",
    agent_config={
        "type": "deep-research",
        "thinking_summaries": "auto",
        "collaborative_planning": True,
    },
    background=True,
)

# Wait for and retrieve the plan
while (result := client.interactions.get(id=plan_interaction.id)).status != "completed":
    time.sleep(5)
print(result.outputs[-1].text)

JavaScript

const planInteraction = await client.interactions.create({
    agent: 'deep-research-preview-04-2026',
    input: 'Do some research on Google TPUs.',
    agent_config: {
        type: 'deep-research',
        thinking_summaries: 'auto',
        collaborative_planning: true
    },
    background: true
});

let result;
while ((result = await client.interactions.get(planInteraction.id)).status !== 'completed') {
    await new Promise(r => setTimeout(r, 5000));
}
console.log(result.outputs[result.outputs.length - 1].text);

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "agent": "deep-research-preview-04-2026",
    "input": "Do some research on Google TPUs.",
    "agent_config": {
        "type": "deep-research",
        "thinking_summaries": "auto",
        "collaborative_planning": true
    },
    "background": true
}'

Schritt 2: Plan optimieren (optional)

Verwenden Sie previous_interaction_id, um die Unterhaltung fortzusetzen und den Plan zu optimieren. Halten Sie collaborative_planning=True gedrückt, um im Planungsmodus zu bleiben.

Python

# Second interaction: refine the plan
refined_plan = client.interactions.create(
    agent="deep-research-preview-04-2026",
    input="Focus more on the differences between Google TPUs and competitor hardware, and less on the history.",
    agent_config={
        "type": "deep-research",
        "thinking_summaries": "auto",
        "collaborative_planning": True,
    },
    previous_interaction_id=plan_interaction.id,
    background=True,
)

while (result := client.interactions.get(id=refined_plan.id)).status != "completed":
    time.sleep(5)
print(result.outputs[-1].text)

JavaScript

const refinedPlan = await client.interactions.create({
    agent: 'deep-research-preview-04-2026',
    input: 'Focus more on the differences between Google TPUs and competitor hardware, and less on the history.',
    agent_config: {
        type: 'deep-research',
        thinking_summaries: 'auto',
        collaborative_planning: true
    },
    previous_interaction_id: planInteraction.id,
    background: true
});

let result;
while ((result = await client.interactions.get(refinedPlan.id)).status !== 'completed') {
    await new Promise(r => setTimeout(r, 5000));
}
console.log(result.outputs[result.outputs.length - 1].text);

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "agent": "deep-research-preview-04-2026",
    "input": "Focus more on the differences between Google TPUs and competitor hardware, and less on the history.",
    "agent_config": {
        "type": "deep-research",
        "thinking_summaries": "auto",
        "collaborative_planning": true
    },
    "previous_interaction_id": "PREVIOUS_INTERACTION_ID",
    "background": true
}'

Schritt 3: Genehmigen und ausführen

Legen Sie collaborative_planning=False fest (oder lassen Sie es weg), um den Plan zu genehmigen und die Recherche zu starten.

Python

# Third interaction: approve the plan and kick off research
final_report = client.interactions.create(
    agent="deep-research-preview-04-2026",
    input="Plan looks good!",
    agent_config={
        "type": "deep-research",
        "thinking_summaries": "auto",
        "collaborative_planning": False,
    },
    previous_interaction_id=refined_plan.id,
    background=True,
)

while (result := client.interactions.get(id=final_report.id)).status != "completed":
    time.sleep(5)
print(result.outputs[-1].text)

JavaScript

const finalReport = await client.interactions.create({
    agent: 'deep-research-preview-04-2026',
    input: 'Plan looks good!',
    agent_config: {
        type: 'deep-research',
        thinking_summaries: 'auto',
        collaborative_planning: false
    },
    previous_interaction_id: refinedPlan.id,
    background: true
});

let result;
while ((result = await client.interactions.get(finalReport.id)).status !== 'completed') {
    await new Promise(r => setTimeout(r, 5000));
}
console.log(result.outputs[result.outputs.length - 1].text);

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "agent": "deep-research-preview-04-2026",
    "input": "Plan looks good!",
    "agent_config": {
        "type": "deep-research",
        "thinking_summaries": "auto",
        "collaborative_planning": false
    },
    "previous_interaction_id": "PREVIOUS_INTERACTION_ID",
    "background": true
}'

Visualisierung

Wenn visualization auf "auto" festgelegt ist, kann der Agent Diagramme, Grafiken und andere visuelle Elemente generieren, um seine Rechercheergebnisse zu untermauern. Generierte Bilder sind in den Antwortausgaben enthalten und werden als image-Deltas gestreamt. Die besten Ergebnisse erzielen Sie, wenn Sie in Ihrer Anfrage explizit nach Grafiken fragen, z. B. „Füge Diagramme mit Trends im Zeitverlauf ein“ oder „Erstelle Grafiken zum Vergleich des Marktanteils“. Wenn Sie visualization auf "auto" setzen, wird die Funktion aktiviert. Der Agent generiert jedoch nur dann Bilder, wenn sie im Prompt angefordert werden.

Python

import base64
from IPython.display import Image, display

interaction = client.interactions.create(
    agent="deep-research-preview-04-2026",
    input="Analyze global semiconductor market trends. Include graphics showing market share changes.",
    agent_config={
        "type": "deep-research",
        "visualization": "auto",
    },
    background=True,
)

print(f"Research started: {interaction.id}")

while (result := client.interactions.get(id=interaction.id)).status != "completed":
    time.sleep(5)

for output in result.outputs:
    if output.type == "text":
        print(output.text)
    elif output.type == "image" and output.data:
        image_bytes = base64.b64decode(output.data)
        print(f"Received image: {len(image_bytes)} bytes")
        # To display in a Jupyter notebook:
        # from IPython.display import display, Image
        # display(Image(data=image_bytes))

JavaScript

import { GoogleGenAI } from '@google/genai';

const client = new GoogleGenAI({});

const interaction = await client.interactions.create({
    agent: 'deep-research-preview-04-2026',
    input: 'Analyze global semiconductor market trends. Include graphics showing market share changes.',
    agent_config: {
        type: 'deep-research',
        visualization: 'auto'
    },
    background: true
});

console.log(`Research started: ${interaction.id}`);

let result;
while ((result = await client.interactions.get(interaction.id)).status !== 'completed') {
    await new Promise(r => setTimeout(r, 5000));
}

for (const output of result.outputs) {
    if (output.type === 'text') {
        console.log(output.text);
    } else if (output.type === 'image' && output.data) {
        console.log(`[Image Output: ${output.data.substring(0, 20)}...]`);
    }
}

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "agent": "deep-research-preview-04-2026",
    "input": "Analyze global semiconductor market trends. Include graphics showing market share changes.",
    "agent_config": {
        "type": "deep-research",
        "visualization": "auto"
    },
    "background": true
}'

Unterstützte Tools

Deep Research unterstützt mehrere integrierte und externe Tools. Standardmäßig (wenn kein tools-Parameter angegeben ist) hat der Agent Zugriff auf die Google Suche, den URL-Kontext und die Codeausführung. Sie können explizit Tools angeben, um die Funktionen des KI-Agenten einzuschränken oder zu erweitern.

Tool Typwert Beschreibung
Google Suche google_search Im öffentlichen Web suchen Standardmäßig aktiviert.
URL-Kontext url_context Webseiteninhalte lesen und zusammenfassen Standardmäßig aktiviert.
Codeausführung code_execution Code ausführen, um Berechnungen und Datenanalysen durchzuführen Standardmäßig aktiviert.
MCP-Server mcp_server Verbindung zu Remote-MCP-Servern für den Zugriff auf externe Tools herstellen
Dateisuche file_search Durchsuchen Sie Ihre hochgeladenen Dokumentkorpora.

Aktivieren Sie die Google Suche explizit als einziges Tool:

Python

interaction = client.interactions.create(
    agent="deep-research-preview-04-2026",
    input="What are the latest developments in quantum computing?",
    tools=[{"type": "google_search"}],
    background=True,
)

JavaScript

const interaction = await client.interactions.create({
    agent: 'deep-research-preview-04-2026',
    input: 'What are the latest developments in quantum computing?',
    tools: [{ type: 'google_search' }],
    background: true
});

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "agent": "deep-research-preview-04-2026",
    "input": "What are the latest developments in quantum computing?",
    "tools": [{"type": "google_search"}],
    "background": true
}'

URL-Kontext

Dem Agent die Möglichkeit geben, bestimmte Webseiten zu lesen und zusammenzufassen:

Python

interaction = client.interactions.create(
    agent="deep-research-preview-04-2026",
    input="Summarize the content of https://www.wikipedia.org/.",
    tools=[{"type": "url_context"}],
    background=True,
)

JavaScript

const interaction = await client.interactions.create({
    agent: 'deep-research-preview-04-2026',
    input: 'Summarize the content of https://www.wikipedia.org/.',
    tools: [{ type: 'url_context' }],
    background: true
});

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "agent": "deep-research-preview-04-2026",
    "input": "Summarize the content of https://www.wikipedia.org/.",
    "tools": [{"type": "url_context"}],
    "background": true
}'

Codeausführung

Erlauben Sie dem KI-Agenten, Code für Berechnungen und Datenanalysen auszuführen:

Python

interaction = client.interactions.create(
    agent="deep-research-preview-04-2026",
    input="Calculate the 50th Fibonacci number.",
    tools=[{"type": "code_execution"}],
    background=True,
)

JavaScript

const interaction = await client.interactions.create({
    agent: 'deep-research-preview-04-2026',
    input: 'Calculate the 50th Fibonacci number.',
    tools: [{ type: 'code_execution' }],
    background: true
});

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "agent": "deep-research-preview-04-2026",
    "input": "Calculate the 50th Fibonacci number.",
    "tools": [{"type": "code_execution"}],
    "background": true
}'

MCP-Server

Geben Sie den Server name und url in der Toolkonfiguration an. Sie können auch Authentifizierungsanmeldedaten übergeben und einschränken, welche Tools der Agent aufrufen kann.

Feld Typ Erforderlich Beschreibung
type string Ja Muss "mcp_server" lauten.
name string Nein Ein Anzeigename für den MCP-Server.
url string Nein Die vollständige URL für den MCP-Serverendpunkt.
headers object Nein Schlüssel/Wert-Paare, die mit jeder Anfrage an den Server als HTTP-Header gesendet werden (z. B. Authentifizierungstokens).
allowed_tools array Nein Einschränken, welche Tools vom Server aufgerufen werden dürfen.

Grundlegende Nutzung

Python

interaction = client.interactions.create(
    agent="deep-research-preview-04-2026",
    input="Check the status of my last server deployment.",
    tools=[
        {
            "type": "mcp_server",
            "name": "Deployment Tracker",
            "url": "https://mcp.example.com/mcp",
            "headers": {"Authorization": "Bearer my-token"},
        }
    ],
    background=True,
)

JavaScript

const interaction = await client.interactions.create({
    agent: 'deep-research-preview-04-2026',
    input: 'Check the status of my last server deployment.',
    tools: [
        {
            type: 'mcp_server',
            name: 'Deployment Tracker',
            url: 'https://mcp.example.com/mcp',
            headers: { Authorization: 'Bearer my-token' }
        }
    ],
    background: true
});

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "agent": "deep-research-preview-04-2026",
    "input": "Check the status of my last server deployment.",
    "tools": [
        {
            "type": "mcp_server",
            "name": "Deployment Tracker",
            "url": "https://mcp.example.com/mcp",
            "headers": {"Authorization": "Bearer my-token"}
        }
    ],
    "background": true
}'

Geben Sie dem Agent Zugriff auf Ihre eigenen Daten, indem Sie das Tool Dateisuche verwenden.

Python

import time
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    input="Compare our 2025 fiscal year report against current public web news.",
    agent="deep-research-preview-04-2026",
    background=True,
    tools=[
        {
            "type": "file_search",
            "file_search_store_names": ['fileSearchStores/my-store-name']
        }
    ]
)

JavaScript

const interaction = await client.interactions.create({
    input: 'Compare our 2025 fiscal year report against current public web news.',
    agent: 'deep-research-preview-04-2026',
    background: true,
    tools: [
        { type: 'file_search', file_search_store_names: ['fileSearchStores/my-store-name'] },
    ]
});

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "input": "Compare our 2025 fiscal year report against current public web news.",
    "agent": "deep-research-preview-04-2026",
    "background": true,
    "tools": [
        {"type": "file_search", "file_search_store_names": ["fileSearchStores/my-store-name"]},
    ]
}'

Steuerbarkeit und Formatierung

Sie können die Ausgabe des Agents steuern, indem Sie in Ihrem Prompt bestimmte Formatierungsanweisungen angeben. So können Sie Berichte in bestimmte Abschnitte und Unterabschnitte unterteilen, Datentabellen einfügen oder den Stil an verschiedene Zielgruppen anpassen (z.B. „technisch“, „Führungsebene“, „informell“).

Definieren Sie das gewünschte Ausgabeformat explizit in Ihrem Eingabetext.

Python

prompt = """
Research the competitive landscape of EV batteries.

Format the output as a technical report with the following structure:
1. Executive Summary
2. Key Players (Must include a data table comparing capacity and chemistry)
3. Supply Chain Risks
"""

interaction = client.interactions.create(
    input=prompt,
    agent="deep-research-preview-04-2026",
    background=True
)

JavaScript

const prompt = `
Research the competitive landscape of EV batteries.

Format the output as a technical report with the following structure:
1. Executive Summary
2. Key Players (Must include a data table comparing capacity and chemistry)
3. Supply Chain Risks
`;

const interaction = await client.interactions.create({
    input: prompt,
    agent: 'deep-research-preview-04-2026',
    background: true,
});

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "input": "Research the competitive landscape of EV batteries.\n\nFormat the output as a technical report with the following structure: \n1. Executive Summary\n2. Key Players (Must include a data table comparing capacity and chemistry)\n3. Supply Chain Risks",
    "agent": "deep-research-preview-04-2026",
    "background": true
}'

Multimodale Eingaben

Deep Research unterstützt multimodale Eingaben, einschließlich Bilder und Dokumente (PDFs). So kann der Agent visuelle Inhalte analysieren und webbasierte Recherchen durchführen, die durch die bereitgestellten Eingaben kontextualisiert werden.

Python

import time
from google import genai

client = genai.Client()

prompt = """Analyze the interspecies dynamics and behavioral risks present
in the provided image of the African watering hole. Specifically, investigate
the symbiotic relationship between the avian species and the pachyderms
shown, and conduct a risk assessment for the reticulated giraffes based on
their drinking posture relative to the specific predator visible in the
foreground."""

interaction = client.interactions.create(
    input=[
        {"type": "text", "text": prompt},
        {
            "type": "image",
            "uri": "https://storage.googleapis.com/generativeai-downloads/images/generated_elephants_giraffes_zebras_sunset.jpg"
        }
    ],
    agent="deep-research-preview-04-2026",
    background=True
)

print(f"Research started: {interaction.id}")

while True:
    interaction = client.interactions.get(interaction.id)
    if interaction.status == "completed":
        print(interaction.outputs[-1].text)
        break
    elif interaction.status == "failed":
        print(f"Research failed: {interaction.error}")
        break
    time.sleep(10)

JavaScript

import { GoogleGenAI } from '@google/genai';

const client = new GoogleGenAI({});

const prompt = `Analyze the interspecies dynamics and behavioral risks present
in the provided image of the African watering hole. Specifically, investigate
the symbiotic relationship between the avian species and the pachyderms
shown, and conduct a risk assessment for the reticulated giraffes based on
their drinking posture relative to the specific predator visible in the
foreground.`;

const interaction = await client.interactions.create({
    input: [
        { type: 'text', text: prompt },
        {
            type: 'image',
            uri: 'https://storage.googleapis.com/generativeai-downloads/images/generated_elephants_giraffes_zebras_sunset.jpg'
        }
    ],
    agent: 'deep-research-preview-04-2026',
    background: true
});

console.log(`Research started: ${interaction.id}`);

while (true) {
    const result = await client.interactions.get(interaction.id);
    if (result.status === 'completed') {
        console.log(result.outputs[result.outputs.length - 1].text);
        break;
    } else if (result.status === 'failed') {
        console.log(`Research failed: ${result.error}`);
        break;
    }
    await new Promise(resolve => setTimeout(resolve, 10000));
}

REST

# 1. Start the research task with image input
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "input": [
        {"type": "text", "text": "Analyze the interspecies dynamics and behavioral risks present in the provided image of the African watering hole. Specifically, investigate the symbiotic relationship between the avian species and the pachyderms shown, and conduct a risk assessment for the reticulated giraffes based on their drinking posture relative to the specific predator visible in the foreground."},
        {"type": "image", "uri": "https://storage.googleapis.com/generativeai-downloads/images/generated_elephants_giraffes_zebras_sunset.jpg"}
    ],
    "agent": "deep-research-preview-04-2026",
    "background": true
}'

# 2. Poll for results (Replace INTERACTION_ID)
# curl -X GET "https://generativelanguage.googleapis.com/v1beta/interactions/INTERACTION_ID" \
# -H "x-goog-api-key: $GEMINI_API_KEY"

Verständnis von Dokumenten

Dokumente direkt als multimodale Eingabe übergeben Der Agent analysiert die bereitgestellten Dokumente und führt auf deren Grundlage Recherchen durch.

Python

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    agent="deep-research-preview-04-2026",
    input=[
        {"type": "text", "text": "What is this document about?"},
        {
            "type": "document",
            "uri": "https://arxiv.org/pdf/1706.03762",
            "mime_type": "application/pdf",
        },
    ],
    background=True,
)

JavaScript

import { GoogleGenAI } from '@google/genai';

const client = new GoogleGenAI({});

const interaction = await client.interactions.create({
    agent: 'deep-research-preview-04-2026',
    input: [
        { type: 'text', text: 'What is this document about?' },
        {
            type: 'document',
            uri: 'https://arxiv.org/pdf/1706.03762',
            mime_type: 'application/pdf'
        }
    ],
    background: true
});

REST

# 1. Start the research task with document input
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "agent": "deep-research-preview-04-2026",
    "input": [
        {"type": "text", "text": "What is this document about?"},
        {"type": "document", "uri": "https://arxiv.org/pdf/1706.03762", "mime_type": "application/pdf"}
    ],
    "background": true
}'

Umgang mit lang andauernden Aufgaben

Deep Research ist ein mehrstufiger Prozess, der Planung, Suche, Lesen und Schreiben umfasst. Dieser Zyklus überschreitet in der Regel die Standard-Timeout-Limits für synchrone API-Aufrufe.

Für die Verwendung von background=True sind Agents erforderlich. Die API gibt sofort ein partielles Interaction-Objekt zurück. Mit dem Attribut id können Sie eine Interaktion für das Polling abrufen. Der Interaktionsstatus ändert sich von in_progress zu completed oder failed.

Streaming

Bei der Funktion „Umfassende Recherche“ können Sie Streaming aktivieren, um Echtzeit-Updates zum Fortschritt der Recherche zu erhalten, einschließlich Zusammenfassungen der Gedanken, Textausgabe und generierter Bilder. Sie müssen stream=True und background=True festlegen.

Wenn Sie Zwischenschritte (Gedanken) und Fortschrittsaktualisierungen erhalten möchten, müssen Sie Zusammenfassungen der Überlegungen aktivieren, indem Sie thinking_summaries in der agent_config auf "auto" festlegen. Andernfalls werden im Stream möglicherweise nur die Endergebnisse angezeigt.

Stream-Ereignistypen

Ereignistyp Deltatyp Beschreibung
content.delta thought_summary Zwischenschritt der Schlussfolgerung des KI-Agenten.
content.delta text Teil der endgültigen Textausgabe.
content.delta image Ein generiertes Bild (base64-codiert).

Im folgenden Beispiel wird eine Rechercheaufgabe gestartet und der Stream mit automatischer Wiederverbindung verarbeitet. Es werden die interaction_id und last_event_id verfolgt, sodass die Übertragung bei einem Verbindungsabbruch (z. B. nach dem 600-Sekunden-Zeitlimit) an der Stelle fortgesetzt werden kann, an der sie unterbrochen wurde.

Python

from google import genai

client = genai.Client()

interaction_id = None
last_event_id = None
is_complete = False

def process_stream(stream):
    global interaction_id, last_event_id, is_complete
    for chunk in stream:
        if chunk.event_type == "interaction.start":
            interaction_id = chunk.interaction.id
        if chunk.event_id:
            last_event_id = chunk.event_id
        if chunk.event_type == "content.delta":
            if chunk.delta.type == "text":
                print(chunk.delta.text, end="", flush=True)
            elif chunk.delta.type == "thought_summary":
                print(f"Thought: {chunk.delta.content.text}", flush=True)
        elif chunk.event_type in ("interaction.complete", "error"):
            is_complete = True

stream = client.interactions.create(
    input="Research the history of Google TPUs.",
    agent="deep-research-preview-04-2026",
    background=True,
    stream=True,
    agent_config={"type": "deep-research", "thinking_summaries": "auto"},
)
process_stream(stream)

# Reconnect if the connection drops
while not is_complete and interaction_id:
    status = client.interactions.get(interaction_id)
    if status.status != "in_progress":
        break
    stream = client.interactions.get(
        id=interaction_id, stream=True, last_event_id=last_event_id,
    )
    process_stream(stream)

JavaScript

import { GoogleGenAI } from '@google/genai';

const client = new GoogleGenAI({});

let interactionId;
let lastEventId;
let isComplete = false;

async function processStream(stream) {
    for await (const chunk of stream) {
        if (chunk.event_type === 'interaction.start') {
            interactionId = chunk.interaction.id;
        }
        if (chunk.event_id) lastEventId = chunk.event_id;
        if (chunk.event_type === 'content.delta') {
            if (chunk.delta.type === 'text') {
                process.stdout.write(chunk.delta.text);
            } else if (chunk.delta.type === 'thought_summary') {
                console.log(`Thought: ${chunk.delta.content.text}`);
            }
        } else if (['interaction.complete', 'error'].includes(chunk.event_type)) {
            isComplete = true;
        }
    }
}

const stream = await client.interactions.create({
    input: 'Research the history of Google TPUs.',
    agent: 'deep-research-preview-04-2026',
    background: true,
    stream: true,
    agent_config: { type: 'deep-research', thinking_summaries: 'auto' },
});
await processStream(stream);

// Reconnect if the connection drops
while (!isComplete && interactionId) {
    const status = await client.interactions.get(interactionId);
    if (status.status !== 'in_progress') break;
    const resumeStream = await client.interactions.get(interactionId, {
        stream: true, last_event_id: lastEventId,
    });
    await processStream(resumeStream);
}

REST

# 1. Start the stream (save the INTERACTION_ID from the interaction.start event
#    and the last "event_id" you receive)
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "input": "Research the history of Google TPUs.",
    "agent": "deep-research-preview-04-2026",
    "background": true,
    "stream": true,
    "agent_config": {
        "type": "deep-research",
        "thinking_summaries": "auto"
    }
}'

# 2. If the connection drops, reconnect with your saved IDs
curl -X GET "https://generativelanguage.googleapis.com/v1beta/interactions/INTERACTION_ID?stream=true&last_event_id=LAST_EVENT_ID" \
-H "x-goog-api-key: $GEMINI_API_KEY"

Folgefragen und Interaktionen

Sie können die Unterhaltung fortsetzen, nachdem der Agent den endgültigen Bericht zurückgegeben hat, indem Sie previous_interaction_id verwenden. So können Sie bestimmte Abschnitte der Recherche zusammenfassen, erläutern oder näher ausführen lassen, ohne die gesamte Aufgabe neu zu starten.

Python

import time
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    input="Can you elaborate on the second point in the report?",
    model="gemini-3.1-pro-preview",
    previous_interaction_id="COMPLETED_INTERACTION_ID"
)

print(interaction.outputs[-1].text)

JavaScript

const interaction = await client.interactions.create({
    input: 'Can you elaborate on the second point in the report?',
    model: 'gemini-3.1-pro-preview',
    previous_interaction_id: 'COMPLETED_INTERACTION_ID'
});
console.log(interaction.outputs[interaction.outputs.length - 1].text);

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "input": "Can you elaborate on the second point in the report?",
    "model": "gemini-3.1-pro-preview",
    "previous_interaction_id": "COMPLETED_INTERACTION_ID"
}'

Wann sollte der Gemini Deep Research-Agent verwendet werden?

Deep Research ist ein Agent und nicht nur ein Modell. Sie eignet sich am besten für Arbeitslasten, die einen „Analyst-in-a-Box“-Ansatz erfordern, anstatt Chat mit geringer Latenz.

Funktion Standard-Gemini-Modelle Gemini Deep Research-Agent
Latenz Sekunden Minuten (asynchron/im Hintergrund)
Ablauf Generieren -> Ausgabe Planen –> Suchen –> Lesen –> Wiederholen –> Ausgeben
Ausgabe Konversationstext, Code, kurze Zusammenfassungen Detaillierte Berichte, ausführliche Analysen, Vergleichstabellen
Optimal für Chatbots, Extraktion, kreatives Schreiben Marktanalyse, Due-Diligence-Prüfung, Literaturübersichten, Wettbewerbsanalyse

Agent-Konfiguration

Deep Research verwendet den Parameter agent_config, um das Verhalten zu steuern. Übergeben Sie es als Dictionary mit den folgenden Feldern:

Feld Typ Standard Beschreibung
type string Erforderlich Muss "deep-research" lauten.
thinking_summaries string "none" Auf "auto" gesetzt, um während des Streamings Zwischenschritte zu erhalten. Setzen Sie diesen Wert auf "none", um die Funktion zu deaktivieren.
visualization string "auto" Setzen Sie den Wert auf "auto", um von KI-Assistenten generierte Diagramme und Bilder zu aktivieren. Setzen Sie diesen Wert auf "off", um die Funktion zu deaktivieren.
collaborative_planning boolean false Wenn Sie true festlegen, können Sie den Plan mehrmals überprüfen, bevor die Recherche beginnt.

Python

agent_config = {
    "type": "deep-research",
    "thinking_summaries": "auto",
    "visualization": "auto",
    "collaborative_planning": False,
}

interaction = client.interactions.create(
    agent="deep-research-preview-04-2026",
    input="Research the competitive landscape of cloud GPUs.",
    agent_config=agent_config,
    background=True,
)

JavaScript

const interaction = await client.interactions.create({
    agent: 'deep-research-preview-04-2026',
    input: 'Research the competitive landscape of cloud GPUs.',
    agent_config: {
        type: 'deep-research',
        thinking_summaries: 'auto',
        visualization: 'auto',
        collaborative_planning: false,
    },
    background: true,
});

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
    "input": "Research the competitive landscape of cloud GPUs.",
    "agent": "deep-research-preview-04-2026",
    "agent_config": {
        "type": "deep-research",
        "thinking_summaries": "auto",
        "visualization": "auto",
        "collaborative_planning": false
    },
    "background": true
}'

Verfügbarkeit und Preisgestaltung

Sie können über die Interactions API in Google AI Studio und die Gemini API auf den Gemini Deep Research-Agent zugreifen.

Die Preise basieren auf einem Pay-as-you-go-Modell, das auf den zugrunde liegenden Gemini-Modellen und den spezifischen Tools basiert, die der Agent verwendet. Im Gegensatz zu Standard-Chatanfragen, bei denen eine Anfrage zu einer Ausgabe führt, ist eine Deep Research-Aufgabe ein agentischer Workflow. Eine einzelne Anfrage löst einen autonomen Zyklus aus Planung, Suche, Lesen und Schlussfolgern aus.

Geschätzte Kosten

Die Kosten variieren je nach Umfang der erforderlichen Recherche. Der KI-Agent entscheidet selbstständig, wie viel er lesen und suchen muss, um auf Ihren Prompt zu reagieren.

  • Deep Research (deep-research-preview-04-2026): Bei einer typischen Anfrage, die eine moderate Analyse erfordert, verwendet der Agent möglicherweise etwa 80 Suchanfragen, etwa 250.000 Eingabetokens (ca. 50–70% im Cache) und etwa 60.000 Ausgabetokens.
    • Geschätzte Gesamtsumme:1,00 $ bis 3,00 $ pro Aufgabe
  • Deep Research Max (deep-research-max-preview-04-2026): Für eine umfassende Analyse der Wettbewerbslandschaft oder eine umfangreiche Due Diligence-Prüfung kann der Agent bis zu etwa 160 Suchanfragen, etwa 900.000 Eingabetokens (50–70% im Cache) und etwa 80.000 Ausgabetokens verwenden.
    • Geschätzte Gesamtsumme:3,00$bis 7,00 $ pro Aufgabe

Sicherheitsaspekte

Wenn Sie einem Agent Zugriff auf das Web und Ihre privaten Dateien gewähren, müssen Sie die Sicherheitsrisiken sorgfältig abwägen.

  • Prompt-Injection über Dateien:Der Agent liest den Inhalt der von Ihnen bereitgestellten Dateien. Achten Sie darauf, dass hochgeladene Dokumente (PDFs, Textdateien) aus vertrauenswürdigen Quellen stammen. Eine schädliche Datei kann verborgenen Text enthalten, der die Ausgabe des Agents manipulieren soll.
  • Risiken bei Webinhalten:Der Agent durchsucht das öffentliche Web. Wir implementieren zwar robuste Sicherheitsfilter, es besteht jedoch das Risiko, dass der Agent auf schädliche Webseiten stößt und diese verarbeitet. Wir empfehlen, die in der Antwort bereitgestellten citations zu prüfen, um die Quellen zu überprüfen.
  • Exfiltration:Seien Sie vorsichtig, wenn Sie den Agent bitten, vertrauliche interne Daten zusammenzufassen, und ihm gleichzeitig erlauben, im Web zu suchen.

Best Practices

  • Aufforderung bei Unbekannten:Weisen Sie den Agent an, wie er mit fehlenden Daten umgehen soll. Fügen Sie Ihrem Prompt beispielsweise „Wenn keine spezifischen Zahlen für 2025 verfügbar sind, geben Sie explizit an, dass es sich um Schätzungen oder nicht verfügbare Daten handelt, anstatt sie zu schätzen“ hinzu.
  • Kontext bereitstellen:Geben Sie Hintergrundinformationen oder Einschränkungen direkt im Eingabeaufforderung an, um die Recherche des Agents zu fundieren.
  • Zusammenarbeit bei der Planung nutzen:Aktivieren Sie bei komplexen Anfragen die Zusammenarbeit bei der Planung, um den Rechercheplan vor der Ausführung zu prüfen und zu optimieren.
  • Multimodale Eingaben:Der Deep Research-Agent unterstützt multimodale Eingaben. Mit Vorsicht verwenden, da dies die Kosten erhöht und das Risiko eines Kontextfensterüberlaufs birgt.

Beschränkungen

  • Betastatus: Die Interactions API befindet sich in der öffentlichen Betaphase. Funktionen und Schemas können sich ändern.
  • Benutzerdefinierte Tools:Derzeit können Sie keine benutzerdefinierten Function Calling-Tools bereitstellen, aber Sie können Remote-MCP-Server (Model Context Protocol) mit dem Deep Research-Agenten verwenden.
  • Strukturierte Ausgabe:Der Deep Research Agent unterstützt derzeit keine strukturierte Ausgabe.
  • Maximale Recherchezeit:Der Deep Research-Agent hat eine maximale Recherchezeit von 60 Minuten. Die meisten Aufgaben sollten innerhalb von 20 Minuten abgeschlossen sein.
  • Store-Anforderung:Für die Agent-Ausführung mit background=True ist store=True erforderlich.
  • Google Suche:Die Google Suche ist standardmäßig aktiviert und für die fundierten Ergebnisse gelten bestimmte Einschränkungen.

Nächste Schritte