ब्राउज़र उपकरण
adk-browser क्रेट 46 व्यापक ब्राउज़र ऑटोमेशन उपकरण प्रदान करता है जो AI एजेंटों को वेब पेजों के साथ इंटरैक्ट करने में सक्षम बनाते हैं। WebDriver प्रोटोकॉल (Selenium) पर निर्मित, यह किसी भी WebDriver-संगत ब्राउज़र के साथ काम करता है।
अवलोकन
ब्राउज़र उपकरण एजेंटों को इसकी अनुमति देते हैं:
- वेब पेजों पर नेविगेट करें और ब्राउज़र इतिहास प्रबंधित करें
- टेक्स्ट, लिंक, इमेज और संरचित डेटा निकालें
- फ़ॉर्म भरें और पेज तत्वों के साथ इंटरैक्ट करें
- स्क्रीनशॉट लें और PDFs जेनरेट करें
- उन्नत ऑटोमेशन के लिए JavaScript निष्पादित करें
- कुकीज़, फ़्रेम और कई विंडो प्रबंधित करें
त्वरित शुरुआत
अपने Cargo.toml में जोड़ें:
[dependencies]
adk-browser = "2.0.0"
adk-agent = "2.0.0"
adk-model = "2.0.0"
पूर्वापेक्षाएँ
एक WebDriver सर्वर शुरू करें:
# Using Docker (recommended)
docker run -d -p 4444:4444 -p 7900:7900 --shm-size=2g selenium/standalone-chrome:latest
# Or use ChromeDriver directly
chromedriver --port=4444
मूल उपयोग
use adk_browser::{BrowserSession, BrowserToolset, BrowserConfig};
use adk_agent::LlmAgentBuilder;
use adk_model::GeminiModel;
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Configure browser session
let config = BrowserConfig::new()
.webdriver_url("http://localhost:4444")
.headless(true)
.viewport(1920, 1080);
// Create and start browser session
let browser = Arc::new(BrowserSession::new(config));
browser.start().await?;
// Create toolset with all 46 tools
let toolset = BrowserToolset::new(browser.clone());
let tools = toolset.all_tools();
// Create AI agent with browser tools
let api_key = std::env::var("GOOGLE_API_KEY")?;
let model = Arc::new(GeminiModel::new(&api_key, "gemini-2.5-flash")?);
let mut builder = LlmAgentBuilder::new("web_agent")
.model(model)
.instruction("You are a web automation assistant. Use browser tools to help users.");
for tool in tools {
builder = builder.tool(tool);
}
let agent = builder.build()?;
// Clean up when done
browser.stop().await?;
Ok(())
}
फ़िल्टर्ड उपकरण
केवल वे उपकरण चुनें जिनकी आपके एजेंट को आवश्यकता है:
let toolset = BrowserToolset::new(browser)
.with_navigation(true) // navigate, back, forward, refresh
.with_extraction(true) // extract_text, extract_attribute, extract_links, page_info, page_source
.with_interaction(true) // click, double_click, type, clear, select
.with_wait(true) // wait_for_element, wait, wait_for_page_load, wait_for_text
.with_screenshot(true) // screenshot
.with_js(true) // evaluate_js, scroll, hover, handle_alert
.with_cookies(false) // Disable cookie tools
.with_frames(false) // Disable frame tools
.with_windows(false) // Disable window tools
.with_actions(false); // Disable advanced actions
let tools = toolset.all_tools();
Multi-Tenant Usage Pool-Backed Toolsets के साथ
उत्पादन मल्टी-टेनेंट डिप्लॉयमेंट के लिए, BrowserToolset::with_pool() का उपयोग LlmAgentBuilder::toolset() के साथ करें। प्रत्येक उपयोगकर्ता को रनटाइम पर पूल से एक अलग ब्राउज़र सेशन मिलता है:
use adk_browser::{BrowserSessionPool, BrowserToolset, BrowserConfig, BrowserProfile};
use adk_agent::LlmAgentBuilder;
use std::sync::Arc;
let pool = Arc::new(BrowserSessionPool::new(BrowserConfig::new(), 10));
// Pool-backed toolset — sessions resolved per-user via ctx.user_id()
let toolset = Arc::new(BrowserToolset::with_pool_and_profile(
pool,
BrowserProfile::Scraping,
));
let agent = LlmAgentBuilder::new("web_agent")
.model(model)
.instruction("You are a web research assistant.")
.toolset(toolset)
.build()?;
ब्राउज़र सेशन स्वचालित रूप से शुरू होते हैं और बासी WebDriver कनेक्शन से स्वचालित रूप से रिकवर होते हैं। टूल का उपयोग करने से पहले आपको browser.start() को कॉल करने की आवश्यकता नहीं है — सेशन पहली बार उपयोग करने पर पारदर्शी रूप से शुरू होता है।
उपलब्ध उपकरण (कुल 46)
नेविगेशन (4 उपकरण)
| उपकरण | विवरण |
|---|---|
browser_navigate | URL पर जाएँ |
browser_back | इतिहास में वापस जाएं |
browser_forward | इतिहास में आगे बढ़ें |
browser_refresh | वर्तमान पृष्ठ को रीफ़्रेश करें |
निष्कर्षण (5 उपकरण)
| उपकरण | विवरण |
|---|---|
browser_extract_text | एलिमेंट से दृश्यमान टेक्स्ट निकालें |
browser_extract_attribute | तत्व से विशेषता मान प्राप्त करें |
browser_extract_links | पृष्ठ पर सभी लिंक निकालें |
browser_page_info | वर्तमान URL प्राप्त करें और शीर्षक |
browser_page_source | HTML स्रोत प्राप्त करें |
इंटरैक्शन (5 टूल)
| उपकरण | विवरण |
|---|---|
browser_click | एक तत्व पर क्लिक करें |
browser_double_click | एक तत्व पर डबल-क्लिक करें |
browser_type | एलिमेंट में टेक्स्ट टाइप करें |
browser_clear | एक इनपुट फ़ील्ड साफ़ करें |
browser_select | ड्रॉपडाउन विकल्प चुनें |
प्रतीक्षा करें (4 उपकरण)
| उपकरण | विवरण |
|---|---|
browser_wait_for_element | तत्व के प्रकट होने की प्रतीक्षा करें |
browser_wait | एक अवधि के लिए प्रतीक्षा करें |
browser_wait_for_page_load | पृष्ठ के लोड होने की प्रतीक्षा करें |
browser_wait_for_text | टेक्स्ट के प्रकट होने की प्रतीक्षा करें |
स्क्रीनशॉट (1 टूल)
| उपकरण | विवरण |
|---|---|
browser_screenshot | पृष्ठ या तत्व का स्क्रीनशॉट कैप्चर करें |
JavaScript (4 उपकरण)
| उपकरण | विवरण |
|---|---|
browser_evaluate_js | JavaScript कोड निष्पादित करें |
browser_scroll | पृष्ठ को स्क्रॉल करें |
browser_hover | एक तत्व पर होवर करें |
browser_handle_alert | JavaScript अलर्ट संभालें |
कुकीज़ (5 उपकरण)
| उपकरण | विवरण |
|---|---|
browser_get_cookies | सभी कुकीज़ प्राप्त करें |
browser_get_cookie | विशिष्ट कुकी प्राप्त करें |
browser_add_cookie | एक कुकी जोड़ें |
browser_delete_cookie | एक कुकी हटाएँ |
browser_delete_all_cookies | सभी कुकीज़ हटाएँ |
विंडोज/टैब (8 उपकरण)
| उपकरण | विवरण |
|---|---|
browser_list_windows | सभी विंडो/टैब सूचीबद्ध करें |
browser_new_tab | नया टैब खोलें |
browser_new_window | नई विंडो खोलें |
browser_switch_window | विंडो पर स्विच करें |
browser_close_window | वर्तमान विंडो बंद करें |
browser_maximize_window | विंडो को अधिकतम करें |
browser_minimize_window | विंडो को छोटा करें |
browser_set_window_size | विंडो का आकार सेट करें |
फ्रेम (3 tools)
| उपकरण | विवरण |
|---|---|
browser_switch_to_frame | iframe पर स्विच करें |
browser_switch_to_parent_frame | पैरेंट फ्रेम पर स्विच करें |
browser_switch_to_default_content | मुख्य दस्तावेज़ पर स्विच करें |
कार्य (7 Tool)
| उपकरण | विवरण |
|---|---|
browser_drag_and_drop | ड्रैग एंड ड्रॉप तत्व |
browser_right_click | एलिमेंट पर राइट-क्लिक करें |
browser_focus | तत्व पर ध्यान केंद्रित करें |
browser_element_state | तत्व की स्थिति प्राप्त करें (दृश्यमान, सक्षम, चयनित) |
browser_press_key | कीबोर्ड कुंजी दबाएँ |
browser_file_upload | इनपुट में फ़ाइल अपलोड करें |
browser_print_to_pdf | जनरेट करें PDF पेज से |
तत्व चयनकर्ता
जो तत्वों को लक्षित करते हैं वे टूल CSS चयनकर्ताओं को स्वीकार करते हैं:
// By ID
"#login-button"
// By class
".submit-btn"
// By tag and attribute
"input[type='email']"
// By data attribute
"[data-testid='search']"
// Complex selectors
"form.login input[name='password']"
// Nth child
"ul.menu li:nth-child(3)"
उदाहरण: Web Research Agent
use adk_browser::{BrowserSession, BrowserToolset, BrowserConfig};
use adk_agent::LlmAgentBuilder;
use std::sync::Arc;
let config = BrowserConfig::new().webdriver_url("http://localhost:4444");
let browser = Arc::new(BrowserSession::new(config));
browser.start().await?;
let toolset = BrowserToolset::new(browser.clone())
.with_navigation(true)
.with_extraction(true)
.with_screenshot(true);
let mut builder = LlmAgentBuilder::new("researcher")
.model(model)
.instruction(r#"
You are a web research assistant. When asked about a topic:
1. Navigate to relevant websites using browser_navigate
2. Extract key information using browser_extract_text
3. Take screenshots of important content using browser_screenshot
4. Summarize your findings
"#);
for tool in toolset.all_tools() {
builder = builder.tool(tool);
}
let agent = builder.build()?;
उदाहरण: Form Automation
let agent = LlmAgentBuilder::new("form_filler")
.model(model)
.instruction(r#"
You are a form automation assistant. To fill forms:
1. Use browser_navigate to go to the form page
2. Use browser_extract_text to see form labels
3. Use browser_type to fill text fields
4. Use browser_select for dropdowns
5. Use browser_click to submit
"#)
.build()?;
कॉन्फ़िगरेशन
let config = BrowserConfig::new()
.webdriver_url("http://localhost:4444")
.headless(true)
.viewport(1920, 1080)
.page_load_timeout(30)
.user_agent("Custom User Agent");
let browser = Arc::new(BrowserSession::new(config));
browser.start().await?;
WebDriver विकल्प
किसी भी WebDriver-संगत सर्वर के साथ काम करता है:
| सर्वर | कमांड |
|---|---|
| Selenium (Chrome) | docker run -d -p 4444:4444 selenium/standalone-chrome |
| Selenium (Firefox) | docker run -d -p 4444:4444 selenium/standalone-firefox |
| ChromeDriver | chromedriver --port=4444 |
| GeckoDriver | geckodriver --port=4444 |
त्रुटि प्रबंधन
ब्राउज़र टूल संरचित त्रुटियाँ लौटाते हैं:
match result {
Ok(value) => println!("Success: {:?}", value),
Err(e) => {
match e {
BrowserError::ElementNotFound(selector) => {
println!("Could not find element: {}", selector);
}
BrowserError::Timeout(duration) => {
println!("Operation timed out after {:?}", duration);
}
BrowserError::SessionClosed => {
println!("Browser session was closed");
}
_ => println!("Browser error: {}", e),
}
}
}
उदाहरण
cargo check -p adk-browser
cargo check -p adk-rust --no-default-features --features browser
सर्वोत्तम अभ्यास
- प्रतीक्षा का उपयोग करें: गतिशील सामग्री के साथ इंटरैक्ट करने से पहले हमेशा
browser_wait_*टूल का उपयोग करें - स्क्रीनशॉट कम करें: स्क्रीनशॉट महंगे होते हैं; उनका रणनीतिक रूप से उपयोग करें
- सेशन बंद करें: काम पूरा होने पर हमेशा ब्राउज़र Session बंद करें
- त्रुटियों को संभालें: ब्राउज़र ऑटोमेशन विफल हो सकता है; टाइमआउट को शालीनता से संभालें
- टूल फ़िल्टर करें: जटिलता कम करने के लिए Agent को केवल वही Tool दें जिनकी उन्हें आवश्यकता है
पिछला: ← बिल्ट-इन टूल्स | अगला: यूआई टूल्स →