Skip to content

Commit 13c627d

Browse files
committed
feat: google cdp in request
1 parent 5303401 commit 13c627d

File tree

2 files changed

+43
-21
lines changed

2 files changed

+43
-21
lines changed

src/utils/deep_research.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ async def deep_research(task, llm, agent_state=None, **kwargs):
4444

4545
use_own_browser = kwargs.get("use_own_browser", False)
4646
extra_chromium_args = []
47-
cdp_url = None
47+
cdp_url = kwargs.get("chrome_cdp", None)
4848
if use_own_browser:
49-
cdp_url = os.getenv("CHROME_CDP", None)
49+
cdp_url = os.getenv("CHROME_CDP", kwargs.get("chrome_cdp", None))
5050
# TODO: if use own browser, max query num must be 1 per iter, how to solve it?
5151
max_query_num = 1
5252
chrome_path = os.getenv("CHROME_PATH", None)

webui.py

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,8 @@ async def run_browser_agent(
143143
max_steps,
144144
use_vision,
145145
max_actions_per_step,
146-
tool_calling_method
146+
tool_calling_method,
147+
chrome_cdp
147148
):
148149
global _global_agent_state
149150
_global_agent_state.clear_stop() # Clear any previous stop requests
@@ -192,7 +193,8 @@ async def run_browser_agent(
192193
max_steps=max_steps,
193194
use_vision=use_vision,
194195
max_actions_per_step=max_actions_per_step,
195-
tool_calling_method=tool_calling_method
196+
tool_calling_method=tool_calling_method,
197+
chrome_cdp=chrome_cdp
196198
)
197199
elif agent_type == "custom":
198200
final_result, errors, model_actions, model_thoughts, trace_file, history_file = await run_custom_agent(
@@ -211,7 +213,8 @@ async def run_browser_agent(
211213
max_steps=max_steps,
212214
use_vision=use_vision,
213215
max_actions_per_step=max_actions_per_step,
214-
tool_calling_method=tool_calling_method
216+
tool_calling_method=tool_calling_method,
217+
chrome_cdp=chrome_cdp
215218
)
216219
else:
217220
raise ValueError(f"Invalid agent type: {agent_type}")
@@ -273,7 +276,8 @@ async def run_org_agent(
273276
max_steps,
274277
use_vision,
275278
max_actions_per_step,
276-
tool_calling_method
279+
tool_calling_method,
280+
chrome_cdp
277281
):
278282
try:
279283
global _global_browser, _global_browser_context, _global_agent_state, _global_agent
@@ -282,9 +286,10 @@ async def run_org_agent(
282286
_global_agent_state.clear_stop()
283287

284288
extra_chromium_args = [f"--window-size={window_w},{window_h}"]
285-
cdp_url = None
289+
cdp_url = chrome_cdp
290+
286291
if use_own_browser:
287-
cdp_url = os.getenv("CHROME_CDP", None)
292+
cdp_url = os.getenv("CHROME_CDP", chrome_cdp)
288293
chrome_path = os.getenv("CHROME_PATH", None)
289294
if chrome_path == "":
290295
chrome_path = None
@@ -295,6 +300,7 @@ async def run_org_agent(
295300
chrome_path = None
296301

297302
if _global_browser is None:
303+
298304
_global_browser = Browser(
299305
config=BrowserConfig(
300306
headless=headless,
@@ -310,6 +316,7 @@ async def run_org_agent(
310316
config=BrowserContextConfig(
311317
trace_path=save_trace_path if save_trace_path else None,
312318
save_recording_path=save_recording_path if save_recording_path else None,
319+
cdp_url=cdp_url,
313320
no_viewport=False,
314321
browser_window_size=BrowserContextWindowSize(
315322
width=window_w, height=window_h
@@ -373,7 +380,8 @@ async def run_custom_agent(
373380
max_steps,
374381
use_vision,
375382
max_actions_per_step,
376-
tool_calling_method
383+
tool_calling_method,
384+
chrome_cdp
377385
):
378386
try:
379387
global _global_browser, _global_browser_context, _global_agent_state, _global_agent
@@ -382,9 +390,9 @@ async def run_custom_agent(
382390
_global_agent_state.clear_stop()
383391

384392
extra_chromium_args = [f"--window-size={window_w},{window_h}"]
385-
cdp_url = None
393+
cdp_url = chrome_cdp
386394
if use_own_browser:
387-
cdp_url = os.getenv("CHROME_CDP", None)
395+
cdp_url = os.getenv("CHROME_CDP", chrome_cdp)
388396

389397
chrome_path = os.getenv("CHROME_PATH", None)
390398
if chrome_path == "":
@@ -398,7 +406,8 @@ async def run_custom_agent(
398406
controller = CustomController()
399407

400408
# Initialize global browser if needed
401-
if _global_browser is None:
409+
#if chrome_cdp not empty string nor None
410+
if ((_global_browser is None) or (cdp_url and cdp_url != "" and cdp_url != null)) :
402411
_global_browser = CustomBrowser(
403412
config=BrowserConfig(
404413
headless=headless,
@@ -409,7 +418,7 @@ async def run_custom_agent(
409418
)
410419
)
411420

412-
if _global_browser_context is None:
421+
if (_global_browser_context is None or (chrome_cdp and cdp_url != "" and cdp_url != null)):
413422
_global_browser_context = await _global_browser.new_context(
414423
config=BrowserContextConfig(
415424
trace_path=save_trace_path if save_trace_path else None,
@@ -420,7 +429,8 @@ async def run_custom_agent(
420429
),
421430
)
422431
)
423-
432+
433+
424434
# Create and run agent
425435
if _global_agent is None:
426436
_global_agent = CustomAgent(
@@ -489,7 +499,8 @@ async def run_with_stream(
489499
max_steps,
490500
use_vision,
491501
max_actions_per_step,
492-
tool_calling_method
502+
tool_calling_method,
503+
chrome_cdp
493504
):
494505
global _global_agent_state
495506
stream_vw = 80
@@ -518,7 +529,8 @@ async def run_with_stream(
518529
max_steps=max_steps,
519530
use_vision=use_vision,
520531
max_actions_per_step=max_actions_per_step,
521-
tool_calling_method=tool_calling_method
532+
tool_calling_method=tool_calling_method,
533+
chrome_cdp=chrome_cdp
522534
)
523535
# Add HTML content at the start of the result array
524536
html_content = f"<h1 style='width:{stream_vw}vw; height:{stream_vh}vh'>Using browser...</h1>"
@@ -551,7 +563,8 @@ async def run_with_stream(
551563
max_steps=max_steps,
552564
use_vision=use_vision,
553565
max_actions_per_step=max_actions_per_step,
554-
tool_calling_method=tool_calling_method
566+
tool_calling_method=tool_calling_method,
567+
chrome_cdp=chrome_cdp
555568
)
556569
)
557570

@@ -665,7 +678,7 @@ async def close_global_browser():
665678
await _global_browser.close()
666679
_global_browser = None
667680

668-
async def run_deep_search(research_task, max_search_iteration_input, max_query_per_iter_input, llm_provider, llm_model_name, llm_num_ctx, llm_temperature, llm_base_url, llm_api_key, use_vision, use_own_browser, headless):
681+
async def run_deep_search(research_task, max_search_iteration_input, max_query_per_iter_input, llm_provider, llm_model_name, llm_num_ctx, llm_temperature, llm_base_url, llm_api_key, use_vision, use_own_browser, headless, google_cdp):
669682
from src.utils.deep_research import deep_research
670683
global _global_agent_state
671684

@@ -685,7 +698,8 @@ async def run_deep_search(research_task, max_search_iteration_input, max_query_p
685698
max_query_num=max_query_per_iter_input,
686699
use_vision=use_vision,
687700
headless=headless,
688-
use_own_browser=use_own_browser
701+
use_own_browser=use_own_browser,
702+
chrome_cdp=chrome_cdp
689703
)
690704

691705
return markdown_content, file_path, gr.update(value="Stop", interactive=True), gr.update(interactive=True)
@@ -870,6 +884,14 @@ def update_llm_num_ctx_visibility(llm_provider):
870884
interactive=True, # Allow editing only if recording is enabled
871885
)
872886

887+
chrome_cdp = gr.Textbox(
888+
label="CDP URL",
889+
placeholder="http://localhost:9222",
890+
value="",
891+
info="CDP for google remote debugging",
892+
interactive=True, # Allow editing only if recording is enabled
893+
)
894+
873895
save_recording_path = gr.Textbox(
874896
label="Recording Path",
875897
placeholder="e.g. ./tmp/record_videos",
@@ -974,7 +996,7 @@ def update_llm_num_ctx_visibility(llm_provider):
974996
agent_type, llm_provider, llm_model_name, llm_num_ctx, llm_temperature, llm_base_url, llm_api_key,
975997
use_own_browser, keep_browser_open, headless, disable_security, window_w, window_h,
976998
save_recording_path, save_agent_history_path, save_trace_path, # Include the new path
977-
enable_recording, task, add_infos, max_steps, use_vision, max_actions_per_step, tool_calling_method
999+
enable_recording, task, add_infos, max_steps, use_vision, max_actions_per_step, tool_calling_method, chrome_cdp
9781000
],
9791001
outputs=[
9801002
browser_view, # Browser view
@@ -993,7 +1015,7 @@ def update_llm_num_ctx_visibility(llm_provider):
9931015
# Run Deep Research
9941016
research_button.click(
9951017
fn=run_deep_search,
996-
inputs=[research_task_input, max_search_iteration_input, max_query_per_iter_input, llm_provider, llm_model_name, llm_num_ctx, llm_temperature, llm_base_url, llm_api_key, use_vision, use_own_browser, headless],
1018+
inputs=[research_task_input, max_search_iteration_input, max_query_per_iter_input, llm_provider, llm_model_name, llm_num_ctx, llm_temperature, llm_base_url, llm_api_key, use_vision, use_own_browser, headless, chrome_cdp],
9971019
outputs=[markdown_output_display, markdown_download, stop_research_button, research_button]
9981020
)
9991021
# Bind the stop button click event after errors_output is defined

0 commit comments

Comments
 (0)