From fcb3abb01d505f634309f9ae3c686bbcaab65107 Mon Sep 17 00:00:00 2001 From: Marco Perini Date: Tue, 14 May 2024 16:26:43 +0200 Subject: [PATCH] feat(omni-search): added omni search graph and updated docs --- docs/assets/omniscrapergraph.png | Bin 0 -> 73949 bytes docs/assets/omnisearchgraph.png | Bin 0 -> 58062 bytes docs/source/scrapers/graph_config.rst | 2 + docs/source/scrapers/graphs.rst | 66 ++++++++++- examples/openai/omni_scraper_openai.py | 5 +- examples/openai/omni_search_graph_openai.py | 45 ++++++++ scrapegraphai/graphs/__init__.py | 1 + scrapegraphai/graphs/omni_scraper_graph.py | 3 +- scrapegraphai/graphs/omni_search_graph.py | 119 ++++++++++++++++++++ 9 files changed, 237 insertions(+), 4 deletions(-) create mode 100644 docs/assets/omniscrapergraph.png create mode 100644 docs/assets/omnisearchgraph.png create mode 100644 examples/openai/omni_search_graph_openai.py create mode 100644 scrapegraphai/graphs/omni_search_graph.py diff --git a/docs/assets/omniscrapergraph.png b/docs/assets/omniscrapergraph.png new file mode 100644 index 0000000000000000000000000000000000000000..e142603996036ebef66033463d5ae934a4efcfb7 GIT binary patch literal 73949 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 literal 0 HcmV?d00001 diff --git a/docs/assets/omnisearchgraph.png b/docs/assets/omnisearchgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..f2ab22d69fcc53e1d0ab095ae3f9a3830e702040 GIT binary patch literal 58062 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�O%?# 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 literal 0 HcmV?d00001 diff --git a/docs/source/scrapers/graph_config.rst b/docs/source/scrapers/graph_config.rst index dfc2062c..d25673cc 100644 --- a/docs/source/scrapers/graph_config.rst +++ b/docs/source/scrapers/graph_config.rst @@ -10,6 +10,8 @@ Some interesting ones are: - `headless`: If set to `False`, the web browser will be opened on the URL requested and close right after the HTML is fetched. - `max_results`: The maximum number of results to be fetched from the search engine. Useful in `SearchGraph`. - `output_path`: The path where the output files will be saved. Useful in `SpeechGraph`. +- `loader_kwargs`: A dictionary with additional parameters to be passed to the `Loader` class, such as `proxy`. +- `max_images`: The maximum number of images to be analyzed. Useful in `OmniScraperGraph` and `OmniSearchGraph`. Proxy Rotation ^^^^^^^^^^^^^^ diff --git a/docs/source/scrapers/graphs.rst b/docs/source/scrapers/graphs.rst index cbcf1859..317de982 100644 --- a/docs/source/scrapers/graphs.rst +++ b/docs/source/scrapers/graphs.rst @@ -3,16 +3,80 @@ Graphs Graphs are scraping pipelines aimed at solving specific tasks. They are composed by nodes which can be configured individually to address different aspects of the task (fetching data, extracting information, etc.). -There are currently three types of graphs available in the library: +There are three types of graphs available in the library: - **SmartScraperGraph**: one-page scraper that requires a user-defined prompt and a URL (or local file) to extract information from using LLM. - **SearchGraph**: multi-page scraper that only requires a user-defined prompt to extract information from a search engine using LLM. It is built on top of SmartScraperGraph. - **SpeechGraph**: text-to-speech pipeline that generates an answer as well as a requested audio file. It is built on top of SmartScraperGraph and requires a user-defined prompt and a URL (or local file). +With the introduction of `GPT-4o`, two new powerful graphs have been created: + +- **OmniScraperGraph**: similar to `SmartScraperGraph`, but with the ability to scrape images and describe them. +- **OmniSearchGraph**: similar to `SearchGraph`, but with the ability to scrape images and describe them. + .. note:: They all use a graph configuration to set up LLM models and other parameters. To find out more about the configurations, check the :ref:`LLM` and :ref:`Configuration` sections. +OmniScraperGraph +^^^^^^^^^^^^^^^^ + +.. image:: ../../assets/omniscrapergraph.png + :align: center + :width: 90% + :alt: OmniScraperGraph +| + +First we define the graph configuration, which includes the LLM model and other parameters. Then we create an instance of the OmniScraperGraph class, passing the prompt, source, and configuration as arguments. Finally, we run the graph and print the result. +It will fetch the data from the source and extract the information based on the prompt in JSON format. + +.. code-block:: python + + from scrapegraphai.graphs import OmniScraperGraph + + graph_config = { + "llm": {...}, + } + + omni_scraper_graph = OmniScraperGraph( + prompt="List me all the projects with their titles and image links and descriptions.", + source="https://perinim.github.io/projects", + config=graph_config + ) + + result = omni_scraper_graph.run() + print(result) + +OmniSearchGraph +^^^^^^^^^^^^^^^ + +.. image:: ../../assets/omnisearchgraph.png + :align: center + :width: 80% + :alt: OmniSearchGraph +| + +Similar to OmniScraperGraph, we define the graph configuration, create multiple of the OmniSearchGraph class, and run the graph. +It will create a search query, fetch the first n results from the search engine, run n OmniScraperGraph instances, and return the results in JSON format. + +.. code-block:: python + + from scrapegraphai.graphs import OmniSearchGraph + + graph_config = { + "llm": {...}, + } + + # Create the OmniSearchGraph instance + omni_search_graph = OmniSearchGraph( + prompt="List me all Chioggia's famous dishes and describe their pictures.", + config=graph_config + ) + + # Run the graph + result = omni_search_graph.run() + print(result) + SmartScraperGraph ^^^^^^^^^^^^^^^^^ diff --git a/examples/openai/omni_scraper_openai.py b/examples/openai/omni_scraper_openai.py index f5789aae..1d1d86ba 100644 --- a/examples/openai/omni_scraper_openai.py +++ b/examples/openai/omni_scraper_openai.py @@ -5,7 +5,7 @@ Basic example of scraping pipeline using OmniScraper import os, json from dotenv import load_dotenv from scrapegraphai.graphs import OmniScraperGraph -from scrapegraphai.utils import prettify_exec_info, convert_to_csv +from scrapegraphai.utils import prettify_exec_info load_dotenv() @@ -22,7 +22,8 @@ graph_config = { "model": "gpt-4o", }, "verbose": True, - "headless": False, + "headless": True, + "max_images": 5 } # ************************************************ diff --git a/examples/openai/omni_search_graph_openai.py b/examples/openai/omni_search_graph_openai.py new file mode 100644 index 00000000..66a7cfcc --- /dev/null +++ b/examples/openai/omni_search_graph_openai.py @@ -0,0 +1,45 @@ +""" +Example of OmniSearchGraph +""" + +import os, json +from dotenv import load_dotenv +from scrapegraphai.graphs import OmniSearchGraph +from scrapegraphai.utils import prettify_exec_info +load_dotenv() + +# ************************************************ +# Define the configuration for the graph +# ************************************************ + +openai_key = os.getenv("OPENAI_APIKEY") + +graph_config = { + "llm": { + "api_key": openai_key, + "model": "gpt-4o", + }, + "max_results": 2, + "max_images": 5, + "verbose": True, +} + +# ************************************************ +# Create the OmniSearchGraph instance and run it +# ************************************************ + +omni_search_graph = OmniSearchGraph( + prompt="List me all Chioggia's famous dishes and describe their pictures.", + config=graph_config +) + +result = omni_search_graph.run() +print(json.dumps(result, indent=2)) + +# ************************************************ +# Get graph execution info +# ************************************************ + +graph_exec_info = omni_search_graph.get_execution_info() +print(prettify_exec_info(graph_exec_info)) + diff --git a/scrapegraphai/graphs/__init__.py b/scrapegraphai/graphs/__init__.py index 1edc4508..15f4a4ec 100644 --- a/scrapegraphai/graphs/__init__.py +++ b/scrapegraphai/graphs/__init__.py @@ -14,3 +14,4 @@ from .json_scraper_graph import JSONScraperGraph from .csv_scraper_graph import CSVScraperGraph from .pdf_scraper_graph import PDFScraperGraph from .omni_scraper_graph import OmniScraperGraph +from .omni_search_graph import OmniSearchGraph diff --git a/scrapegraphai/graphs/omni_scraper_graph.py b/scrapegraphai/graphs/omni_scraper_graph.py index 3dedfa33..92aa6cce 100644 --- a/scrapegraphai/graphs/omni_scraper_graph.py +++ b/scrapegraphai/graphs/omni_scraper_graph.py @@ -29,6 +29,7 @@ class OmniScraperGraph(AbstractGraph): configured for generating embeddings. verbose (bool): A flag indicating whether to show print statements during execution. headless (bool): A flag indicating whether to run the graph in headless mode. + max_images (int): The maximum number of images to process. Args: prompt (str): The prompt for the graph. @@ -48,7 +49,7 @@ class OmniScraperGraph(AbstractGraph): def __init__(self, prompt: str, source: str, config: dict): self.max_images = 5 if config is None else config.get("max_images", 5) - + super().__init__(prompt, config, source) self.input_key = "url" if source.startswith("http") else "local_dir" diff --git a/scrapegraphai/graphs/omni_search_graph.py b/scrapegraphai/graphs/omni_search_graph.py new file mode 100644 index 00000000..8dd5aba1 --- /dev/null +++ b/scrapegraphai/graphs/omni_search_graph.py @@ -0,0 +1,119 @@ +""" +OmniSearchGraph Module +""" + +from copy import deepcopy + +from .base_graph import BaseGraph +from ..nodes import ( + SearchInternetNode, + GraphIteratorNode, + MergeAnswersNode +) +from .abstract_graph import AbstractGraph +from .omni_scraper_graph import OmniScraperGraph + + +class OmniSearchGraph(AbstractGraph): + """ + OmniSearchGraph is a scraping pipeline that searches the internet for answers to a given prompt. + It only requires a user prompt to search the internet and generate an answer. + + Attributes: + prompt (str): The user prompt to search the internet. + llm_model (dict): The configuration for the language model. + embedder_model (dict): The configuration for the embedder model. + headless (bool): A flag to run the browser in headless mode. + verbose (bool): A flag to display the execution information. + model_token (int): The token limit for the language model. + max_results (int): The maximum number of results to return. + + Args: + prompt (str): The user prompt to search the internet. + config (dict): Configuration parameters for the graph. + + Example: + >>> omni_search_graph = OmniSearchGraph( + ... "What is Chioggia famous for?", + ... {"llm": {"model": "gpt-4o"}} + ... ) + >>> result = search_graph.run() + """ + + def __init__(self, prompt: str, config: dict): + + self.max_results = config.get("max_results", 3) + self.copy_config = deepcopy(config) + + super().__init__(prompt, config) + + def _create_graph(self) -> BaseGraph: + """ + Creates the graph of nodes representing the workflow for web scraping and searching. + + Returns: + BaseGraph: A graph instance representing the web scraping and searching workflow. + """ + + # ************************************************ + # Create a OmniScraperGraph instance + # ************************************************ + + omni_scraper_instance = OmniScraperGraph( + prompt="", + source="", + config=self.copy_config + ) + + # ************************************************ + # Define the graph nodes + # ************************************************ + + search_internet_node = SearchInternetNode( + input="user_prompt", + output=["urls"], + node_config={ + "llm_model": self.llm_model, + "max_results": self.max_results + } + ) + graph_iterator_node = GraphIteratorNode( + input="user_prompt & urls", + output=["results"], + node_config={ + "graph_instance": omni_scraper_instance, + } + ) + + merge_answers_node = MergeAnswersNode( + input="user_prompt & results", + output=["answer"], + node_config={ + "llm_model": self.llm_model, + } + ) + + return BaseGraph( + nodes=[ + search_internet_node, + graph_iterator_node, + merge_answers_node + ], + edges=[ + (search_internet_node, graph_iterator_node), + (graph_iterator_node, merge_answers_node) + ], + entry_point=search_internet_node + ) + + def run(self) -> str: + """ + Executes the web scraping and searching process. + + Returns: + str: The answer to the prompt. + """ + inputs = {"user_prompt": self.prompt} + self.final_state, self.execution_info = self.graph.execute(inputs) + + return self.final_state.get("answer", "No answer found.")