MCPcopy Create free account
hub / github.com/modelscope/ms-agent / get_web_search_tool

Function get_web_search_tool

ms_agent/tools/search_engine.py:120–159  ·  view source on GitHub ↗

Get the web search tool based on the configuration. Returns: SearchEngine: An instance of the SearchEngine class configured with the API key.

(config_file: str)

Source from the content-addressed store, hash-verified

118
119
120def get_web_search_tool(config_file: str):
121 """
122 Get the web search tool based on the configuration.
123
124 Returns:
125 SearchEngine: An instance of the SearchEngine class configured with the API key.
126 """
127 search_config = get_search_config(config_file=config_file)
128 local_env = get_search_env_overrides()
129
130 # Engine override precedence:
131 # 1) Thread-local override (per-request, e.g. FinResearch UI)
132 # 2) Global environment variable (shared default)
133 engine_override = ((local_env.get(SEARCH_ENGINE_OVERRIDE_ENV, '') or '')
134 or (os.getenv(SEARCH_ENGINE_OVERRIDE_ENV, '')
135 or '')).strip().lower()
136 if engine_override and engine_override in (SearchEngineType.EXA.value,
137 SearchEngineType.SERPAPI.value,
138 SearchEngineType.ARXIV.value):
139 search_config['engine'] = engine_override
140
141 engine_name = (search_config.get('engine', '') or '').lower()
142
143 # Per-request API key overrides (thread-local) take precedence
144 override_exa_key = local_env.get('EXA_API_KEY')
145 override_serp_key = local_env.get('SERPAPI_API_KEY')
146
147 if engine_name == SearchEngineType.EXA.value:
148 return ExaSearch(
149 api_key=override_exa_key or search_config.get(
150 'exa_api_key', os.getenv('EXA_API_KEY', None)))
151 elif engine_name == SearchEngineType.SERPAPI.value:
152 return SerpApiSearch(
153 api_key=override_serp_key or search_config.get(
154 'serpapi_api_key', os.getenv('SERPAPI_API_KEY', None)),
155 provider=search_config.get('provider', 'google').lower())
156 elif engine_name == SearchEngineType.ARXIV.value:
157 return ArxivSearch()
158 else:
159 return ArxivSearch()

Callers 2

run.pyFile · 0.90
__init__Method · 0.90

Calls 6

ExaSearchClass · 0.90
SerpApiSearchClass · 0.90
ArxivSearchClass · 0.90
get_search_configFunction · 0.85
get_search_env_overridesFunction · 0.85
getMethod · 0.80

Tested by

no test coverage detected