github-actions[bot]
Auto-sync from demo at Thu Aug 28 10:06:44 UTC 2025
ba8b592
raw
history blame
3.09 kB
"""
To use Google Web Search API,
follow the instructions [here](https://developers.google.com/custom-search/v1/overview)
to get your Google search api key.
To use Bing Web Search API,
follow the instructions [here](https://www.microsoft.com/en-us/bing/apis/bing-web-search-api)
and obtain your Bing subscription key.
"""
import os
from graphgen.utils import logger
async def search_all(
search_types: dict, search_entities: set[str]
) -> dict[str, dict[str, str]]:
"""
:param search_types
:param search_entities: list of entities to search
:return: nodes with search results
"""
results = {}
for search_type in search_types:
if search_type == "wikipedia":
from graphgen.models import WikiSearch
from graphgen.operators.search.kg.search_wikipedia import search_wikipedia
wiki_search_client = WikiSearch()
wiki_results = await search_wikipedia(wiki_search_client, search_entities)
for entity_name, description in wiki_results.items():
if description:
results[entity_name] = {"wikipedia": description}
elif search_type == "google":
from graphgen.models import GoogleSearch
from graphgen.operators.search.web.search_google import search_google
google_search_client = GoogleSearch(
subscription_key=os.environ["GOOGLE_SEARCH_API_KEY"],
cx=os.environ["GOOGLE_SEARCH_CX"],
)
google_results = await search_google(google_search_client, search_entities)
for entity_name, description in google_results.items():
if description:
results[entity_name] = results.get(entity_name, {})
results[entity_name]["google"] = description
elif search_type == "bing":
from graphgen.models import BingSearch
from graphgen.operators.search.web.search_bing import search_bing
bing_search_client = BingSearch(
subscription_key=os.environ["BING_SEARCH_API_KEY"]
)
bing_results = await search_bing(bing_search_client, search_entities)
for entity_name, description in bing_results.items():
if description:
results[entity_name] = results.get(entity_name, {})
results[entity_name]["bing"] = description
elif search_type == "uniprot":
# from graphgen.models import UniProtSearch
# from graphgen.operators.search.db.search_uniprot import search_uniprot
#
# uniprot_search_client = UniProtSearch()
#
# uniprot_results = await search_uniprot(
# uniprot_search_client, search_entities
# )
raise NotImplementedError(
"Processing of UniProt search results is not implemented yet."
)
else:
logger.error("Search type %s is not supported yet.", search_type)
continue
return results