langchain icon indicating copy to clipboard operation
langchain copied to clipboard

feat: New tool to Google Search

Open nickscamara opened this issue 3 years ago • 0 comments

Related to #199

Motivation: SerpAPI is very expensive and scrapping can cause problems.

Solution: Implemented the new Google search API done through the Programmable search engine.

It is a bit longer to set up but worth it as it gives 10,000 search queries per day for free.

Instructions: 1. Install google-api-python-client - If you don't already have a Google account, sign up. - If you have never created a Google APIs Console project, read the Managing Projects page and create a project in the Google API Console. - Install the library using pip install google-api-python-client The current version of the library is 2.70.0 at this time

2. To create an API key:
- Navigate to the APIs & Services→Credentials panel in Cloud Console.
- Select Create credentials, then select API key from the drop-down menu.
- The API key created dialog box displays your newly created key.
- You now have an `API_KEY`

3. Setup Custom Search Engine so you can search the entire web
- Create a custom search engine in this link.
- In Sites to search, add any valid URL (i.e. www.stackoverflow.com).
- That’s all you have to fill up, the rest doesn’t matter.
In the left-side menu, click Edit search engine → {your search engine name}
→ Setup Set Search the entire web to ON. Remove the URL you added from
 the list of Sites to search.
- Under Search engine ID you’ll find the `search-engine-ID`.

4. Enable the Custom Search API
- Navigate to the APIs & Services→Dashboard panel in Cloud Console.
- Click Enable APIs and Services.
- Search for Custom Search API and click on it.
- Click Enable.
URL for it: https://console.cloud.google.com/apis/library/customsearch.googleapis
.com
Adapted from: Instructions adapated from https://stackoverflow.com/questions/37083058/programmatically-searching-google-in-python-using-custom-search
  • [X] Implementation
  • [X] Tests, Inline Docs, Formatting
  • [ ] Add it to load_tools.
  • [ ] Improve external documentation

I think it still needs some general work here. Has been a while since I've coded in Python. I tried my best to follow the steps provided in the resources.

nickscamara avatar Dec 28 '22 23:12 nickscamara