Gemini Deep Research Agent có khả năng tự động lập kế hoạch, tìm kiếm và tổng hợp các tác vụ nghiên cứu dài hạn thành các báo cáo chi tiết, có trích dẫn nguồn đầy đủ.
Deep Research xử lý các tác vụ chạy lâu bằng cách thực thi trong nền (background). Tính năng này chỉ được cung cấp độc quyền thông qua Interactions API (không hỗ trợ qua
generate_content).Hiện tại có hai phiên bản mới trải nghiệm trước (preview):
-
deep-research-preview-04-2026: Được thiết kế tối ưu về tốc độ và hiệu suất, lý tưởng để truyền dữ liệu (stream) trực tiếp về giao diện người dùng (UI). -
deep-research-max-preview-04-2026: Mang lại độ toàn diện tối đa cho việc tự động thu thập và tổng hợp ngữ cảnh.
Các tính năng mới
- Lập kế hoạch cộng tác (Collaborative planning): Xem xét và tinh chỉnh kế hoạch nghiên cứu trước khi tiến hành thực thi.
- Biểu đồ & Đồ họa thông tin tích hợp sẵn (Native charts & infographics): Agent tự động tạo các biểu đồ, đồ thị và infographic trực quan.
- MCP server từ xa (Remote MCP server): Kết nối các công cụ bên ngoài thông qua Giao thức Ngữ cảnh Mô hình (Model Context Protocol).
- Mở rộng bộ công cụ (Extended tooling): Hỗ trợ Google Search, URL Context, Code Execution (thực thi mã), MCP và File Search (tìm kiếm tệp).
- Cơ sở nghiên cứu đa phương thức (Multimodal research grounding): Truyền hình ảnh, tệp PDF và âm thanh để làm ngữ cảnh nghiên cứu.
Thiết lập
Cài đặt Python SDK:
pip install google-genai
Thiết lập khóa API của bạn dưới dạng biến môi trường. Bạn có thể tạo khóa tại aistudio.google.com/apikey.
export GEMINI_API_KEY="your-api-key"
Chạy tác vụ Deep Research đầu tiên của bạn
Bắt đầu một tác vụ nghiên cứu với tham số
background=True và thực hiện thăm dò (poll) để nhận kết quả. Do các tác vụ của Deep Research có thể mất vài phút để hoàn thành, tiến trình này sẽ hoạt động theo cơ chế bất đồng bộ (asynchronous).
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,
)
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)
Lập kế hoạch cộng tác (Collaborative planning)
Thiết lập thuộc tính
collaborative_planning=True để nhận về một bản kế hoạch nghiên cứu thay vì khởi chạy tiến trình ngay lập tức. Bạn có thể lặp lại và tinh chỉnh kế hoạch này bằng cách sử dụng previous_interaction_id, sau đó đặt collaborative_planning=False để tiến hành thực thi.Bước 1: Yêu cầu lập kế hoạch
import time
from google import genai
client = genai.Client()
plan = client.interactions.create(
agent="deep-research-preview-04-2026",
input="Research Google TPUs vs competitor hardware.",
agent_config={"type": "deep-research", "collaborative_planning": True},
background=True,
)
while (result := client.interactions.get(id=plan.id)).status != "completed":
time.sleep(5)
print(result.outputs[-1].text)
Tinh chỉnh kế hoạch: Sử dụng previous_interaction_id để tiếp tục cuộc hội thoại. Hãy giữ nguyên thiết lập collaborative_planning=True để duy trì chế độ lập kế hoạch. Lặp lại bước này nếu cần thiết.
refined = client.interactions.create(
agent="deep-research-preview-04-2026",
input="Add a section comparing power efficiency.",
agent_config={"type": "deep-research", "collaborative_planning": True},
previous_interaction_id=plan.id,
background=True,
)
while (result := client.interactions.get(id=refined.id)).status != "completed":
time.sleep(5)
print(result.outputs[-1].text)
Phê duyệt và thực thi: Thiết lập
collaborative_planning=False để phê duyệt kế hoạch và bắt đầu quá trình nghiên cứu.Quan trọng: Bạn bắt buộc phải thiết lập rõ ràng
collaborative_planning=False ở lượt tương tác cuối cùng này. Nếu chỉ gửi một câu lệnh đồng ý đơn thuần như "go ahead" (tiến hành đi) mà không chuyển đổi giá trị flag (cờ hiệu) này sang False, hệ thống sẽ không kích hoạt quá trình tạo báo cáo.
report = client.interactions.create(
agent="deep-research-preview-04-2026",
input="Plan looks good!",
agent_config={"type": "deep-research", "collaborative_planning": False},
previous_interaction_id=refined.id,
background=True,
)
while (result := client.interactions.get(id=report.id)).status != "completed":
time.sleep(5)
print(result.outputs[-1].text)
Biểu đồ và đồ họa thông tin tích hợp sẵn (Native charts and infographics)
Thiết lập thuộc tính
visualization="auto" và yêu cầu hình ảnh trực quan trong câu lệnh (prompt) của bạn. Agent sẽ tạo ra các biểu đồ và đồ họa thông tin (infographics) dưới dạng ảnh mã hóa base64.
import base64
from google import genai
client = genai.Client()
interaction = client.interactions.create(
agent="deep-research-preview-04-2026",
input="Analyze global semiconductor market trends. Include charts showing market share changes.",
agent_config={"type": "deep-research", "visualization": "auto"},
background=True,
)
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)
# display(Image(data=image_bytes)) # Dùng cho Jupyter Notebook
Mẹo: Việc thiết lập
visualization="auto" sẽ kích hoạt tính năng này, nhưng để đạt kết quả tốt nhất, bạn nên yêu cầu rõ ràng những gì mình muốn hiển thị trong prompt.Kết nối MCP server từ xa (Remote MCP servers)
Kết nối các MCP server từ xa để cung cấp cho agent quyền truy cập vào các công cụ bên ngoài. Hãy truyền các tham số gồm tên server (name), đường dẫn (url) và các tiêu đề xác thực tùy chọn (headers).
interaction = client.interactions.create(
agent="deep-research-preview-04-2026",
input="Research how recent geopolitical events influenced USD interest rates",
tools=[
{
"type": "mcp_server",
"name": "Finance Data Provider",
"url": "https://finance.example.com/mcp",
"headers": {"Authorization": "Bearer my-token"},
}
],
background=True,
)
Các MCP server hỗ trợ chế độ không xác thực (no-auth), mã thông báo Bearer (bearer token) và OAuth. Đối với OAuth, hãy lấy mã thông báo bằng một thư viện như
google-auth rồi truyền nó vào trong headers. Bạn cũng có thể sử dụng thuộc tính allowed_tools để giới hạn các công cụ mà agent được phép gọi từ server.Cấu hình công cụ (Tool configuration)
Theo mặc định, agent sẽ sử dụng Google Search, URL Context và Code Execution. Bạn có thể tùy chỉnh các công cụ mà agent được phép sử dụng bằng cách cung cấp một danh sách
tools (tương tự như cách cấu hình cho các mô hình thông thường). Điều này cho phép bạn thiết lập, ví dụ như: chỉ tìm kiếm trên web (qua Google Search và url_context), chỉ tìm kiếm các nguồn nội bộ/riêng tư (qua file_search và các MCP server tùy chỉnh), hoặc kết hợp cả hai.| Loại công cụ (Tool Type) | Tên công cụ (Default) | Mặc định | Mô tả |
|---|---|---|---|
| Google Search | Google Search | ✅ | Tìm kiếm trên web công cộng |
| URL Context | url_context | ✅ | Đọc và tóm tắt nội dung các trang web |
| Code Execution | code_execution | ✅ | Chạy mã để tính toán và phân tích dữ liệu |
| MCP Server | mcp_server | — | Kết nối với các MCP server từ xa |
| File Search | file_search | — | Tìm kiếm trong kho tài liệu đã tải lên |
# Chỉ cho phép tìm kiếm web
interaction = client.interactions.create(
agent="deep-research-preview-04-2026",
input="Latest developments in quantum computing.",
tools=[{"type": "google_search"}],
background=True,
)
Lưu ý: Nếu bạn không truyền bất kỳ công cụ nào vào tham số tools, hệ thống sẽ tự động kích hoạt mặc định ba công cụ là Search, URL Context và Code Execution.
Cơ sở nghiên cứu đa phương thức (Multimodal research grounding)
Truyền hình ảnh, tệp PDF và tài liệu cùng với prompt văn bản của bạn để làm cơ sở dữ liệu nền tảng cho việc nghiên cứu.
interaction = client.interactions.create(
agent="deep-research-preview-04-2026",
input=[
{"type": "text", "text": "What has been the impact of this research paper?"},
{"type": "document", "uri": "https://arxiv.org/pdf/1706.03762", "mime_type": "application/pdf"},
],
background=True,
)
Truyền phát thời gian thực kèm hình ảnh và tóm tắt suy nghĩ (Real-time streaming)
Truyền phát (stream) tiến trình nghiên cứu trong thời gian thực. Hãy bật
thinking_summaries="auto" để nhận các lập luận trung gian (suy nghĩ từng bước) của agent song song với văn bản và hình ảnh được tạo ra.
import base64
from google import genai
from IPython.display import Image, display
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"n💭 {chunk.delta.content.text}", flush=True)
elif chunk.delta.type == "image" and chunk.delta.data:
image_bytes = base64.b64decode(chunk.delta.data)
display(Image(data=image_bytes))
elif chunk.event_type in ("interaction.complete", "error"):
is_complete = True
if chunk.event_type == "interaction.complete":
print("n✅ Research Complete")
stream = client.interactions.create(
input="Research AI chip market trends. Include charts comparing vendors.",
agent="deep-research-preview-04-2026",
background=True,
stream=True,
agent_config={
"type": "deep-research",
"thinking_summaries": "auto",
"visualization": "auto",
},
)
process_stream(stream)
# Kết nối lại nếu kết nối bị ngắt quãng giữa chừng
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)
Nguồn bài viết từ Tác giả Phil Schmid